注重是小的程序员的特征是什么?我们觉得是他们处理问题,寻求解决方案时的态度,风格,哲学。他们能够越出直接的问题去思考,总是设法把问题放在更大的语境中,总是设法主义更大的图景。毕竟,没有这样的更大的语境,你又怎能注重实效?你又怎能做出明智的妥协和有见识的决策?
他们成功的另一关键是他们对他们所做的每件事情负责,关于这一点,我们将在”我的源码让猫吃了“中加以讨论。因为负责,注重实效的程序员不会坐视他们项目土崩瓦解。在”软件的熵“中,我们将告诉你怎样使你的项目保持整洁。
大多数人发现自己很难接受变化,有时是处于好的理由,有时只是因为固有的惰性,在”石头汤与煮青蛙“中,我们将考察一种促成变化的策略,并(出于对平衡的兴趣)讲述一个忽视渐变危险的两栖动物的警示传说。
理解你的工作的语境的好处之一是,了解你的软件必须有多好变得容易了。有时接近完美是唯一的选择,但常常会涉及各种权衡,我们将在”足够好的软件“中探究这一问题
当然,你需要拥有广泛的知识和经验基础才能赢得一切,学习是一个持续不断的过程。在”你的知识资产“中,我们将讨论一些策略,让你开足马力
最后,我们没有人生活在真空中,我们都要花大量时间与他人打交道,在”交流“中列出了能让我们更好地做到这一点的几种途径。
注重实效的编程源于注重实效的思考的哲学。
@我的源码被猫吃了
在所有弱点中,最大的弱点就是害怕暴露弱点
依据你的职业发展,你的项目和你每天的工作,为你自己和你的行为负责这样一种观念,是注重实效的哲学的一块基石。注重实效的程序员对他或她自己的职业生涯负责,并且不害怕承认物质或者错误,这肯定并非是编程最令人愉悦的方面,但它肯定是会发生——即使是最好的项目中,尽管有彻底的测试,良好的文档及足够的自动化,事情还是会出错。交付完了,出现了未曾预见的技术问题。
发生这样的事情,我们要设法尽可能职业化地处理它们,这意味着诚实和坦率,我们可以为我们的能力自豪,但对于我们的缺点——还有我们的无知和我们的错误——我们必须诚实、
负责
责任是你主动担负的东西,你承诺确保某件事情正确完成,但你不一定能直接控制事情的每一个方面,除了尽你所能外,你必须分析风险是否超出了你的控制。对于不可能做到的事情或者是风险太大的事情,你有权不去负责,你必须基于自己的道德准则和判断做出决定。
如果你确实同意要为某个结果负责,你就应切实负起责任,当你犯错误或者是判断失误时,诚实的承认它,并设法给出各种选择。不要责备别人或者别的东西,或者是拼凑接口,不要把所有问题都归咎于供应商,编程语言,管理部门,或者是你的同事。也许他们全体或者是某几方在其中扮演了某种角色,但你可以选择踢狗解决方案,而非学找借口。
如果存在供应商不能按时供货的风险,你应该预先制定一份应急计划,如果磁盘垮了——带走了你的所有源码——而你没有备份,呢是你的错,告诉你的老板”我的源码让猫吃了“也无法改变这一点、
提供各种选择,不要找蹩脚的借口。
在你走向任何人,告诉弹门为何某事做不到,为何耽搁,为何出问题之前,先停下来,听一听你心里的声音。与你的显示器上的橡皮鸭交谈,或者是与猫交谈。你的辩解听起来合理,还是愚蠢?在你老板听来又是怎样?
在你的头脑里把谈话预演一遍,其他人可能会说什么?他们是否会问:“你试了这个了吗?”或者是“你没有考虑那个吗?”你将怎样回答?在你去告诉他们坏消息之前,是否还有其他你可以试一试的方法?有时,你其实知道他们会说什么,所以还是不要给他们添麻烦吧!
要提供各种选择而不是找借口,不要说事情做不到,要说明能够做什么来挽回局面。必须把代码扔掉?给他们讲授重构的价值。你要花时间建立原型,以确定最好的继续前进的方式,你要引入更好的测试,或者自动化,以防止问题再度发生?又或许你需要额外的资源。不要害怕提出要求,也不要害怕承认你需要帮助。
在你大声说出它们之前,先设法把蹩脚的接口清除出去,如果你必须说,就先对你的猫说。
如果有人——比如银行柜台职员,汽车修理工或者店员——对你说蹩脚的接口,你会怎样反应?结果你会怎样想他们和他们的公司?