读“人件集”有感


最近由于项目团队的人数越来越多,势必要了解一下项目管理方面的知识。“人件集”可谓与“人月神话”都是项目管理方面的圣经,既然想了解这方面的知识,这些书必须要看。花了大概半个月的时间,草草的看了一下“人件集”。结合自己团队的情况和书中的理论,着实让自己茅厕顿开。虽说书中的好多理论自己并不理解,或许需要更深经验的人,才能领悟其中的道理,不过自己也从书中也学到了不少项目管理的知识。古人之“问道有先后,学术有专攻”,不同的人读这本书可能悟出的道理大有不同。

    软件开发中如何保证软件质量是很关键的一个问题,但是一个产品又要保证按时能够上市。这明显是一个互相矛盾的问题,怎么解决。在保证质量的前提下如何按时的完成产品的开发。书中提到了现在软件开发中很多项目的一个普遍方法,就是制定一个周密的计划,假定到某个日期必须完工,这种开发存在于许多软件公司。有句话说“存在即合理”,所以这种开发模式肯定有它的道理,比如说产品要抢占市场,客户要在某个时候使用等等。那么这样的软件质量如何那?一般会有两个结局,第一个在质量合格的情况下按时的上市。还有一个就是漏洞百出的软件也及时的上市了。这里不能按时出来产品,这个结局往往是人们无法接受的,这里也就不说了。那么第一个结局是在什么情况下出现的哪?首先做这个产品的公司,必定已经做过很多类似的产品,积累的丰富的经验,并且开发这种产品的工程师们,必定也对这个产品了如指掌。这种项目计划成功自然就不足为奇。第二个个结局往往是出现在一些规模比较小的公司,同时这个产品是一款创新的产品,并且该公司几乎没有开发过此类产品的经验。最关键的是工程师们也没接触过此类产品的开发,甚至连这种产品需要的开发工具和开发语言都不熟悉。那么针对第二种情况,传统的开发方式势必会影响软件的质量和上市的时间。

    不管是软件工程领域,还是其他任何工程领域,都不能把一些传统的理论奉为圭臬。俗话说尽信书不如无书,做任何事情都要因地制宜,实事求是。针对一些创新软件的研发,搬照传统软件的开发方式往往会功败垂成。那么照这样讲,开发这些创新型的软件,就不要制定时间了,当然也不是,否则这个项目将会遥遥无期,任何公司也不会对一个遥遥无期的产品投入任何精力的。书中就提到了这种产品只能及时的完成,不能按时的完成,所谓的及时就是在合理的时间,软件质量达到一个合理的要求时开发出这个产品。那么要达到这种及时完成,我们又该怎么做那。下面就结合书中的理论,谈谈自己的一些想法。

    如何做摆在了面前。有些人就会想,既然对开发这种类型的软件产品不了解,那么拿到需求就开始编码么,先做出来一个原型再说。然后出来了原型再在上面进行迭代,这种极限开发方式现在的很多小公司都在采用。但是可以想象这样的软件出来的质量会是如何?别说质量,极有可能你在迭代的过程中,软件的代码根本就没办法再重构或者利用了怎么办?一些目光短浅的产品经理,看到手下的程序员一拿到需求就开始编码,心理感觉很好,觉得员工工作都很卖力。但是看到一些员工在看一些其他方面的书籍,或者即使是和产品相关的书籍,但是没有投入这个产品的开发中,就认定这种员工没有责任心,时间这么紧迫还要干其他的事情。可想而知这样的产品经理是根本不会花时间,来培训手下的工程师,即便是让他们熟悉常用的开发工具的时间都不给。一开会必定是谈论产品什么时候能出来,产品计划制定的如何?这种产品经理要么是不懂软件技术开发的,要么是腐朽型的古董经理,让他们与时俱进真的很难。他们不愿意在提高软件质量上做任何投入,但是他们往往会这样说一定要保证软件质量的情况下,按时交付产品,真TMD的天方夜谭。

     前面说了这么多,每条基本都是错误的路线,那么正确的方法又是如何那?一个有远见的产品经理,拿到了这种创新型软件的需求时,肯定不会一上来就跟自己的手下,谈论项目什么时候完成,而会让工程师们自己看,同时让他们讨论下开发此产品可能遇到的风险。这时的产品经理起到的就是裁判的作用,只做最后的决定,其他时间就是听。不管最后决定什么时候敲定,但是这样的产品经理第一步肯定就是让工程师们学习、培训,他很乐意花时间和精力来培训他们的工程师们,不管是开发的环境还是开发用到的语言,都要很细致的学习。因为这样的产品经理知道这是保证软件质量的根本,必须要做。这里提一下,在软件工程领域,如何学习新的技术和开发工具,在人间集这本书中也有详细的讲解。等下在后面的段落里也会提到。这里只是提一下,现在言归正传。那么在工程师学习的过程中,自然就会间接的解决了产品中的一些技术问题。这时可以下结论了么?当然没有定论,但是这是的结论就八九不离十了。这时就自然可以用XP(极限编程)的开发模式进行开发,这样开发出来的产品,才能在原型的基础上进行迭代,进行重构。否则只是在浮沙上筑高台。只有这样,开发出来的产品才能保证软件质量,并且能够及时的上市。这里的“及时”可能是原型的第一代也可能是第二代,这就要看市场的需求了。

    最后说下如何快速有效的学习,这里又是一个矛盾,要快速怎么有效。其实我们这个世界就是一个矛盾的世界,关键是我们怎么合理的处理这些矛盾。那么软件领域怎么快速的学习,第一,传统方法不能放弃就是阅读书籍,但是软件领域又有它的特殊性,其中google,论坛都是这个领域独特的学习地方。通过传统的方法结合这些特殊的方法,相信自然比其他的领域学习要快速。那么怎么有效那?我觉得这本书中有句话讲的非常的经典:“理论只是把东西简单化,其实实践起来是很复杂的”。这句话我深有体会,特别看一些编程方面 的书籍,比如拿面向对象的思想,看这些理论很简单,不就是把现实中的物体,对象抽象成程序中的类么?有什么难那?对很正确,是这个道理。但是如果你真动手起来编程可没有那么简单。所以实践太重要了,千万不要眼高手低,什么东西一看觉得这么简单,你要时刻提醒自己,理论只是把复杂的东西简单化了,亲手做吧,里面的难点还很多。

小到一个简单的工作,大到一个决策的制定。都是这个道理。这里抨击一下中国的大学教育。中国的大学教育存在严重的眼高手低的现象,觉得很多理论很简单不就是这么回事么?所以根本不注重实践。说到底,理论只是用来指导实践的,所以为何说理论简单那,就是因为他只是给你指明了一个大的方向,就像红军长征一样,目的地是有了,但是你要走下去可不是一件容易的事情。所以说,要用理论指导实践,学习任何东西都要遵循这个原则。现在想想高中时学习那些数学,物理理论那么的简单,还整天不停的练习,不停的做题目。但是到了大学数学和物理的理论变复杂了,我们的人,反倒是没人愿意练习和做题目了。这就是为何在学术界,国内很少有人能在世界上有影响力的原因了。其实讲了这么多,自己能做到又有几点那?所以自己今后也要加倍的努力。

原文链接

如果你喜欢这篇文章,谢谢你的赞赏

图3

如有疑问请联系我