老万聊IT—程序员的12个误区
由于“懒、怕麻烦及侥幸心理等”,程序员常常会犯以下12个错误。
1、“急功近利”——先实现功能,再做设计
在科研开发中遇到不少同事,对自己所做的事情不是事先进行设计,而是先实现功能,尤其是在有参考源码的情况下,若在测试过程中不出现问题(这种情况几乎没有),项目就能进展顺利,若出现问题,就东改西改、挖东墙补西墙,最后程序变成了一团麻。
2、“侥幸心理”——bug不会出现
程序调试最难的是随机出现的内存错误,有时很长时间才出现一次,有些人存在侥幸心理,认为bug不会出现。老万的经验是:“bug若不处理,在关键时刻你的程序一定会出现问题”。
3、“人之初,性本善”——不重视错误处理
程序员经常认为用户不会对程序进行破坏操作,所以不太重视错误处理。而错误处理在编程中是非常重要的,众所周知“在编程中20%是功能,80%是错误处理”,在《人月神话》中给出系统产品开发的工作量至少是项目开发工作量的9倍,可见错误处理所占的比重与重要性。
4、“回避心理”——逃避困难
现在大家经常使用百度地图去搜索附近的美食,它的实现是在底层采用了四叉树存储数据,由于四叉树存储数据比顺序存储数据实现起来难的多,不少人在项目开发阶段为了回避困难,常采用顺序存储数据。若你的项目要升级为产品,你的代码一定会被扔到垃圾箱里。
5、“对人不对事”——你又错了
在联调阶段,经常会出现吵架的情况,大家经常会说的是:“你有错了”。由于接口未定义清楚,理解有偏差等,联调阶段出现问题是常见的,而大家的目标是完成任务,不是相互指责。为了团结与更好更快的完成项目,记住:“对事不对人,而不是你有错了”。
6、“算法是次要的”——计算机配置高
在项目开发阶段由于测试的数据量小,算法的优点没有被体现出来。而目前大数据开发非常热门,算法的优点就体现的非常明显。不要迷信计算机的配置,要去提高算法的性能。
7、“走捷径”——简化功能
通讯程序实现起来比较麻烦,有人在编写通讯程序时往往简化其功能,例如客户端程序的链接功能,常常认为网络非常稳定不会出现断网的情况,不去实现客户端自动链接的功能,在实验室一般不会出现断网的情况,但在现场一定会出现。不去实现自动链接功能,就会出现在现场让用户不停的点击链接按钮。
8、“我很忙”——没时间思考总结
程序员提高能力最好的方法是:“理论学习—编程实践—思考总结—理论学习” 的循环过程,尤其是“思考总结”,很少有人完成项目之后去思考总结。若问他为什么不去“总结下项目的经验教训”?答案是“我很忙”(即使是他正在看电影或打游戏时你问他,也是这样的回答)。
9、“应该是这样”——不去沟通
在项目开发过程中,由于对接口的定义可能存在着理解的偏差。有些人采取的办法是:“不是去进行沟通,而是认为别人也是这样想的”。这样在联调时就会出现各种各样的问题。
10、“自我感觉良好”——不去追求完美
在实现功能之后,程序员往往会出现“自我感觉良好”的情况。由于“自我感觉良好”,就失去了对程序更进一步的格式美化、添加注释及性能优化等。
11、“人月神话”——时间线性关系。
一旦项目出现了滞后现象,第一反应就是向项目增加人手,但在大多数情况,这样的行动无异于抱薪救火,只会让项目的进度一再拖延,最终会影响项目的质量。在软件开发中不能简单地用“人月”来衡量项目的工作量:一个人花10个月能做完的事情,10个人花1个月未必能完成,正如十个孕妇无论如何也不可能在一个月内生下孩子。
12、“明确的需求”——需求不会改变。
对程序员来说,项目拖延的最好借口是:“需求经常变”。需求不变是不可能的,这就要求程序员对待需求的变更态度是:“需求的不变是变”,为此一般把需求分析分为三个部分:必须有、最好有、希望有。