这里我用聪明、懒惰和程序员这三个词。我说的这些话的意思是:Programmer:精力充沛,专注于用代码解决现实世界的问题不是梦想家,那些永远不想做的人Smart:可以深思熟虑地思考问题(不是那些耍花样的人)Laziness:喜欢懒惰-loading在编程中,指的是拖延写代码的时间(而不是无事可做的人)。正确的软件开发应该是惰性开发,也叫耐心开发;这种开发方式的表现是,程序员在真正编写代码之前,要花大量时间思考所有可能的解决方案和途径。这可以看作是拖延写代码,在没有完全理解问题的情况下永远不会写代码。先把问题理解清楚,保证要写的代码能真正解决问题,这样会避免后面写很多没用的代码。这里说的是先把问题弄清楚,表现在:真正了解需求,让产品部(业务分析部)搞清楚自己真正需要什么。这些部门通常没有给足够的时间来组织需求。他们往往不请教问题领域的专家,而是听从领导的意见。他们通常不能提供一致或完整的需求意见。知道需要与团队中的其他程序员或其他团队的程序员进行哪些交互,以及如何进行交互。这包括:使用白板交流和绘制流程图(UML或Visio)你需要花很多时间研究以确保需求是真实的,来做工作让你和你的同事用共同的语言语义交流.但是,程序员喜欢马上就去编程,喜欢在电脑前不停地敲代码。在真正的软件开发中,只有5%的开发时间是有效率的(可以参考《程序员开发效率悖论》)。如果你看到一个程序员100%的时间都盯着屏幕,那么你就是在看最差的程序员。如果一个程序员总是在电脑前编码,这绝对是一个不好的迹象。一个有效的程序员总是检查他对需求的理解,确保他们的代码和需求是同步的。高效的程序员经常与产品经理/业务人员交流,你经常可以看到他们使用白板与同事和架构师交流。程序员的经验和经验是用来提高开发效率的。最好的程序员:他们花更多的时间思考代码,而花更少的时间写代码。对问题的透彻理解可以更快地调试代码。深思熟虑的代码更快代码更短程序员在心理上喜欢他们的代码。糟糕的程序员不喜欢修改已经写好的糟糕代码。与其优化自己的代码,他们更愿意简单地添加更多代码来弥补以前的不足。更糟糕的是,他们喜欢把责任推给别人。到头来,一堆不能用的代码接着又是一堆不能用的代码,整个系统就变得bug百出,极度不稳定。好的程序员经常写出糟糕的代码,但他们可以看到哪些代码需要优化,哪些需要重写。好程序员和坏程序员的区别在于对待问题代码的态度。最好的程序员的做法是:如果代码整体不错,那就重构代码。如果代码整体有问题,再重新编码当代码中有需要优化或需要重写的地方时,拖得越久,你就越难回去修复这些问题.因为依赖这些代码的程序会越来越多,越来越深,所以当你优化这些代码的时候,相关的依赖也需要修改。当问题累积时,就不可能轻松优化/重建代码。而使用继续添加代码的方式来弥补之前的代码问题,会让系统越来越不稳定。脑子里想不清楚,那就偷懒,推迟写代码的时间。英文原文:ProductiveDevelopersareSmartandLazy翻译来源:http://www.vaikan.com/productive-developers-smart-lazy/
