读书人

为什么小弟我连普通的程序都写不好

发布时间: 2013-02-24 17:58:56 作者: rapoo

为什么我连普通的程序都写不好?


在不完美的世界里聪明地匍匐前行, 是每一个程序员应该懂得的第一件事。 ---------- 引


从学校开始正式学习和使用Java语言起(不计之前学C的时间)到如今,约也有3年时间; 其间写过简单的增删查改的功能,也曾深入源码去钻研一件事情的工作原理, 读过不少软件开发的好书, 《编程珠玑》,《程序设计实践》, 《深入理解计算机系统》, 《从小工到专家》 等, 了解过多种编程语言,自认为还是有一点悟性的, 但是, 总感觉自己连普通的程序都写不好。这里, 普通的程序指的是使用现有的组件、框架等构造软件,编写业务逻辑代码。 为什么会这样呢? 如何才能写出优质的代码 ?


未能深入理解事物的内部 ?

太依靠“悟性”,没有更深入到事物的核心和工作原理,总是停留在比较浅的层次上; 不求甚解,浅尝辄止。读了不少书,但尝试太少, 消化比重太低。

依靠直觉、文档说明和抽象机制使用组件和框架,而没有深入理解其内部实现,计算机科学基础不扎实, 在一知半解的基础上写程序, 虽然在初期能够快速构建能工作的程序,但一旦出问题,调试会花费不少时间。这实际上与现代软件开发的特点有密切关联, 更复杂的应用程序,更短的开发周期, 促使人们必须善用现有组件和框架尽快写出能够满足需求的程序,而不是细加雕琢,从第一个字节重新开始。


缺乏足够的挑战性?

所编写的程序大多接近于业务层, 没有太多深入到计算机核心的东西。当然, 工作中肯定会遇到不少有挑战性的问题,比如多数据源的动态配置与使用; 并发访问数据库等。其实,把一件普通的事情做到非常出色,就是一件很了不起的事情。“伟大” 的程序并不是自身有什么伟大之处,而正是组合了许多平凡普通的程序而完成了一件看上去很了不起的事情,给许多人带来有益影响而伟大。


没有拿得出手的程序 ?

看到别人写出了有影响力的程序或软件,而自己至今尚没有拿得出手的东西; 所写程序的影响力局限在较小的范围内,未能获得广泛的使用,缺乏驱动力和激励。


想要一蹴而就 ?

很显然, 好的程序总是经过时间的打磨而成,而不是一次性就写得很好。 先写出基本可用的程序,然后逐步求精。


过分苛求程序质量?

尽管也是尽力遵循良好的编程规范和风格, 总觉得代码性能不太好,潜藏BUG, 但又看不出。希望能够写出性能良好、可靠性、稳定性、健壮性好、可维护性佳,易用性良好的程序, 但又非一朝一夕之功。


测试之怠惰?

测试是检验程序正确性的有力手段之一。 不知道如何做测试? 或者嫌太麻烦,有时就是懒于做测试 ? 由此导致对自己所写的代码没有信心或者虚假的信心。


思维不严谨 ?

不得不说,程序开发是对严谨逻辑思维的有力考验。如果思维不严谨, 很容易写出表面上能够工作实际上很容易失败的潜藏很多BUG的程序。 该如何提高思维的严谨性呢 ? 多多研习算法,应该是一条不错的途径。


期望过于理想的状态?

希望能够尽可能借鉴现有的成熟方案, 做出一致、优雅的整体解决方案;有一种一劳永逸的欲念隐藏心中,而不是持续改进和进步。


程序开发的兴趣不浓?

处于那种不惊不淡的程度吧, 毕竟, “It works” 已经不足以让人兴奋了; 期望能够写出优质易用的程序,也许追求更高的开发目标削减了开发的兴趣和乐趣。


开发方法和流程不规范 ?

有时候, 过于随意的开发方法和流程, 以及过于松散的工作计划, 会削减开发人员的效率、积极性和创造力; 此外, 单掌难鸣, 有影响力的产品通常是由多人协作合力完成, 浓厚开放的团队讨论氛围有利于开发活动的顺畅进行。


总结一下:

从技术角度来说: (1) 未能深入理解事物的内部; (2) 测试之怠惰; (3) 思维不严谨; (4) 开发目标缺乏足够的挑战性

从心态角度来说: (1) 想要一蹴而就,一劳永逸; (2) 过于苛求程序质量; (3) 期望过于理想的状态; (4) 兴趣和乐趣不浓

其它: (1) 缺乏外界的驱动力和激励; (2) 开发方法和流程不规范


代码质量实际上是一个现象和结果。背后的原因可能有很多: 思维不严谨, 考虑问题不周到, 坏的编程习惯, 项目进度压力, 粗心, 缺乏足够的测试, 缺乏足够的驱动力和激励,对事物的深入理解不够, 心态问题等。要从问题的源头处改进,而不是从现象上出现一个解决一个。


重温下 《Unix/Linux 的设计思想》 ,上面有段话吸引了我:

一个伟大的程序,如果满足条件: (1) 它必须满足实际需要; (2) 周围不存在任何了解该如何编写此程序的“专家”; (3) 没有足够时间“完美”完成任务。

第一点是最必要的却常常做的不充分或过犹不及,同时也说明,不要对程序质量太过苛求; 第二三点则说明, 其实不存在很理想的状态,没有充足的时间用来思考一个非常优雅的解决方案, 也不一定有现成的成熟方案。


毕竟,一个程序就只是一个程序而已。做好该做的事情,逐步变得更好。 至于是否伟大, 究竟做了什么, 可能只是外在的表现和光环而已。踏踏实实钻研, 踏踏实实写好能做好事的程序,做有趣事情的程序, 精益求精但不过分苛求。 懂得享受一下生活日子, 这不挺好吗 ?


读书人网 >其他相关

热点推荐