反思: 为什么我连普通的程序都写不好?
2013-02-22 21:49
260 查看
在不完美的世界里聪明地匍匐前行, 是每一个程序员应该懂得的第一件事。 ------ 引
从开始正式学习和使用Java语言起(不计之前学C的时间)到如今,约也有3年时间; 其间写过简单的增删查改的功能,也曾深入源码去钻研一件事情的工作原理, 读过不少软件开发的好书, 《编程珠玑》,《程序设计实践》, 《深入理解计算机系统》, 《从小工到专家》 等, 了解过多种编程语言,自认为还是有一点悟性的, 但是, 总感觉自己连普通的程序都写不好。这里, 普通的程序指的是使用现有的组件、框架等构造软件,编写业务逻辑代码。
为什么会这样呢?
未能知其所以然 ?
太依靠“悟性”,没有更深入到事物的核心和工作原理,总是停留在肤浅的认识层次上; 不求甚解,浅尝辄止。读了不少书,但尝试太少, 消化比重太低。
依靠直觉、文档说明和抽象机制使用组件和框架,而没有深入理解其内部实现, 在一知半解的基础上写程序, 虽然在初期能够快速构建 “It works”的程序,但实际上知之甚少。 类似于“建造空中楼阁”, 缺乏坚实的基础支撑。
解决方案: 在概览全景之后, 将开发过程中积累的所有含糊不清的地方各个击破, 使所学及所用的关节打通,形成牢固的知识技能体系。
缺乏足够的挑战性?
所编写的程序大多接近于业务应用层, 没有太多深入到计算机核心的东西。
解决方案: 其实,把一件普通的事情做到非常出色,就是一件很了不起的事情。“伟大”
的程序并不是自身有什么伟大之处,而正是组合了许多平凡普通的程序而出色完成了它应该做到的事情。业务层开发也会遇到一些很有挑战性的问题, 不要回避,尽力去解决。 做好该做的事情, 你将赢得荣誉。
没有拿得出手的程序 ?
看到别人写出了有影响力的程序或软件,而自己至今尚没有拿得出手的东西; 所写程序的影响力局限在较小的范围内,未能获得广泛的使用,缺乏驱动力和激励。
解决方案: 你只是没有写出有实际用途的程序。 敏于去发现不足, 努力去改进, 总会写出令自己自豪的程序。 不一定要拿出很重量级的项目或应用。 即使一个小程序, 或许都可以做出很有益的事情。同时, 要尽可能开放给别人使用, 接纳别人的建议和改进。
想要一蹴而就 ?
很显然, 好的程序总是经过时间的打磨而成,而不是一次性就写得很好。 先写出基本可用的程序,然后逐步求精。 同时也要阅读优秀源代码, 扩展自己的见识。
苛求程序质量却又测试怠惰?
尽管尽力遵循良好的编程规范和风格, 总觉得代码性能不太好,潜藏BUG, 但又看不出。希望能够写出性能良好、可靠性、稳定性、健壮性好、可维护性佳,易用性良好的程序, 但又非一朝一夕之功。
解决方案: 这是因为缺乏良好测试导致的对自己所写代码不自信的现象。 学习一些测试技能, 系统、严格地测试自己的程序, 最终获得代码的自信。 觉得代码性能不太好? 拿出实际数据和手段来, 不要凭感觉做事。
思维不严谨 ?
不得不说,程序开发是对严谨逻辑思维的有力考验。如果思维不严谨, 很容易写出表面上能够工作实际上很容易失败的潜藏很多BUG的程序。 该如何提高思维的严谨性呢 ?
解决方案: 多多研习算法,应该是一条不错的途径。此外, 训练自己缜密、周密思考问题的能力。
期望过于理想的状态?
希望能够尽可能借鉴现有的成熟方案, 做出一致、优雅的整体解决方案。
解决方案: 持续改进和进步。
程序开发的兴趣不浓?
处于那种不惊不淡的程度吧, 毕竟, “It works” 已经不足以让人兴奋了; 期望能够写出优质易用的程序,也许追求更高的开发目标削减了开发的兴趣和乐趣。
解决方案: 可能缺乏有力的外界激励, 比如说参与到一项非常有创新性的产品开发中, 或者有重大物质奖励。 适时寻求转向。
开发方法和流程不规范 ?
有时候, 过于随意的开发方法和流程, 以及过于松散的工作计划, 会削减自己的效率、积极性和创造力; 此外, 单掌难鸣, 有影响力的产品通常是由多人协作合力完成, 浓厚开放的团队讨论氛围有利于开发活动的顺畅进行。
解决方案: 先制订相对合理的开发任务与工作计划, 再投入工作; 逐渐建立起适合自己的有效的开发流程与工作方法。
代码质量实际上是一个现象和结果。背后的原因可能有很多: 思维不严谨, 考虑问题不周到, 坏的编程习惯, 项目进度压力, 粗心, 缺乏足够的测试, 缺乏足够的驱动力和激励,对事物的深入理解不够, 心态问题等。要从问题的源头处改进,而不是从现象上出现一个解决一个。
重温下 《Unix/Linux 的设计思想》 ,上面有段话吸引了我:
一个伟大的程序,如果满足条件: (1) 它必须满足实际需要; (2) 周围不存在任何了解该如何编写此程序的“专家”; (3) 没有足够时间“完美”完成任务。
第一点是最必要的却常常做的不充分或过犹不及; 第二三点则说明, 其实不存在很理想的状态,没有充足的时间用来思考一个非常优雅的解决方案, 也不一定有现成的成熟方案。
毕竟,一个程序就只是一个程序而已。做好该做的事情,逐步变得更好。 至于是否伟大, 究竟做了什么, 可能只是外在的表现和光环而已。踏踏实实钻研, 踏踏实实写好能做好事的程序,做有趣事情的程序, 精益求精但不过分苛求。 懂得享受一下生活日子, 这不挺好吗 ?
从开始正式学习和使用Java语言起(不计之前学C的时间)到如今,约也有3年时间; 其间写过简单的增删查改的功能,也曾深入源码去钻研一件事情的工作原理, 读过不少软件开发的好书, 《编程珠玑》,《程序设计实践》, 《深入理解计算机系统》, 《从小工到专家》 等, 了解过多种编程语言,自认为还是有一点悟性的, 但是, 总感觉自己连普通的程序都写不好。这里, 普通的程序指的是使用现有的组件、框架等构造软件,编写业务逻辑代码。
为什么会这样呢?
未能知其所以然 ?
太依靠“悟性”,没有更深入到事物的核心和工作原理,总是停留在肤浅的认识层次上; 不求甚解,浅尝辄止。读了不少书,但尝试太少, 消化比重太低。
依靠直觉、文档说明和抽象机制使用组件和框架,而没有深入理解其内部实现, 在一知半解的基础上写程序, 虽然在初期能够快速构建 “It works”的程序,但实际上知之甚少。 类似于“建造空中楼阁”, 缺乏坚实的基础支撑。
解决方案: 在概览全景之后, 将开发过程中积累的所有含糊不清的地方各个击破, 使所学及所用的关节打通,形成牢固的知识技能体系。
缺乏足够的挑战性?
所编写的程序大多接近于业务应用层, 没有太多深入到计算机核心的东西。
解决方案: 其实,把一件普通的事情做到非常出色,就是一件很了不起的事情。“伟大”
的程序并不是自身有什么伟大之处,而正是组合了许多平凡普通的程序而出色完成了它应该做到的事情。业务层开发也会遇到一些很有挑战性的问题, 不要回避,尽力去解决。 做好该做的事情, 你将赢得荣誉。
没有拿得出手的程序 ?
看到别人写出了有影响力的程序或软件,而自己至今尚没有拿得出手的东西; 所写程序的影响力局限在较小的范围内,未能获得广泛的使用,缺乏驱动力和激励。
解决方案: 你只是没有写出有实际用途的程序。 敏于去发现不足, 努力去改进, 总会写出令自己自豪的程序。 不一定要拿出很重量级的项目或应用。 即使一个小程序, 或许都可以做出很有益的事情。同时, 要尽可能开放给别人使用, 接纳别人的建议和改进。
想要一蹴而就 ?
很显然, 好的程序总是经过时间的打磨而成,而不是一次性就写得很好。 先写出基本可用的程序,然后逐步求精。 同时也要阅读优秀源代码, 扩展自己的见识。
苛求程序质量却又测试怠惰?
尽管尽力遵循良好的编程规范和风格, 总觉得代码性能不太好,潜藏BUG, 但又看不出。希望能够写出性能良好、可靠性、稳定性、健壮性好、可维护性佳,易用性良好的程序, 但又非一朝一夕之功。
解决方案: 这是因为缺乏良好测试导致的对自己所写代码不自信的现象。 学习一些测试技能, 系统、严格地测试自己的程序, 最终获得代码的自信。 觉得代码性能不太好? 拿出实际数据和手段来, 不要凭感觉做事。
思维不严谨 ?
不得不说,程序开发是对严谨逻辑思维的有力考验。如果思维不严谨, 很容易写出表面上能够工作实际上很容易失败的潜藏很多BUG的程序。 该如何提高思维的严谨性呢 ?
解决方案: 多多研习算法,应该是一条不错的途径。此外, 训练自己缜密、周密思考问题的能力。
期望过于理想的状态?
希望能够尽可能借鉴现有的成熟方案, 做出一致、优雅的整体解决方案。
解决方案: 持续改进和进步。
程序开发的兴趣不浓?
处于那种不惊不淡的程度吧, 毕竟, “It works” 已经不足以让人兴奋了; 期望能够写出优质易用的程序,也许追求更高的开发目标削减了开发的兴趣和乐趣。
解决方案: 可能缺乏有力的外界激励, 比如说参与到一项非常有创新性的产品开发中, 或者有重大物质奖励。 适时寻求转向。
开发方法和流程不规范 ?
有时候, 过于随意的开发方法和流程, 以及过于松散的工作计划, 会削减自己的效率、积极性和创造力; 此外, 单掌难鸣, 有影响力的产品通常是由多人协作合力完成, 浓厚开放的团队讨论氛围有利于开发活动的顺畅进行。
解决方案: 先制订相对合理的开发任务与工作计划, 再投入工作; 逐渐建立起适合自己的有效的开发流程与工作方法。
代码质量实际上是一个现象和结果。背后的原因可能有很多: 思维不严谨, 考虑问题不周到, 坏的编程习惯, 项目进度压力, 粗心, 缺乏足够的测试, 缺乏足够的驱动力和激励,对事物的深入理解不够, 心态问题等。要从问题的源头处改进,而不是从现象上出现一个解决一个。
重温下 《Unix/Linux 的设计思想》 ,上面有段话吸引了我:
一个伟大的程序,如果满足条件: (1) 它必须满足实际需要; (2) 周围不存在任何了解该如何编写此程序的“专家”; (3) 没有足够时间“完美”完成任务。
第一点是最必要的却常常做的不充分或过犹不及; 第二三点则说明, 其实不存在很理想的状态,没有充足的时间用来思考一个非常优雅的解决方案, 也不一定有现成的成熟方案。
毕竟,一个程序就只是一个程序而已。做好该做的事情,逐步变得更好。 至于是否伟大, 究竟做了什么, 可能只是外在的表现和光环而已。踏踏实实钻研, 踏踏实实写好能做好事的程序,做有趣事情的程序, 精益求精但不过分苛求。 懂得享受一下生活日子, 这不挺好吗 ?
相关文章推荐
- 反思: 为什么我连普通的程序都写不好?
- 一、填空:阅读下列程序说明和程序,在可选答案中,挑选一个正确答案。填补(1) (2) (3) (4)处空白,并注释说明为什么
- 由程序引发的反思
- 使用gitbash将写好的普通java程序上传到github仓库中
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 为什么做程序的总那么累呢?
- 为什么只要1000元的小程序,却不是骗局!
- 为什么添加/删除程序中的中文变成英文的了
- 为什么添加/删除程序中的中文变成英文的了
- 为什么要配置环境变量?桌面快捷方式为何能启动程序?
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- register_globals使用详解 为什么我的表单无法传递数据?为什么我的程序无法得到传递过来的变量?
- 程序从片内地址0开始,但为什么链接地址又设0x30000000,那不就从0x30000000开始了,反汇编可以看到不是从0开始的
- 程序员,为什么写不好一份简历?
- 为什么有的用EVC建的EXE程序,在PC机上看不到EXE程序属性页的版权信息呢?
- 体验一下多线程和普通的程序的区别
- JAVA 单例双重检查(double check)为什么不好用
- 为什么非正常关机方式会对电脑不好?
- 论我为什么想去实习--研究僧之反思