《程序员的修炼之道:从小工到专家》Andrew Hunt ,David Thomas 著,
Ward Cunningham 作序,同样为《软件开发者路线图:从学徒到高手》作序
源码下载地址:http://www.pragmaticprogrammer.com/
邮箱:ppbook@pragmaticprogrammer.com
一、注重实效的哲学
注重实效的程序员的特征:处理问题、寻求解决方案的态度、风格、哲学。他们能够越出直接的问题去思考,总是设法把问题放在更大的预警中,总是设法主意更大的图景。他们成功的另一关键是他们对他们所做的每件事情负责。
1. 我的源码让猫给吃了
“所有的弱点中,最大的弱点就是害怕暴露弱点”
依据你的职业发展、你的项目和你每天的工作,为你自己和你的行为负责这样一种观念,是注重实效的哲学的一块基石。
对我们的缺点、无知和错误,我们必须诚实。当你犯错误时、或是判断失误时,诚实的承认它,病设法给出各种选择。提供解决方案,而非寻找借口。(应急计划、备份等)
提示:提供各种选择,不要找蹩脚的借口。
不要说事情办不到,要说明能够做什么来挽回局面。
2. 软件的熵
提示:不要容忍破窗户。“破窗户”:低劣的设计,错误的决策,或是糟糕的代码。
发现一个就修一个,或采取行动防止进一步的损坏,并说明情势处在你的控制之下。
挑战:
l 通过调查你周边的计算“环境”,帮助增强你的团队的能力。选择两或三扇“破窗户”,并与你的同事讨论问题何在,以及怎样修理它们。
l 你能否说出某扇窗户是何时破的?你的反应时什么?如果它是他人的决策所致,或者是管理部门的指示,你能做些什么?
3. 石头汤与煮青蛙
人们发现,参与正在发生的成功要更容易。让他们瞥见未来,你就能让它们聚集在你周围。
提示:做变化的催化剂。
提示:记住大图景。
不要像青蛙一样,留心大图景,要持续不断地观察周围发生的事情,而不只是你自己在做的事情。
4. 足够好的软件
让你的用户参与权衡何时已足够好。
提示:使质量成为需求问题。
许多用户宁愿在今天用上有一些“毛边”的软件,也不愿等待一年后的多媒体版本。让他们及早使用,他们的反馈常常会把你引向更好的额最终解决方案。
知道何时止步,编程就像绘画,需要不时后退一步,用批判的眼光观察你的作品。常常,你会扔掉画布,重新再来。
5. 你的知识资产
知识上的投资总能得到最好的回报。
知识和经验是有时效的资产(expiring asset)。
管理知识资产:与管理金融资产非常相似
l 严肃的投资者定期投资-作为习惯
定期为你的知识资产投资,即使投资量很小,形成习惯。
l 多元化是长期成功的关键
你知道的不同的事情越多,你就越有价值。作为底线,你需要知道你目前作用的特定技术的各种特性。你掌握的技术越多,你就越能更好地进行调整,赶上变化。
l 聪明的投资者在保守的投资和高风险、高回报的投资之间平衡他们的资产
不要把你所有的技术鸡蛋放在一个篮子里。
l 投资者设法低买高卖,以获取最大的回报
在新兴的技术流行之前学习它。
l 应周期性地重新评估和平衡资产
要在职业生涯中获得成功,你必须运用同样的知道方针管理你的知识资产。
提示:定期为你的知识资产投资。
目标:
l 每年至少学习一种新语言。
不同语言以不同的方式解决相同的问题,通过学习若干不同的方法,可以帮助你拓宽你的思维,并避免墨守成规。
l 每季度阅读一本技术书籍
在你掌握了正在使用的技术之后,扩宽范围,阅读一些与你的项目无关的书籍。
l 也要阅读非技术书籍
l 上课
在本地的学院或大学,或是将要来临的下一次会展上寻找有趣的课程。
l 参加本地用户组织
主动参与,打听一下公司以外的人都在做什么。
l 试验不同的环境
Windows unix makefile IDE
l 跟上潮流
订阅商务杂志和其他期刊,选择所涵盖的技术与你当前的项目不同的刊物。
l 上网
了解新语言或其他新技术的各种特性,了解其他人的相关经验,了解他们使用的特定行话等,新闻组。
批判的思考
批判的思考你读到的和听到的。
挑战:
这周就开始学习一种新语言,总在用C++? 试试Smalltalk或Squeak,在用Java? 试试Eiffel。
l 开始阅读一本新书,如果你在进行非常详细的实现和编码,就阅读关于设计和架构的书,如果你在进行高级设计,就阅读关于编码技术的书。
l 出去和你当前项目无关的人、或是其他公司的人谈谈技术,在你们公司的自助餐厅里结识其他人,或是在本地用户组织聚会时寻找兴趣相投的人。
6. 交流
知道你想要说什么。交流前,简略记下你想要交流的想法,并准本好几种把他们讲清楚的策略。
了解你的听众。
选择时机。为了了解你的听众需要听到什么,你需要弄清楚他们的“轻重缓急”是什么。
选择风格。调整你的交流风格,让其适应你的听众。
让文档美观。
让听众参与。让你的读者参与文档的早期草稿的制作,获取他们的反馈,并汲取他们的智慧,讲建立良好的工作关系,制作出更好的文档。
做倾听者。
回复他人。你说什么和你怎么说同样重要。