如何提升各开发角色效率,既保证产品质量又能快速上线?

前言

网易杭州研究院 · 叶锋

当一个产品或项目变得比较大的时候,开发效率就会提上议程。如果项目管理混乱或者某个环节脱节,往往会让项目进展缓慢,走弯路,甚至失败。

一个大的产品开发往往包含了项目经理,产品经理,架构师,开发工程师,测试,前端等多种角色。如何提升各个角色的效率,让产品在保证质量的基础上,快速上线,很值得研究。本文根据哨兵系统中开发的实际情况,做一些实际经验总结。


1

产品先行,机动提升

在产品立项之前的一个月或者更长,产品的规划就应该开始了,首先需要在目标用户中做充分的调研,形成产品规划的初稿,然后带着初稿与用户继续沟通提炼,形成最终的可行方案。在项目组的内部也需要充分讨论,通过讨论相互理解需求,也可以发现产品中存在的问题和不足,利于下一步工作开展。

即使在项目进行中,如果发现原先方案没有很好地满足用户需求,那么不要犹豫,及时做出调整,甚至可以考虑对项目进行大的重构。因为如果为了掩盖一些设计上的缺陷而做一些特殊适配,往往坑会越埋越大,到时更改的成本会更高。行动的迅速性和机动性,对于项目至关重要。

2

开发高效,多维提升

当项目进入技术的设计开发阶段,合理的规划对于效率的提升十分重要。结合哨兵的开发的实际过程,这里提出一些看法。

1. 开发人员带着自己思路设计

在这个环节,所有的开发人员都需要参与,通过对需求和功能的理解,开发人员可以构思自己的技术方案,然后跟大家一起讨论,最后总结出合理的可执行的方案。每个开发人员都是设计者。

2.  开发、测试、预发环境搭建

项目进入开发阶段,需要搭建和组织高效的开发环境。首先选用业界流行的maven工具管理代码,将代码工程模块化。一般将工程分为common 模块,业务逻辑模块,具体应用模块等等。common模块封装总体依赖,内部通信框架,验证规则,通用数据结构,通用util类等。业务逻辑方面,可以将关系数据或者其他中间件的操作独立模块,每个模块独立于应用,建立有自己的独立的单元测试,提升业务层与应用层的耦合效率。具体应用模块,采用合适的开发插件来提升效率。比如我们应用模块以web应用为主,采用jetty插件,它具有轻量,内置,高效的特点。可以在一个eclipse容器里面启动多个实例,并发调试。工程模块之间建立运行时依赖的关联关系,如果一个模块改动,比如业务层,无需build这个模块,减少调试时间。

在项目开发完成后,合理规划测试环境,上线之前规划预发环境。项目复杂度不一样,环境规划复杂度不一样,但是都值得多投入规划。

3. 代码层次化,可扩充的设计理念

将代码分为多个模块,比如dao层,service层,权限验证层,controller层,视图层等等。同时将一些通用的处理方式集成在统一的基础模块之中,比如我们的api应用,组件异常处理,api监控等功能集成在入口filter组件,这样有利于功能开发人员专注业务逻辑的处理,提升效率。

在系统设计的时候要考虑未来的可扩充性。比如哨兵系统中的设备类型前期主要以服务器为主,后期可能会引入网络设备等多种。那么前期表的设计就可以采用面向对象特性的方式来实现,公有部分放在基础表当中,扩展属性放在各自独立表当中。当增加新的类型时只需要建立新类型独立表就可以了。

4. 尽量用成熟技术框架

在技术方案的选取上,尽量采用业界比较成熟的,并且支持性比较好的方案。这样出现问题的时候,可以在互联网上找到一些解决方案。当然在功能受到限制必须选取一些不常用方案的时候,需要提早进行调研,并且尽早进行性能方面的压力测试,防止在项目真正上线的时候出现问题。比如我们项目中引入aviator作为表达式的求值引擎,在实际使用的过程中,由于缓存配置不合理,在上线的时候才发现,方法区每过一段时间会满,造成full gc。调整参数后,问题解决。

5. 良好的版本管理方式

在产品开发初期,由于还没有上线或者使用人少,功能迭代少,团队采用一个统一的开发分支,这样效率会提升。随着项目正式上线,用户逐渐增加,功能迭代也会慢慢增加,这样采用多个分支并发进行比较合适。在多分支开发的时候需要注意需要一次发布的功能在相同的分支内进行,要发布之前进行分支的合并,冲突解决。良好的分支管理方式会让项目快速迭代,减少错误的发生。

6. 及时有效沟通,及时代码重构

在项目的进行中,由于各个开发人员的风格不统一,导致代码跟规范不一致,同时编码中一些特殊逻辑处理的不够优雅,很想进行重构,但是又怕影响进度。这种情况通常建议及时进行,虽然开始的时候效率下降,但是长远来讲可以大大提升效率,并且可以让后续的开发人员快速理解业务,也不会被误导使用不合理的模式。重构需要团队内部进行及时有效沟通,形成规范,并且如果重构对开发进度造成影响,重构负责人应该考虑加班,这对于长远效率的提升十分重要。

7. 适当功能上的放弃,留下接口利于下一步提升

当项目上线比较紧张的时候,对于技术方案又没有明确定论,或者完美方案需要耗费太多资源的时候,可以暴露统一接口,实现上采用临时方案进行。比如哨兵配置下发,前期采用定时器方式进行,虽然对系统资源消耗多,有延时,但是简单实现方式快,适合初期赶进度,后期等项目缓解后再用新的实时下发方案。

3

管理跟进,多方提升

1. PM

项目管理中,项目经理PM,要定时跟踪项目的进展情况,找出系统瓶颈,协调与其他团队或者项目的关系,争取到必要的资源。PM要协调的目标方有开发、测试、产品经理、运维、部门负责人以及外部资源等,协调方式包括定期发送项目进度报告,定期召开相关方会议,与重点人员点对点沟通,取得他们的支持和配合。开发人员可以将一些协调的事情交给PM来解决,这样就可以专注于开发。

2. 产品经理,架构师

产品经理及时把握上线的执行偏移,上线后做实际测试,有问题马上向开发提出,确保线上产品的最后质量。架构师要及早对方案的可行性进行验证,编写示例代码,形成规范。

3. 测试

测试人员先期就参与方案的评审,尽快了解需求和产品。测试人员不单纯的是功能上的测试,对于技术架构也参与讨论,提出自己的意见,这样更能发挥测试对于全局的总体质量的把控,测试更深入。

效率的提升本质上是人的提升。团队团结一致,相互支持,遵循规范,这样才具有机动性和战斗力。人才是效率之根本。

4

平台集成,自动提升

在产品开发的实际进行中,自动化和平台化的引入,可以将我们的开发效率大大提升,这需要未来平台建设的完善。

1. 发布工具来实现代码分支的自动管理。用户需要分支的时候可以根据平台自动创建分支,在测试的时候可以直接利用分支集成测试,支持多个分支并行的测试。在发布的时候工具自动进行冲突检测,代码合并,tag创建等。这样可以大大降低由于人工误操作导致的效率降低。

2. 配置管理工具。开发,测试,预发,线上环境的配置需要一个集中的管理平台,防止配置变更导致的错误。

3. 代码review 工具的完善。有助于开发人员相互review代码,找出错误,形成规范,比如可以采用开源的Gerrit等。

 · END ·

【推荐阅读】

后端Java工程师如何将编码速度提升10倍?

一场开发与视觉的对话引发的思考

项望烽:移动IM开发那些事儿

网易云信|APP聊天功能1天开发

http://netease.im   果断关注,精彩不断

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值