在第一章中,我见到最多的词就是“注重失效的程序员“,显然在作者心中,一位注重实效的程序员才是一位合格的程序员,老师也把一句话常提在嘴边——编程时把复杂问题简单化,再把简单问题解决。这两者也是不谋而合的,我心中也认为编程是用尽可能简单的代码去解决复杂的问题。
书中提到负责一说,我对此十分赞同,当我们同意为某件事情负责,我们就应该切实负起责任。当我们犯错、失误的时候,我们要用于承认它,而不是畏畏缩缩抑或是将这些衍生的问题归咎给身边其他人,我们应该重新寻找解决方案,而非借口推脱。
书中提到“软件的熵“,这个物理学上的概念在作者的笔下与编程产生纠缠。书中说,软件会因为软件开发时的各种因素而发生”软件腐烂“;例如开发者在开发过程不断微妙变化的心理。尽管拥有最好的计划、最好的开发者,项目仍可能遭遇毁灭和衰败,而不那么号的项目即使遇到巨大的困难和接连而来的挫折却能取得成功。作者用一个著名的”破窗效应“作为这差异的解释:一个好的项目会因一点点瑕疵、漏洞而逐渐溃烂;而一个漏洞百出的项目会因为开发者坚持不懈的修缮而取得成功。项目开发并非一蹴而就的,我们要不断对其进行完善,要坚持不屑的修补代码中的漏洞。
石头汤与煮青蛙是一个很好的寓言,在士兵的领导下,一碗普普通通的石头汤,在村民的贡献下成了一道佳肴。
贫穷的村子里必然时不富裕的村民。士兵什么也没付出,只是动动嘴皮子就完成了一个成功的项目。这是多赢。
一个好的领导者,会提出最合理的诉求来使项目更好的实现,但是另一方面,把注意力完全集中在一个地方,项目与最初的模样就会大相径庭,最终偏离航线,迷失在海洋里。
一个足够好的软件,应当满足用户对其的所有需求,一个好的软件应当在规定的时间交付,而不是无视原先拟定的约定,一个好的软件不应该盲目的扩张它的代码,它的系统应当恰好满足用户所提的要求,而不是被开发者不断雕琢,精化,润饰它的代码,从而实现更多的功能。这样的软件算不上一个好软件,这样的编程者也不是一个有职业素养的开发者。
我们应该注重自己的知识技能,要坚持投资自己,坚持学习新的东西;同时我们也要想学习不同的东西,拓宽自己的知识面,掌握的技术越多就越能应对客户的要求;编程的行业是不断变化的行业,昨天冷藏许久的知识说不定明天就成了最炙手可热的解决方案,我们不能忽视那些现在相对冷门的技术,并且需要时刻温习。
这位先生同样重视交流,我们的行业并不是完全与冰冷死板的代码打交道,与人打交道也是至关重要的,与客户、与老板、与同事的优质交流能让我们的工作速度、工作效率更高,也能更好的开发项目。