注: 以下不提过多技术层面的技巧,更多的是工作方式。

积极沟通,理解产品需求;主动对接,减少不必要的等待;学会搜索,培养一套自己的开发流程。

如果项目中大多只是做业务开发,涉及到的技术难点不多,只是业务逻辑比较复杂的话,那整个开发流程真正花在编码的时间其实是不多的,大部分时间花在以下几方面:

  • 了解清楚业务需求,开发中和 PM 沟通一些需求的细节问题;
  • 等待 UI 设计师完成设计图或切图;
  • 等待后端开发写好接口文档或进行接口的联调;
  • 开发过程中的需求变更或增加新需求;

那如何减少这些开发流程中花费的时间,从而提高开发效率呢?我觉得可以从以下几方面去考虑:

1. 积极沟通,理解产品需求

一般开发初期,开发人员会根据 PM 提供的原型图进行开发,但开发过程中可能会遇到一些业务逻辑,在原型上并没有标清楚,这时候,我一般习惯提前问清楚 PM,而不是等到测试提出问题后才改,虽然这样,开发前期会花不少时间在沟通上,但可以减少后期测试时的问题。

2. 主动对接,减少不必要的等待

待了几家公司,也接触了不少客户端的开发者,他们往往喜欢等弄好设计图才开始开发,或等后端定义好接口才开发。我觉得其实可以提前根据原型图初步弄好布局或大致的控件元素,或是自己先搭建好 UI 框架,等设计图和接口好了,再调整下边距、字号、颜色等,建model 层,最后后端发布接口到开发环境,就可以测试联调接口了。

3. 如何应对开发过程的需求变动或增加新需求?

需求变动时,要考虑变动的合理性,让 PM 给出合理的理由,而不是一味认同 PM 的需求,PM 说什么就做什么。自己认为不合理的需求,说出自己的理由,和 PM 据理力争(同时也要站在产品需求和用户体验的角度考虑问题)。如果 PM 固执己见,又不能把我说服,那也只能询问自己的上级了,确定要做的话,也就只能做了。

另外,开发中无论是需求变动,还是接到新需求,首先如果不是紧急的需求,是大需求,耗时比较长的话,最好和 PM 申请要增加开发时间,避免延期,同时要做一下几点判断:

  • 需求的合理性;(理解需求的底层逻辑,可以更好地了解产品)
  • 需求的技术可行性;(在有限的项目周期内,技术是否可以实现)
  • 功能的版本兼容性处理;(是否适配旧版本,是否需要做接口版本处理)

4. 学会搜索,培养自己的一套开发流程

首先基础技术要扎实,这是提高效率的最好办法,而不是所有大小问题都去搜索,这样挺耗时间的。这里所说的“学会搜索”,一方面是搜索引擎,要懂得科学上网,使用 Google 搜索;另外是学会用英文搜索!这是我工作将近三年来慢慢开始培养的习惯,学会用英文搜索,可以更快速找到准确的答案。

在几家创业公司上班都没有严格的开发流程,有时候只有一个上线的时间节点,连测试的时间节点都是开发后期才确定,这种情况下,我觉得需要有自己的一套开发流程,各个环节都做好,开发效率就会提高了。目前我基本按照以下流程进行开发:

  • 过需求:根据被分配的任务,过一遍原型图的需求,大致了解需要用到哪些技术点;
  • UI 布局:根据原型图弄好 UI 布局,等到设计弄好设计图,再微调;
  • 搭页面框架:根据布局写好视图层逻辑,如 Activity,Fragment,Adapter 和相关控件;
  • Model 层:根据后端写好的接口文档,初步弄好 Model 层的逻辑;
  • 接口联调:和后端开发进行接口联调;
  • 自测:根据原型图上备注复查一遍业务逻辑和一些文案以及 UI 细调,同时测试下一些交互等;(我遇到不少人,其实自测不是很严格,导致提测时会出现一堆 bug)
  • 提测:提交给测试人员测试;(有些是开发层的逻辑,测试可能不清楚的,要提前告知)
  • ……

以上流程,虽然也不算很完善,比如没有单元测试(创业公司很少有单元测试这个环节),也不清楚大公司的开发流程是怎样的。不过在实践中,这个流程的确给我提高了效率和保证了质量。比如,有一次开发中,几个人的工作量本来是一样的,但前期我被安排去做其他任务花了一周,后来还是按时同时完成了开发,而且测试阶段禅道(bug管理系统)的 bug 数量比其他人少25%左右。一套规范的流程,对开发效率来说还是有很大帮助的。

5. 开发中沟通的小技巧

  • 群聊最好能直接 at 相关人;
    有时候群消息太多,根本没留意看,所以群聊的时候最好 at 相关人;
  • 私聊高效于群聊;
    不是所有人都时刻看群消息,或者有时候看了,也会忘记回复;所以有针对性的问题,直接找相关人私聊会比较高效;
  • 重要事情直接找负责人当面沟通;
    比如一些问题比较复杂,用文字说,效率会比较低,最好直接当面聊;或者是一些比较紧急的问题,如出现线上 bug,最好当面沟通;

根据事情的紧急情况选择不同的沟通方式,而不是所有事情都是群聊或者当面沟通,这样不仅耗时,而且自己的时间容易被“中断”。

最后,以上只是我工作中关于开发效率的一些感悟,但是不同公司的开发流程可能不一样,而且不同人的工作方式不一样,希望多少能给你带来一些启发吧。

END