注重实效的程序员——哲学篇
注重实效的程序员的特征:
- 早期的采纳者/快速的改编者
- 好奇
- 批判的思考者
- 有现实感
- 多才多艺
注重实现的程序员的特征是他们在处理问题、寻求解决方案时的态度、风格、哲学。他们成功 另一关键是他们对他们所做的每件事情负责。大多数人都很难接受变化,有时是出于好的理由,有时只是因为固有的惰性。理解你的工作的语境的好处之一是,了解你的软件必须有多好变得更容易了。有时接近完美是唯一的选择,但常常会涉及各种权衡。当然,你需要拥有广泛的知识和经验基础才能赢得这一切。学习是一个持续不断的过程。最后,我们没有生活在真空中,我们都要花大量的时间与他人打交道。注重实效的编程源于注重实效的思考的哲学。
在所有弱点中,最大的弱点就是害怕暴露弱点。——J.B. Bossuet
提示1:
Care about your craft
关心你的技艺
提示2:
Think! About your work
思考!你的工作
提示3:
Provide options, Don't make lame excuses
提供各种选择,不要找蹩脚的借口
为你自己的行为负责这样一种观念,是注重实效的哲学的一块基石。诚实和坦率。我们可以为我们的能力自豪,但对于我们的缺点——还有我们的无知和我们的错误——我们必须诚实。
要提供各种选择,而不是找借口。不要说事情做不到,要说明能够做什么来挽回局面。不要好怕提出要求,也不要害怕承认你需要帮助。
提示4:
Don't live with broken window
不要容忍破窗户
尽管软件开发几乎不受任何物理定律的约束,熵(entropy)对我们的影响却很大。当软件中的无序增长时,程序员们称之为“软件腐烂”(software rot)。有许多因素可以促生软件腐烂。其中最重要的一个似乎时开发项目时的心理(或文化)。
不要留着“破窗户”(低劣的设计、错误的决策、或是糟糕的代码)不修。发现一个就修一个。如果没有足够的时间进行适当的修理,或许你可以把出问题的代码放入注释,或是显示“未实现”消息,或是用虚设的数据加以替代。
一扇破窗户——一段设计低劣的代码、团队必须在整个项目开发过程中加以忍受的一项糟糕的管理决策——就足以使项目衰败。按照同样的道理,如果你发现你所在团队和项目的代码十分漂流——编写整洁、设计良好,并且很优雅——你就很可能格外注意不去把它弄脏。
提示5:
Be a catalyst for change
做变化的催化剂
提示6:
Remember the big picture
记住大图景
不要像温水煮青蛙一样。留心大图景。要持续不断地观察周围发生的事情,而不只是你自己在做的事情。
提示7:
Make quality a requirements issue
使质量成为需求问题
你所制作的系统的范围和质量应该作为系统需求的一部分规定下来。
在某些方面,编程就像绘画。艺术家们会告诉你,如果你不懂得应何时止步,所有的辛苦劳作就会遭到毁坏。如果你一层又一层、细节复细节地叠加,绘画就会迷失在绘制之中。进行前进,让你的代码凭着自己的质量站立一会儿。它或许不完美,但不用担心:它不可能完美。
提示8:
Invest regularly in your knowledge portfolio
定期为你的知识资产投资
知识上的投资总能得到最好的回报 ——本杰明 富兰克林
你的知识和经验时你最重要的职业财富。遗憾的是,它们是有时效的资产。随着新技术、语言及环境的出现,你的知识会变得过时。不断变化的市场驱动力也许会使你的经验变得陈旧或无关紧要。
经营你的资产:
- 定期投资
- 多元化 你知道的不同的事情越多,你就越有价值
- 管理风险
- 底买高卖
- 重新评估和平衡
目标:
- 每年至少学习一种新语言
- 每季度阅读一本技术书籍
- 也要阅读非技术书籍
- 上课
- 参加本地用户组织
- 试验不同的环境
- 跟上潮流
- 上网
持续投入十分重要。学习的过程将扩展你的思维,使你向着新的可能性和新的做事方式拓展。设法把你学到的东西应用到你当前的项目中。即使你的项目没有使用该技术,你或许也能借鉴一些想法。所有阅读和研究都需要时间,而时间已经很短缺。所以你需要预先规划。让自己在空闲的片刻时间里总有东西可读。
提示9:
Critically analyze what your read and hear
批判地分析你读到的和听到的
提示10:
It's both what you say and the way you say it
你说什么和你怎么说同样重要
没有有效的交流,一个好的想法就只是一个无人关心的孤儿。作为开发者,我们必须在许多层面上进行交流。在工作中使用的更为正式的交流方式中,最困难的部分也许是确切地弄清楚你想要说什么。规划你想要说的东西。写出大纲。然后问自己:这是否讲清楚了我要说的所有内容?提炼它,指导确实如此为止。
只有当你时在传递信息时,你才是在交流。为此,你需要了解你的听众的需要、兴趣、能力。未来了解你的听众需要听到什么,你需要弄清楚他们的“轻重缓急”是什么。
调整你的交流风格,让其适应你的听众。反馈也是交流的一种形式。让文档美观。你的主意很重要。它们应该以美观的方式传递给你的听众。太多的程序员在制作书面文档时只关心内容。这时一个错误。与制作文档的过程相比,我们制作出的文档最后并没有那么重要。让你的肚子参与文档的早期草稿的制作,获取他们的反馈,并汲取他们的智慧。
如果你想要大家听你说话,你必须使用一种方法:听他们说话。即使你掌握着全部信息,即使那是一个正式会议。鼓励大家通过提问来交谈,或是让他们总结你告诉他们的东西。把会议变成对话,你将能更有效地阐明你的观点。
交流越有效,你就越有影响力。
了解听众:
- 你想让他们学到什么?
- 他们对你讲的什么感兴趣?
- 他们有多富有经验?
- 他们想要多少细节?
- 你想要让谁拥有这些信息?
- 你如何促使他们听你说好?