程序员的绩效与代码行数
一位读者写道:
我是一个软件工程师。对于任何一个从事于这个领域的人,这有一个众所周知而且毫无疑问的事实:最有效率最专业的程序员的产能会比最差的那个高上 1000倍。如果这个看起来不太可能,请记住,如果一个程序员写出了很多bug而需要其他程序员去修改,那他的生产率是负的。而且除非他造成的破坏性已经 产生后果,否则你很难发现问题所在。我过去曾给专业的程序员上课,即使在我的这些学生中,你也可以很容易的发现这种事实。
我没有发现哪个企业,不管在哪 — 即使在硅谷 –也没有一个企业能把对程序员的工资等级差异化到接近一个数量级的程度,更别说三个了。事实上,我们更倾向的做法是辞退或拒绝考虑任何超过35岁的人。给出的理由就是他们要求更多的钱。
在某种程度上讲这是有些道理的。如果你不能区分哪一个更好,你就该要那个便宜的。你实在是太难去评估一个程序员的效能了。
跟其他的人相比,一个好的程序员能用更精简的代码和更少的时间解决一个问题。所以你不能按代码行数和所花的时间来评估。按Bug数也不行 — 对于其他程序员,当看到有人漂亮的解决了一个问题后,都会确信自己也会这样的解决这类问题。不止一次的,当我按时的不带一点差错的做完一个任务后,我就会 被告知:因为那是个任务太简单。而同时,逾期未完的团队因为一周的通宵加班表现出来的敬业和苦干精神而受到嘉奖。完成了工作的优秀程序员也许并不知道他所 解决的问题对于其他的同事来说有多么的困难。
在一个公司里,你赢得了声誉,大家看到了你的工作。但你写的程序是商业机密,他们不可能轻易的让你把它们带走。不论你是好是差,打算雇你的人都看不到你的更详细的作品。他们可能会通过让你在白板上写几行代码的形式来筛选你,但这种事情就像是让钢琴师为观众用嘴哼出曲子。
我觉得印度外包产业所创造的一个辉煌成就就是放弃追求最好的程序员的思想。(我并没有侮辱印度软件工程师的意思 — 他们有很多人都很优秀,但单从数字上讲,我可以确信的说,如果他们能有像美国人那样多的机会,他们一定会从事其它行业。)人们知道,如果你能在印度雇到 20个普通的程序员,你的报价可以压的很低,即使他们花了20倍的努力完成任务,你的成本是一样的,软件的交付也是可预料的。相对于判断你招的那个程序员 究竟是高手还是低手来说,判断这20个程序员要多少时间完成任务还是更容易些。用20个普通的程序员,也许会用掉你两倍的时间。用一个程序员,也许只需要 一个普通团队花的时间的二十分之一,也许会是100倍。
[英文出处]:Paying The Experienced Hand Less, Ctd
[译文来源]:外刊IT评论
李开复:互联网的九个产品精神
1) 关注用户:要以用户痛处为契机;把用户需求放在第一位。
2) 快速迭代:经过开源、云计算、网络商店降低的开发成本,先推出 Minimally Valuable Product,每周更新,专注很少新功能,小团队,快动作,敏捷地开发验证,直到可解决用户痛处,然后才开始推广。
3) 数据导向:用互联网的特性获取用户使用轨迹,做 A-B Test 理解用户需求和选项,从中判断如何设计产品和排序功能。
4) 清晰定位:知道你的产品的核心需求和功能,两句话说清楚。清晰目标用户是谁,不能太广。用定位来挑选功能,避免功能膨胀。
5) 重视细节:产品经理必须是骨灰级玩家,对所有产品了如指掌,关注每个细节,在意每一个缺陷,把产品当作自己的 Baby。
6) 打破陈规:不要被过去的思维束缚,才能开发出有创意的产品,有时候,一个小小的修改就可能是大大有价值的创意。
7) 追求简约:不要太复杂,最简单的解决方案是最好的,要用简约的界面隐藏复杂的内涵。
8) 整合领域:大部分的创新产品既不是山寨也不是突破式,而是结合不同领域的点子,形成新产品。
9) 洞悉未来:看清楚方向可能就是成功的一半,要对产业有清晰的战略判断。
Facebook 对工程师的管理方式
Facebook 的 Yishan Wong 总结了 Facebook 的 Engineering Management 的五条心得:
1. Hiring is number one
2. Let process be implemented by those who practice it
3. Promotion from within
4. Tools are top priority
5. Technical Leaders 。
信息来源请阅读:http://algeri-wong.com/yishan/engineering-management.html
只有Facebook技术团队能做到这样吧?
这五条管理技术团队的经验简单说就是:
1、招聘很紧急,而且要找牛人
2、流程由实践者确立
3、内部晋升,不找空降的管理人员
4、开发工具代替人力低效劳动
5、技术领导,不要外行指挥内行。
国内99%的公司都是反着来的
1、国内大一点的技术公司招聘都是抽风式招聘: 要么说没有 HeadCount(人员编制)了,要么以数量为目标,完成招聘人头即选宣告胜利...
2、很多公司的做法是成立一个具备行政性质的流程制定小组... 骆驼是委员会设计的马
3、这一点不用多说了,越忙越不给你晋升的机会,直接找个空降兵(很可能是关系户哦)管理你整个团队,尽管这个人半年也不能真正了解公司的业务
4、更好的工具,可以有效减少人工的投入。Facebok 内部开发的大量的高效的工具。作者列举了针对客服需求开发的工具取得的回报,以及数据库管理上开发工具取得的回报-一个人管理过上千个节点的DB。
5、技术领导要具备足够的技能,如果迫不得已用外来和尚的话,人要足够牛才行,起码代码经验、项目经验要能盖过团队现有的人。而不是一些没有没什么工程师经验,只有管理经验的人。