共1条
1/1 1 跳转至页
程序员的七宗“罪”
程序员的七宗“罪”
(2003.02.24) 来自:赛迪
作者:雷年胜
虽然软件工程的思想已被绝大部分程序员所接受,但要将这种思想转化为软件开发过程
中的种种自觉行为却不是一件很容易的事。究其原因,有很多因素,如很多程序员缺乏
专业化的训练,重技巧,轻规范,包括一些计算机专业科班出身的程序员也存在这种问
题;再如很多公司只注重软件产品的开发结果,不注重开发过程,客观上也影响了程序
员的目标取向。如此种种,使很多中国的软件公司难以迈上一个新的台阶,发展壮大也
就无从谈起。程序员们作为软件产品的创造者,当然也难辞其咎。
下面所列不过是产品开发过程中诸多问题中的其中几个,也许你不会犯这样的错,我还
是引用一句老话:“有则改之,无则加勉”。
一宗罪:以偏概全
大家都知道,在对一种产品决定立项开发前,都需要进行产品开发的可行性进行分析,
而其中的市场分析至关重要,其实市场分析无外乎三点,一是要开发的产品是有市场需
求的,二是公司有能力获取这份市场,三是公司能从产品中获益(不一定是指赚钱,如公
司战略利益等)。看似简单的几点,想要完全弄清楚决非易事,所以很多产品的市场分析
容易“以偏概全”,如通过个别用户的特定要求或报刊杂志的片面报道将产品市场无限
扩大(分析人员自己想象的),技术驱动而忽略用户需求和成本(如铱星计划)等,至使产
品开发完后没有预期的市场效果。想要全面而准确地的进行产品的市场分析确实是很不
容易,需要平时的积累和理性的分析思考,不能靠撞大运。
二宗罪:画猫成虎
大家也许有这样的经历,产品开发完毕交付用户使用后,用户总是不满意,如不符合他
们的使用习惯,功能设置不合理等。所以产品的需求分析是如此重要,没有正确的需求
,软件开发得再好,技术再先进,也不过是当摆设的花瓶。程序员们,尤其是系统分析
员容易犯的第二宗罪就是“画猫成虎”,曲解了用户的要求。一份好的需求分析不是简
单地将用户的每个具体的需求点记录下来,而是要洞察用户每个具体要求背后的动机,
将分散的需求点串成一个有机的整体,基于需求并“超越需求”。一个好的系统分析员
不仅是一位软件专家,还要是一个出色的领域知识专家和沟通者。
三宗罪:好大喜功
项目延期好象是软件开发一个必经的步骤。项目经理在制定开发计划时,往往过于乐观
,每个开发阶段都按最乐观的估计来计算开发时间,而没有充分考虑到软件开发的特殊
性和不可预见性,程序员可能都有这样的经历,一个非常小的BUG可能要耽误很长的时间
,使开发进行不下去。所以项目经理切忌“好大喜功”,因为项目的不断延期会打击项
目成员的信心和士气,久而久之,会使大家产生一种惯性:项目延期是正常的。当然,
这也不能完全怪罪项目经理们,因为在国内,很多项目计划都是采用倒排序的方法,即
先确定产品交付的时间表,再依次倒推测试、实现、设计和分析所需的时间,而整个开
发的时间往往是那些从没实际开发过产品的领导来拍脑袋决定的。
四宗罪:只顾眼前
即便是最优秀的系统分析员也不能保证所提供的软件系统需求不会变化,所以软件设计
人员要充分考虑这一点,不能仅仅"只顾眼前"的需求,还要有一定的前瞻性,满足可预
见的未来需求,软件系统的可扩展性和可维护性对于一个大型、复杂、长生命周期的软
件系统来说至关重要。打个比方理解一下软件的可扩展性,给一个10岁的孩子做一条裤
子(需求),你不能将裤子的长度裁减得刚刚与孩子的身高合适(设计/实现),因为孩子长
身体很快,到他11岁时裤子已经短了(需求变化),有两种方法解决,一是将短了的裤子
丢弃,重做一条(重新开发系统),但成本很高;二是将在裤腿上接上一段接着穿,但不
美观且不宜操作(维护成本高)。而最恰当的做法是将裤子裁减得稍长过现在的要求,将
长的部分反缝在裤腿里,等孩子长高后,拆线将原来长的部分放下一点就可以了(扩展方
便),既方便又不失美观。可见,可扩展性并非软件系统专利,裁缝们早已理解了这一点
并付与实践。
五宗罪:得过且过
软件设计需要通过软件实现成为最终的产品,优秀的设计需要靠一行一行的代码体现,
而有些程序员对软件实现的态度是,最小满足原则,“得过且过”,对于系统的容错性
,安全性,效率考虑甚少,满足基本功能即可,没有持续改进的态度和精神。
六宗罪:自我安慰
产品实现是否达到设计要求在公司内部需要测试验证,严格的测试对于保证软件产品的
质量是必须的,而出于时间、资金等缘故,很多软件产品并没有经过严格的测试就已交
付给用户使用,程序员们总是善于"自我安慰":应该没问题吧。"想当然"不能消除缺陷
,只有测试再测试才是科学的精神。
七宗罪:敝帚自珍
技术总是向前发展的,不要过于“敝帚自珍”,抱着原有的东西不肯放弃,软件产品也
有生命周期,该终结时要毫不犹豫。
在写过“程序员的四个境界”和“程序员的七种武器”两篇短文后,收到一些同行的E-
MAIL,对有些问题进行了进一步交流,我个人也有所获,希望知识、经验能共分享,为
中国的信息技术发展添自己的一份力。
关键词: 程序员 七宗 开发 产品 需求
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |