您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    顺序员如何高效地停止开发任务?Facebook的10x效率,了解一下
    时间:2020-03-11 12:29 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    顺序员如何高效地停止开发任务?

    顺序员如何高效地停止开发任务?Facebook的10x效率,了解一下

    最近比较盛行的一个说法是 10x 顺序员,也就是 10 倍顺序员,意思是一个好的顺序员,

    任务效率可以到达普通顺序员的 10 倍。要做到这一点并不容易,我们需求在编程技术、任务方式、工具运用等方面片面提高。

    第一条准绳:笼统和分而治之

    拿到一个义务之后,我们要做的首先就是停止模块的定义,也就是笼统,然后对其分而治之

    为方便了解,我再和你分享一个在 Facebook 时,几个前后端开发者同时开发一个功用的案例吧。

    这个功用由一个前端开发者和两个后端开发者完成,整个研发进程至少触及 3 个笼统和分而治之的操作:第一步,前后端模块停止自然的拆分。这时,前后端开发者一定会一块儿仔细讨论,明白前后端代码运转时的流程,后端需求提供的 API,以及交付这些 API 的时间。

    第二步,两个后端开发者对后端任务停止拆分,确定各自的任务义务和边界。

    第三步,每个开发者对本人担任的部分再停止笼统和拆分。

    在这个进程中,一定要明白模块之间的依赖关系,尽快确定接口规格和可调用性。比如,在前后端的拆分中,常常会采用这几个步骤处置 API:

    1. 前后端开发者一同讨论,明白需求的 API。

    2. 后端人员会先完成 API 的 Mock,前往契合格式标准的数据。在这个进程中,后端开发者会尽快收回代码审查的要求给另一个后端和前端开发者,以确保格式正确。

    3. Mock 完成之后尽快推到主仓的 master 上 (也就是 origin/master),并尽快将其部署到外部测试环境,让前端开发者可以运用外部测试环境停止开发和调试。

    4. 这些 API 还不能面对用户,通常会先运用功用开关让它只对公司开发人员可见。这样的话,即使 API 的代码在 origin/master 上部署到了消费环境,也不会对用户产生影响。

    经过这样的操作,前后端的义务拆分就顺利完成了。

    提高笼统和分而治之效率的一个技巧是,在设计代码架构时留意寻觅适宜的设计形式

    设计形式指的是,设计进程中可以重复运用的、可以处置特定成绩的设计办法,最经典的莫过于《设计形式:可复用面向对象软件的基础》中罗列的 23 个设计形式,以及针对企业软件架构的《企业运用架构形式》。同时,我们还要留意公司外部详细的常用形式。这些形式都是经实际检验有效的,且传达较广容易了解,都可以作为你停止模块拆分的参照。

    详细完成功用的进程中,也会处处表现分而治之的思想。最主要的一个表现是,每个开发者都会把本人的代码尽量做到原子性。代码的原子性指的是,一个提交包含一个不可联系的特性、修复或许优化。

    在实践任务中,功用往往比较大。假设只用一个提交完成一个功用,那这个提交往往会比较大,所以我们需求把这个功用再拆分为子功用。

    比如,某个后端 API 的完成,我们很能够会把它拆分红数据模型和 API 业务两部分,但假设这样的提交还是太大的话,可以进一步将其拆小,把 API 业务再分为重构和添加新业务两部分。

    总之,我们的目的是让每个提交都做成可以独立完成一些义务,但是又不太大。普通来说,一个提交通常不超过 800 行代码。

    第二条准绳:快速迭代

    第一,不要追求完美,不要过度方案,而是要尽快完成功用,经过不断迭代来完善。优秀的

    架构往往不是设计出来的,而是在完成进程中逐渐开展、完善起来的。

    Facebook 有一条常见的海报标语,叫作“Done is better than perfect”,意思就是完成比完美要重要。要完成快速迭代,我们在设计和完成功用时都要留意复杂化。

    有些开发者过于追求技术,投入了少量时间去设计精巧、复杂的系统。这样做没有成绩,但

    一定要有一个度,切忌杀鸡用牛刀。由于复杂的系统虽然精巧,但往往不容易了解,维护成

    本也比较高,修正起来更是不容易。

    所以,我们在 Facebook 停止开发的时分,尽量运用复杂适用的设计,然后快速停止版本

    迭代。

    第二,在设计的完成中,尽量让本人的代码可以尽快运转起来,从而尽快地验证结果。我们

    常常会先完成一个可以运转起来的脚手架,然后再继续地往外面添加内容。

    在任务中,由于往往是在一个比较大的系统里任务,不能很容易地运转新代码。这时,我们可以编写脚本或许单元测试用例来触发新写的代码。通常状况下,我们更倾向于运用后者,

    由于这些测试用例,在功用开发完成上线之后,还可以继续用于保证代码质量。

    在我看来,在开发进程中,能触发新写的代码协助我开发,是单元测试的一个重要功用。

    第三,为了可以快速停止验证,一个重要实际是设置好本地的代码检验,包括静态扫描、相关单元测试的方便运转,以及 IDE 可以停止的实时反省等。

    第四,代码写好之后,尽快提交到主代码仓并保证不会阻塞其他开发人员。实践上,这是代码提交原子性的另外一个重要特点,即代码提交的原子性,可以保证主代码仓在实际上可以随时基于 master 分支上的任何提交,构建出可以运转的、直接面对用户的产品。在这种方式下,每个开发者在任何时分都可以基于 origin/master 停止开发,从而确保 Facebook 几千人共主干开发时分而治之可以顺利停止。

    (责任编辑:admin)