一个码农对项目的非分之想

简介: 刚踏入计算机行业那一年,单纯的我觉得“只要技术足够牛,就能使项目成功 。”但随着时间这把剃头刀不断地推高发际线,越发察觉到有一股技术以外的力量起着更大的作用。这也促使我跳出“写代码”边界,思考代码以外

刚踏入计算机行业那一年,单纯的我觉得“只要技术足够牛,就能使项目成功 。”但随着时间这把剃头刀不断地推高发际线,越发察觉到有一股技术以外的力量起着更大的作用。这也促使我跳出“写代码”边界,思考代码以外的发生的事情,下面是一些不成熟的小思考。

这是代码人生系列的第五篇,系列文章目录如下:

  1. 你是否 diss 过别人的代码?—— 怎样的代码才算优秀?
  2. 程序员和领导对项目delay的理解是不是有偏差?
  3. 来自程序员老婆的吐槽
  4. 成功、瑜伽、黄晓明 | 中年程序员对成功的认真思考
  5. 一个码农对项目的非分之想

价值链流动


图中的直线表示项目价值链的正向流动,而曲线表示价值链的反向流动,所有的反向流动都降低了交付速度和质量。

  • “开发到需求”:表示在编码段研发察觉的需求不完备,不合理的地方,向产品反馈,导致需要的微调。
  • “测试到开发”:表示测试阶段发现的代码和需求不符的地方。
  • “测试到需求”:这条反向流动有多种情况,比如测试和开发对需求的理解不一致,谁也说服不了谁,只能一起去找产品。再比如测试阶段发现需求的不合理之处,和产品沟通后,在交付前夕变成新的需求。
如何减少价值链的反向流动是所有项目组成员需要思考,努力的方向。

需求共识

为减少价值链反向流动,除了提高个人业务和沟通能力之外,还有一个值得努力的方向:提高所有人对需求的共识。

需求就像文学作品,1000 个 读者心里有 1000 个哈姆雷特。

虽然这个比喻有点夸张,有也些许吐槽需求文档不够详尽的意味。但这个锅产品一个人背不了。即使产品文档写的像数学定理一样严谨,整个价值链流动的过程中,产品、设计、开发、测试,这四方对需求理解的偏差无法彻底消除。所以沟通是必不可少的。

偏差拖慢了项目推进的速度,降低的项目的质量,偏差越晚发现对项目影响越大,最坏的结果是大家对需求理解的不一致拖到测试阶段才一起暴露出来。

既然偏差无法避免,是不是可以让它早点暴露出来。 在整个价值流动过程中越早发现理解偏差,越早治疗,损失越小。

产品需求会、测试用例会、服务端接口会都为早崩溃做出了很大贡献。(若迭代周期只有一周,就没时间开这么多会,欢迎短周期迭代的小伙伴留言,分享下你们如何处理理解偏差。)

产品照本宣科地读文档,研发漫不经心地恭听,冗长的产品会听着听着便掏出了手机是常见的现象。最要命地是听产品读了一遍文档后并未加深我对需求的理解,动手开发之前还得精读一遍。

是不是可以先让研发精读产品文档?深入思考需求甚至构思一下详细设计,以便发现没有考虑到的边界情况、不能自洽的产品逻辑、性价比低的产品设计。

可不可以转换下角色?把产品需求会变成 “需求答疑会” ,让研发主导,提出对需求的疑问和建议。

这样会不会调动起研发的主动性?在过需求的时候就把更多的“理解偏差”都暴露出来?

模块归属

在需求答疑会之前,得先做好开发分工,这引出了另一个问题:

“短期的模块分工要不要变成长期的模块归属?”即业务模块是有产权的,让一个模块长期的归属于一个研发,这个模块的需求,他主导开发,这个模块的 bug,他主导修复,所有对该模块的修改都需要经过他的 Review。

在不熟悉的模块中改动代码是一件事倍功半的事情。就算该模块代码逻辑清晰,低耦合,易于扩展,也可能因为不熟悉具体的业务逻辑,改出 bug。更何况大部分的代码是,逻辑混杂,高耦合,牵一发则动全身。

