当前位置: 首页 > 科技观察

程序员的故事:天下没有免费的午餐

时间:2023-03-17 19:35:13 科技观察

我们总想花最少的钱做最多的事。也可能有一些折扣。所谓天下没有免费的午餐,或许就是如此。那是我刚加入公司的最初几年。公司用户的需求越来越大,对软件的要求也越来越复杂。我们内部的程序员显然不够用,所以我们花钱聘请了外部软件公司来帮忙。软件已成为当务之急。很荣幸成为部门成立以来第一位真正意义上的项目经理。是公司生产部的一个软件项目,主要用于管理制造产品所需要的一些材料和配件的信息。生产部的李主任和我们信息部的赵主任很熟。再加上这个项目规模比较适中,所以两位领导一拍即合,决定用它来试水软件外包。我们聘请的软件公司在我们行业内口碑不错,带队的周经理也曾帮助其他单位做过类似的软件,所以大家都认为这是一个命中注定的项目。周经理是一名技术程序员。每天上下班,他戴着一副黑框眼镜,背着一个背包,里面放着一台笔记本电脑。这是一个非常典型的程序员形象。而我刚刚从程序员变成了项目经理。在初步了解了用户的需求后,我们两个从技术角度进行了分析。我们觉得和之前其他单位做的软件相比,只是在一些流程细节上有差异,其他的都差不多。没有困难,所以我们充满了信心。制定了6个月的计划。两位领导对这个方案也很满意,特别是李部长还派出了手下不同专业组的几名业务骨干,要求他们每天抽出一定的时间,参与软件需求面谈和测试验证工作。看起来是一个好的开始。在对各个专业组进行了深度访谈后,感觉遇到了一点小麻烦。因为和之前简单的了解相比,实际的业务比我们想象的要复杂一些,而且和周经理之前做的软件也没有想象的那么简单。后来做了很多软件项目,也渐渐习惯了这种现象。通常用户的生产和工作任务都很忙,在软件项目还没有正式上线的时候,用户也不会投入那么多的精力和我们进行深入的交流。项目正式启动后,用户将作为项目组成员加入团队。大家每天在一起交流、交流。问题讨论得越多,就越详细。很多以前意想不到的需求会在这个时候显露出来。但是那个时候,我还没有完全适应这种情况。毕竟周经理见过外面的世界,跟我说他在制定方案的时候其实是预留了一些工作量的,这些增加的需求也在意料之中。所以不要太担心延迟。两个多月后,项目组完成了设计规范的编制工作,我和周经理邀请李部长进行阶段性工作汇报。看到我们展示的成果和设计方案后,李部长表示很满意。开会的时候,李部长问周经理:“小周,我这里还有一两个简单的流程,你觉得你做得到吗?”听了李部长简单的功能介绍,周经理爽快的说道:“这个简单,顺便一起做吧。”我也觉得几天的工作量问题不大。这种纯粹从技术角度考虑问题的方法,其实在后来的很长一段时间里一直影响着我。因为我是技术出身,听到需求后会马上考虑解决方案,然后再考虑数据库怎么设计,流程怎么走,思路怎么部署。其实,这是非常错误的。现实世界中的具体任务总是比想象中复杂得多。同样是技术出身的周经理,显然也犯了类似的错误。像我一样,他只看到了表面上简单的功能,完全不知道背后还有什么复杂的逻辑。领导有命令,下属参与项目组的重点用户自然会全力以赴。领悟了李部长的精神后,他们分析了几个简单的程序。很多事情都是这样,深入思考一下,就能发现更多的东西。后来,几个关键用户拿出了详细的需求书。不得不说,这些业务骨干还是有一定水平的。这些功能是相关的,相当于形成了一个闭环。新的要求摆在那儿,心里难受。虽然我作为项目经理的经验不多,但是从技术角度来说,新的内容确实太大了,我一个人甚至可以做一个类似的项目。投入这么大的软件公司会愿意无偿帮助我们吗?做吧,这是个大问题。李部长没想到需求会变得这么复杂,但确实比以前更有吸引力了。但是公司的预算考核比较严格,谁也不想走合同变更的路子。我们应该做什么?坐在赵部长的办公室里,看着他们抽着一根一根的烟,赵部长觉得应该逼迫软件公司去激发他们的潜能。“告诉他们,公司以后有很多软件项目要做,我们不用担心赚钱。再说了,我们的钱都花完了,当然希望乙方也能做多少。”尽我们所能。”赵部长跟我解释。过程并不曲折。考虑到我们软件公司的母公司在其他领域有很多合作,软件公司的老总亲自来和赵部长沟通,在项目中增加了新的需求。因为没有更多的经费,虽然工作量翻了一番,但人员并没有增加多少。我和周经理都有些焦头烂额了。以前我们只需要做好核心业务,现在每天要和几个专业组沟通,讨论各种细节问题。考虑。原本耗时6个月完成的软件,经过整整一年的努力才勉强上线。但由于中间曲折太多,导致整个软件千疮百孔,用户在使用过程中经常抱怨。甚至有几个功能当时想得很周到,但实际上并没有用到,因为设计太复杂了。总的来说,这是一个失败的项目。因为周经理每天都被关键用户折磨着,他把用户的业务逻辑做的非常透彻。后来,他去了一家更大的软件公司做顾问,工资翻了一番。我也下定决心要通过项目管理高级认证,建立项目管理体系。范围管理是影响软件项目管理的核心要素之一。如果你看看失败的软件项目案例,你会发现很多原因都是因为范围管理失控,有的甚至根本就没有范围管理。我们经常考虑尽可能多地获得。难道我们不知道,如果我们在这里赚了钱,我们可能会在那里返还双倍的钱。天下没有免费的午餐!