Archive

Posts Tagged ‘修炼’

程序员修炼之道:从小工到专家

June 29th, 2010 cashplk No comments
71
注重实效的程序员有哪些特征:
1,早期的采纳者/快速的改编者。具有技术和技术上的直觉,喜欢试验各种事物,给你一样新东西,很快就能把握它,并把它与你的知识的其它部分结合在一起。
2,好奇。
3,批判的思考者。
4,有现实感。会设法理解你面临的每个问题的内在本质。
5,多才多艺。尽力熟悉广泛的技术和环境,并且努力工作,以与各种新发展并肩前行。尽管你现在的工作也许只要求你成为某方面的专才,你却总是能够转向新的领域和新的挑战。

第一章 注重实效的哲学

注重实效的程序员的特征是什么? 能够越出直接的问题去思考,总是设法把问题放在更大的语境中,总是设法注意更大的图景。
注重实效的编程源于注重实效的思考的哲学。本章将为这种哲学设立基础。

我的源码让猫给吃了

注重实效的程序员对他自己的职业生涯负责,并且不害怕无知或错误,这肯定并非是编程最令人愉悦的方面,但它肯定会发生。
发生这样的事情,我们要设法尽可能职业地处理它们,这意味着诚实和坦率。我们可以为我们的能力自豪,但对于我们的缺点--还有我们的无知和错误--我们必须诚实。

软件的熵
破窗理论

石头汤与煮青蛙

足够好的软件

你的知识资产
经营你的资产
1,定期投资。
2,多元化,知道的不同的事情越多,就越有价值。
3,管理风险,
4,低买高卖,
5,重新评估和平衡

目标:
1,每年至少学习一种新语言
2,每季度阅读一本技术书籍
3,也要阅读非技术书籍
4,上课
5,参加本地用户组织
6,试验不同的环境
7,跟上潮流
8,上网

挑战:
1,这周就开始学习一种新语言。
2,开始阅读一本新书
3,出去和你的当前项目无关的人,或是其他公司的人谈谈技术。

第二章 注重实效的途径
重复的危害
重复是怎样发生的:
1,强加的重复,
2,无意的重复,
3,无耐性的重复,
4,开发者之间的重复,
第三章 基本工具
强力编辑
选一种编辑器,彻底了解它,并将其用户所有的编辑任务。如果你用一种编辑器进行所有的文本编辑活动,你就不必停下来思考怎样完成文本操作:必需的键击将成为本能反应。编辑器将成为你双手的延伸;键会在划过文本和思想时歌唱起来,这就是我们的目标。

文本操作

第四章 注重实效的偏执

何时使用异常
什么是异常情况
异常很少应作为程序的正常流程的一部分使用;异常应保留给意外事件。

第五章 弯曲,或折断

元程序设计
动态配置: 要配置,不要集成。
元数据驱动的应用:
将抽象放进代码,细节放进元数据。

好处:
迫使你解除你的设计的耦合,从而带来更灵活,可适应性更好的程序。
迫使你通过推迟细节处理,创建更健壮,更抽象的设计 -- 完全推迟到程序之外。
无需重新编译应用,你就可以对其进行定制。

编写单元测试
通过使测试代码易于找到,你是在给使用你代码的开发者提供两样无价的资源:
1,一些例子,说明怎样使用你的模块的所有功能。
2,用以构建回归测试,以验证未来对代码的任何改动是否正确的一种手段。
使用测试装备
不管你决定采用的技术是什么,测试装备都应该具有以下功能:
1.用以指定设置与清理的标准途径。
2.用以选择个别或所有可用测试的方法。
3.分析输出是否是预期(或意外)结果的手段。
4.标准化的故障报告形式。

第七章 在项目开始之前
需求之坑
完美,不是在没有什么需要增加,而是在没有什么需要去掉时达到的。

Categories: Reading Tags: , ,

高效程序员的45个习惯 读后感

March 28th, 2010 cashplk No comments

第一章 敏捷 -- 高效软件开发之道

敏捷开发宣言:

1,个体和交互胜过过程和工具

2,可工作的软件胜过面面俱到的文档

3,客户协作胜过合同谈判

4,响应变化胜过遵循计划

敏捷方法可以快速地响应变化,它强调团队合作,人们专注于具体可行地目标(实现真正可以工作的软件),这就是敏捷的精神。

它要求团队中的每一个人(包括与团队合作的人)都具备职业精神,并积极地期望项目能够获得成功,它并不要求所有人都是有经验的专业人员,但必须具有专业的工作态度 --每个人都希望尽最大可能做好自己的工作。

精辟概括:

敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。

敏捷工具箱

1,Wiki:用来协作,实现知识共享。

2,版本控制:

3,单元测试:用代码来检查代码。

4,自动构建:全自动化,持续集成。

第二章 态度决定一切

专业的态度应该着眼于项目和团队的积极结果,关注个人和团队的成长,围绕最后的成功展开工作。集中精力,你是为做事而工作。

实行代码复审,不仅有助于代码更好理解,而且是发现bug最有效的方法之一。

另一种防止代码难懂的重要技术就是单元测试。帮助你很自然地把代码分层,分成很多可管理的小块,这样就得到设计更好、更清晰的代码。

第三章 学无止境

如何跟上技术变化的步伐?

1,迭代和增量式的学习。每天计划用一段时间来学习新技术,它不需要很长时间,但需要经常进行。记下那些你想学习的东西。

2,了解最新行情。最新的博客列表请参考 pragmaticprogrammer.com

3,参加本地的用户组活动。

4,参加研讨会。

5,如饥似渴地阅读。

第四章 交付用户想要的软件

提早集成,频繁集成。


第六章 敏捷编码

良好的面向对象设计原则建议:应该编写内聚的代码,要保持代码条理清晰,告知,不要询问。最后,通过设计能够根据契约进行替换的系统,可以在不确定的未来中保持代码的灵活性。

Categories: Reading Tags: , ,

cashplk的心路历程 is Digg proof thanks to caching by WP Super Cache