程序员多少都一些工匠情节,对自己亲手打造的代码都“细心呵护”,就好像自己雕琢的工艺品,这种情愫会推动他不断地自驱动地优化代码。但若是别人的工艺品,这种动力则会大打折扣。

只有分工才能专业化,只有专业化才能提高质量。

模块归属也让“集中式的代码 Review”变成“分布式的代码 Review”,原来所有的代码都是让团队的 Leader review,但 Leader 怎么可能了解所有业务模块的细节?所以只能泛泛地 Review。何不让最了解这块代码的人 Review ?

知识共享

模块归属也会增加风险,即会显著地降低“巴士因子”。巴士因子描述的是项目知识的集中程度,即一辆巴士撞死几个研发,整个项目就可以宣告 GG。

某个模块的知识只掌握在某个人手里,就好像把所有的筹码放在一个篮子里。他生病了、离职了,该模块就会瘫痪。

如果团队的大部分知识只集中于少数人手里,不利于提高整个团队技术水平和抗风险能力。

知识是多种多样的,业务知识的共享可以降低团队开发和维护成本,通用知识的共享可以提高团队的编码质量。

每个研发擅长的领域不同,知识的边界也不尽相同,如果知识能够在团队中无障碍的流动,如果大家的知识可以做并集,不仅可以提高整个团队的技术水平,还可以形成很好的技术氛围和粘性。

“集体Code Review” 可能是一种可以尝试的知识共享方式。它鼓励双向沟通:将一段代码公之于众,接收大家的 Review。条条大路通罗马,你实现的那条可能不是最短路径,或扩展性不佳,或性能不好。这正是集体智慧发光发热的地方,对同一段代码的集体审视可能会迸发出很多思想的碰撞,真理总是越辩越明,集体智慧的光芒可以让在场的所有人从中受益。

目录
相关文章
|
Go
把孩子打造成为码农
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。   今天看到一个问卷调查,是问第一门学习的计算机语言是什么。本身想写QBasic,忽然想起曾经学习机时代的LOGO语言,以及看了很久的小乌龟。
1054 0
|
Android开发
【码农本色】用数据解读我的2014
转眼2014就过去了,不禁感叹又老了一岁的同时,却发现已经快研究生毕业了,趁着这个活动简单总结下2014~~~~~~~~~~~ 1.实习篇      2014年一月份拿到了人生第一个实习offer,在sony这样的大公司做android开发。主要研究系统截屏功能,感觉在这方面稍微有了一点成就,无论是源码层,还是sdk端的大致原理都有了一定的了解。当时写了几篇博客,算是当时android系统截
985 0
码农网站!!!
http://www.github.com 找开源项目,写blog http://www.stackoverflow.com 碰到问题怎么办? http://www.codeproject.com 需要设计某个复杂的gui,又不想自己写怎么办? http://www.
941 0
码农网站
http://www.github.com 找开源项目,写blog http://www.stackoverflow.com 碰到问题怎么办? http://www.codeproject.com 需要设计某个复杂的gui,又不想自己写怎么办? http://www.
752 0
|
算法 关系型数据库 程序员
|
程序员
从码农到工程师:只要做到这6点
       许多程序员自称码农,因为每天事情总也做不完,而这些工作也没有给自己带来职业上的提升,总在原地打转,自己的工作似乎随时可被新人替换,可有可无。
1282 0
|
机器学习/深度学习 前端开发 JavaScript
当码农遇见公益
9月25日下午在云栖大会参加阿里巴巴技术公益专场记录与感想。
403 0
|
Web App开发 移动开发 JavaScript
2018年终盘点!百篇前端文章干货合集!
前端开发是创建Web页面或app等前端界面呈现给用户的过程。前端开发通过HTML,CSS及JavaScript以及衍生出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互 。为了让营造一个针对前端语言的技术交流平台,我们特意新建了一个前端技术交流群。
12504 0
|
消息中间件 缓存 边缘计算
总结牛客前端工程师精选面经合集(四)
总结牛客前端工程师精选面经合集(四)

热门文章

最新文章