开发团队的汇海
我之前写过一篇叫《加班与效率》的文章,从观点上说了一些我对“效率”的熟悉,可是那篇文章趋于观点化,对于一些没有履历过这样的情况的同砚来说,可能会以为太抽象了。很早以前就想写一篇更详细一点的,可执行的文章与《加班与效率》这篇文章相辉映,并再把我两年前在沈阳QCon上的谁人“宣扬工程师文化”的《建一支强盛的小团队》(新浪微盘)的看法再增强一下。
可是我遇到了一些头脑方式上的贫苦——我讲的总是从我的履历配景出发,没有从其它人的履历配景来讲。这就似乎,我在酷壳里说了许多工具(好比:专职的QA,Code Review很主要,编程年事,创业的,Rework的……),有好些人以为是不行能甚至太理想,实在我说的那些工具都是实着实在存在的,也是我所履历过的。于是,差别的履历,差别的情况,差别的眼界,造成了——有些人不明白我说的,而我也不能明白他们所说的。
以是,已往的这段时间我一有时机就找一些人交流并视察一些身边的事情,并去试着跟随和明白那些我不能明白的工具。现在以为差不多了,以是,写下了这篇文章。(但越是去明白对方,我就越坚持我的看法,以是这篇文章可能照旧会泛起鸡同鸭讲的情形,无所谓了)
本文不讨论任何营业上的效率问题,只讨论软件开发或是软件工程中的效率问题。虽然产物和营业上的效率问题是基础,可是由于本文不是拉愤恨的,我也不想混在一起谈,以是请原谅我在这里先说开发团队的,以后重新开篇文章专门谈产物和营业的。
我下面会枚举几个很是典型的开发方式——软件开发中的“锁”,接力棒式软件开发,保姆式软件开发,WatchDog软件开发,故障驱动式软件开发。
软件开发中的“锁”若是你搞过并发编程,你一定知道什么是“锁”,锁就是用来同步和互斥。我发现有好些开发部门里的各个开发团队间存在许多锁。好比:
手艺能力上的锁。有一个项目需要在差别的地方做开发,这些模块用到差别的手艺,好比:Java, C/C++, Python,Javascript,可是,这个团队里的每一个开发职员就只懂一门语言,于是,需要配合,需要使命排期,同步互斥锁就许多,于是,一个原来只需要2小我私家干3周的的事情酿成了8小我私家干两个月。卖力模块上的锁。同理,差别的人卖力差别的模块,于是一个项目要动很多多少模块,那么你就需要把这些模块的人找过来,和上面一样。每小我私家都有自己的时间摆设,人越多,锁越多。于是,一个来来只需要2小我私家干2两周的事,酿成了7、8小我私家干一个多月。我上面并非瞎扯,这都是事实。我们可以看到,
时间锁、进度锁。这堆有差别技术或是卖力差别模块的开发职员有锁,有锁你就要等,他们有自己的摆设,以是,要协作起来,你就需要排期,去同步。而到场的人越多,你的锁就越多。你协调他们的时间就更庞大。相同锁、利益锁。而且,最恐怖的事情是,他们之间的相同成本庞大。他们会花大量的时间在讨论,一个功效是实现在你那里,照旧我这边,每小我私家都有自己的利益和算盘。无形中增添了许多推诿、权要和政治上的工具。有时间,我们会以为分工和分模块是发生效率的条件,可是现实情形并不是这样。我们也可以看到,所谓的“分工”被彻彻底底的滥用了。他们把“分工”当成了永远只干一件事的捏词。
【解决方案】一个程序员应该能够掌握多个语言,也能够卖力多个模块甚至差别的职责。若是一个程序员以为多学习一门语言,多掌握一个模块是件很难题的事,那么这个程序员本质上是不及格的。
“接力棒式”软件开发在有种种“事情锁”的软件开发团队里,一样平常都无法制止“接力棒式”的开发。也就是说,底层的C程序员干完了,交给上层的Java程序员,然后再交给更上层的前端程序员,最后再交给运维职员。这就是接力棒式的开发。
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。