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

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

相关文章
相关标签/搜索