msgbartop
ChemHack.com中文版
msgbarbottom

01 六 09 程序员的共同点

本篇文章由Duan Lian翻译自Carlos OliveiraWhat all programmers have in common? 转载请注明

软件开发我也做过,什么样的程序员都见过。有些程序员很有才,而且高产。也有些人水平就不行了,水平不高还不思进取。

程序员的生产率差距还是很大的。在大多数情况下,牛人开发的速度是一般人的十倍,不管用什么语言或者开发工具。所以别想着用什么动态或者高级的IDE就变成牛人。

不管水平怎么样,大家都有个一样的毛病。在估计项目大概要用的时间上,大家都太乐观了。可以说大多数的开发项目延期都是因为这个毛病。

水平越不行,这个毛病就越麻烦,因为水平不行的人开发速度都很慢,而且质量也很低。不过即使是牛人,这个问题也一样存在。这个毛病之所以会出现,是因为我们往往忽略了开发过程中的关键问题。

举例来说,做一个东西,我估计编程要花20小时。没问题,但是这20小时没包括你跟客户开会的时间,没包括优化数据库的时间,甚至也没包括你把bug提交到Issue Tracker的时间。这些事情当然占用你的工作时间,别忘了在估计时间的是也这些时间都考虑进去。

缩小差距

不管你水平怎么样,都可以做一些事来尝试改善一下时间管理,下面是几条我试过而且效果不错的方法:

给你花费的时间记流水账。我们通常根本不知道时间到底花到哪了。这笔糊涂账的结果就是,我们把大量的时间花费在了没有什么价值的鸡肋事情上。记个流水账,你就知道哪里你用的时间太多了,哪里还需要更多努力。

将你的时间估计乘以一个放大系数。 你对时间分配大概有数了之后,就可以估计有多少时间花费在了软件开发上,有多少时间花费在了开发相关活动上。不同情况下这个系数是不一样的。举例来说,如果你有很多会议要开,那这个系数就要大的多。根据你的情况确定一个系数,并将这个系数应用到开发估计上。

学会说No。 做的东西的时候,你会想增加一些新功能进来,你的时间不会凭空增加。在这种情况下,你需要明确表示,时间不够完成额外的计划。”说No“要比项目最后延期好的多。

结论

程序员都一样,估计要用到的时间常常少于需要的时间。这很自然,因为大家都没有考虑那些额外的任务。仔细了解自己的工作流程,学着对你不能做的事情说不,我们都能把学着把好钢用在刀刃上。

继续阅读

  • Mythical Man Month: an earlier view on scheduling issues for software development.
  • Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software.
  • A proposal for better software schedules, by Joel Spolsky.

下面是用词词对应的方法翻译出来的,大家喜欢哪种风格?

我做过一段时间的软件开发,也见过很多不同类型的程序员。他们中的一些人确实很有才,并且成果丰富。其他的人并不是很有天赋,不过他们对提高自己的技能也不在意。

经验表明开发者的生产率是有很大差距的。在大多数情况下,最优秀的开发者的开发速度是一般人的十倍。不管开发软件时使用什么语言和工具,这个结论都是正确的。也就是说,生产率的差距并不能简单的用开发语言或者开发工具弥补。

但是,不管程序员的水平如何,大家都有一个共同点。同时,大多数软件开发计划延期在一定程度上是由这个共同点导致的。这个共同点就是,在估计开发新软件所需的时间上,所有的开发者基本上都太乐观了。

糟糕的程序员更容易遇到这个问题,因为他们的开发速度很慢,而且他们开发的软件质量也很低。但是,即使是最优秀的程序员,也会遇到这个问题。这之所以会发生是因为我们忽视开发过程中关键方面的倾向。

举例来说,即使完成一个功能所需要的编程时间是20小时,这也不包括需要和客户一起开会的时间、优化数据库的时间、甚至是将问题提交倒bug追踪系统的时间。任何开发者都需要将所有的这些活动计入到工作时间内,也需要在估计时间的时候考虑进去。

缩小差距

好消息是优秀的程序员和糟糕的程序员都可以做一些事情来改善时间管理问题。这里是由一个简单的列表,列出了我自己尝试过并且结果良好的一些方法:

记录一个你如何花费时间的日志。 让人吃惊的是,我们通常根本不知道我们的时间是如何花费的。这导致的结果就是,我们把大量的时间花费在了没有足够回报的事情上。通过记录一个日志,我们可知道哪里需要砍掉一些过剩的时间,哪里需要花费更多努力。

将你的估计乘以一个系数。 你对时间花费的地方有了一些经验之后,你就可以估计你有多少时间花费在了软件开发上,有多少时间花费在了相关活动上。这个系数在不同的情况下是不同的。举例来说,与没有那么正式手续的公司相比,有很多会议的公司需要一个更大的系数。根据你的情况确定一个系数,并将这个系数应用到开发估计上。

学会说No。 在计划估计上的一个大问题是,你想要做的东西可能会增加,但是分配给任务的时间并不会增加。在这种情况下,你需要明确的指出你认为时间不够完成计划的特性。”说No“要比项目最后延期要好的多。

结论

程序员都有一个共同倾向,就是计划完成一系列功能所用的时间要少于实际需要的时间。这是我们有的一个很自然的倾向。之所以会出现这种倾向是因为我们没有花时间去思考每个人都需要面对的额外任务。通过仔细理解你的个人工作流和学着对你不能做的事情说不,我们都有一个巨大的机会去提高我们编程计划的准确性。

继续阅读

  • Mythical Man Month: an earlier view on scheduling issues for software development.
  • Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software.
  • A proposal for better software schedules, by Joel Spolsky.

 

 

Reader's Comments

  1. |

    第一篇顺畅上口。第二篇有些地方词不达意。比较了两个地方可以看出。。。
    “也有些人水平就不行了,水平不高还不思进取。”—–“其他的人并不是很有天赋,不过他们对提高自己的技能也不在意。”
    “是因为我们往往忽略了开发过程中的关键问题”——“这之所以会发生是因为我们忽视开发过程中关键方面的倾向”。

  2. |

    呵呵,你说的不错,不过我是做前台的,但是殊途同归,都差不多.
    不知道你擅长什么类型的编程呢?有机会合作一下~ 开发个大网站,OK?
    可以给我回EMAIL.

Leave a Comment