优秀的程序员如何优雅地面对更改需求

更改需求是很多程序员兄弟头疼的事情,因为需求的更改最直接的影响就是工作量的陡然上升,对于已经工作量很大的我们来说无疑是一件雪上加霜的事情。然而,我们总是会听到领导说“客户就是上帝”,当客户有更改需求的需要,作为技术人员也必须主动迎合客户的需要,这同时也给我们带来较大的工作压力。那么,作为程序员,如何优雅地应对更改需求,以便更好地适应职业发展的需要呢?
在提出具体的建议之前,笔者认为对项目开发的需求规划和可行性分析做一个较为详细的讨论是很有必要的。
在软件的生命周期中,需求规划是一项重要环节,在软件项目开发的过程中,如果突然更改需求,势必会打乱软件的生命周期,从而使开发过程陷入一种比较尴尬的境地。在网上也有很多关于吐槽更改需求的帖子,把更改需求比喻成将咖喱牛肉炒饭改成蛋炒饭,再从蛋炒饭改成番茄鸡蛋炒面。这样的更改需求无异于将需求规划推到重来,让之前开发人员所付出的辛苦付之东流。所以为了避免这样的事情发生,在做开发之前需要将系统的功能“实现什么”作为铁板钉钉的目标。
将“实现什么”确定好之后,才可以去讨论“如何去实现”。经验丰富的程序员都能够做到将客户需求的更改转化为实现方法的调整,这样能够避免将自己的开发思路打乱。在对“实现什么”整理的过程中,将需要实现的目标规范成描述完整、清晰规范的文档以及相关的性能,当然,还有各种可能发生变更情况的预案。
说到这里,如何优雅地应对更改需求就可以转化为如何成为一名技术过硬、经验丰富的程序员之一问题了。
技术篇——准确的需求评估与合理地可行性分析
准确的需求评估源于对对需求的深刻理解,如何将普通人的想法转化成程序员的编程思想,这就需要将需求深入到设计层面。不仅要会委婉地拒绝不合理的设计,还要能提出可以替代的、合理的方案。所做的这一切都是为了避免出现开发过程中的频繁更改。尚学堂陈老师指出可行性分析可以帮助我们在做好需求评估的基础上让需求更好地固定下来。
首先是技术上的可行性:确定好需求的实现是在团队的技术能力范围内,例如前端、后端、服务器、数据库的开发人员配备,有无以前可用的经验,这些最好做到清单化。在此基础上,就可以开始对系统的架构进行梳理,做到安全性、可维护性、可扩展性。所以不要急于写代码,梳理好思路,编码效率更高。
其次是风险的可控性:如果发生需求的更改该如何应对?最好的办法是在架构不变的情况下,扩展功能,丰富接口。开发好预留地,可以让我们在开发的过程中应对自如。
还有就是高质量的代码:整齐美观、注释充分,有良好的可读性和复用性,即便没有文档的辅助也可以随查随改,这样能够大大提高在开发周期中编码阶段的效率。
经验篇——从容淡定地应对开发过程中可能出现的情况
从容淡定,源于对技术的自信,作为开发者,扎实的技术结合着经验面对各种开发需求才能练就火眼金睛。
避免盲目自信,准确定位问题:从事开发不是为了炫技,避免追求简便而为后续更改造成不必要的障碍,诸如频繁地调用、多层套嵌都需谨慎。在客户未提出更改需求之前不要被自己存在的问题所打倒。所以,debug技能对于优秀的程序员来讲必不可少。
善于沟通,引导客户:客户提出的需求自然有他的道理,所以和客户沟通的目标是要探寻客户的需求边界。敏感地捕捉客户的需求点,让客户成为我们开发流程中的合作伙伴。产品经理是我们的战友,在某种程度上,我们说服的对象更多的是PM。要知道,世界上没有任何一套软件系统或信息系统是完美无缺的,所以不必为了完美而和PM争论得面红耳赤,让更改需求更多的是一种对软件的改进,这样才能在开发过程中应对自如。
 

猜你喜欢

转载自my.oschina.net/u/3628059/blog/1630401