第3部分 软件研发工作总结
编程时首先达到正确性,其次考虑效率
在实际的软件开发项目中,经常会遇到产品开发周期很短的问题。也就是说,开发人员需要在“质量”和“速度”之间做出权衡。具体到程序代码,就存在到底是先考虑实现功能(即保证程序的正确性),还是要一步到位把事情做好(即保证程序的正确性的同时,兼顾其效率)?
在网上,有关这方面的讨论也非常的多。微软亚洲研究院研究员刘未鹏老师写过一篇文章《编程的首要原则》(http://mindhacks.cn/2009/03/09/first-principles-of-programming/),在这篇文章中,作者就“你们认为编程的首要原则是什么?”与网友展开了讨论,共给出了5种答案,包括:获得最多认同的答案,获得第二认同的答案,一些众所不一定周知的答案,一些众所很可能周知的答案和最幽默的答案。其中,“KISS”挺有意思的,它要求程序要尽量简单,越简单越好。
在有关程序设计语言(像《C程序设计》)和算法(像《算法设计与分析》)这类书上,前辈们总结了好的算法或程序需要具备的几个特性,包括:正确性、简明性、效率和最优性,而正确性是排在最前面的。因此,不管怎样,“编程的首要原则”是要确保程序的正确性,非简单性。
对于大部分软件开发工程师来说,编程时首先达到正确性,其次考虑效率。这也是软件开发的基本原则。
在实际的软件开发项目中,有如下因素要求开发人员首先保证程序的正确性,其次考虑效率。
第一,市场形势千变万化,产品开发周期很短。正所谓“天下武功,唯快不破”,对于飞速发展的IT行业来说,要想不被淘汰,就必须要先于别人推出产品。公司有生存的压力,就会逐级传递到员工的身上。在产品立项的时候,产品经理会确定一个产品的交付日期。到了研发经理这一级,为了防止产品出现返工的情况,就会在之前确定的日期上面压缩掉一些。最后分到每个开发人员身上的时候,开发时间已经很短了。要想在这么短的时间里将程序写完,已经是相当的不容易了,就不可能进一步考虑程序的效率、简单性等。因此,很多时候,公司的大环境不允许开发人员写出很完美的代码。
第二,对于开发人员本人来说,除了编写代码实现产品需求,还要做很多其它的事情,包括:解决现场程序问题,参加项目会议,写开发文档,对程序进行单元测试和集成测试等。除开这些时间,仅仅用于编写代码的时间就更少了。要想在极短的时间里编写出很完美的代码,几乎是不可能的,所以才会出现一个产品有好几个版本(如1.0版本、2.0版本等),这其实就是在逐个版本地修正之前版本程序中的错误或考虑不完全的地方。因此,编程时要以正确性为首要目的。
第三,公司做任何产品,都是要考虑成本的。如果产品的基本功能已经实现了,并且客户已经验收了,那么几乎没有必要再让开发人员对程序反复修改,以达到高效率和尽可能的简单。如果要这么做,需要投入相当的物力、财力和人力,而其效果也不是那么的明显。因此,大部分产品的程序都仅仅是正确而已,离最优还有很大的差距。对于那些追求完美的毕业生来说,如果刚看到程序代码,可能会觉得很失望。但一旦在公司待久了,就会明白其中的道理。
“质量”和“速度”之间如何权衡?想必你已经知道答案了。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)