1700488350
1700488351
软件并不是在集成开发环境(IDE)或其他工具上设计出来的,它是在我们的大脑中想象和创造出来的。
1700488352
1700488353
软件是在头脑中创建的。
1700488354
1700488355
Software is created in your head.
1700488356
1700488357
思想和概念是需要在团队(也包括付钱让我们开发软件的人)中分享和交流的。我们已经在改进基础技术——程序设计语言、工具、方法上花费了很多时间,当然这也是十分必要的,但现在是我们更进一步的时候了。
1700488358
1700488359
现在我们需要研究的真正难题是团队内部和团队间的交流,甚至更困难的问题是完全陈旧的思想。没有任何项目是孤岛,软件不可能孤立地创建或者运行。
1700488360
1700488361
Frederick Brooks在他的里程碑式的文章《没有银弹》[Bro86]中提出:“软件产品处于应用、用户、规则和硬件〔2〕的合力之下。这些因素总是在不断变化,迫使软件产品也随之改变。”
1700488362
1700488363
Brooks的言论把我们推向了社会漩涡的中心。考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是:
1700488364
1700488365
□ 沟通能力;
1700488366
1700488367
□ 学习和思考能力。
1700488368
1700488369
软件行业正在逐步提高沟通能力。特别是敏捷方法(见注解栏),强调了团队成员之间、最终客户和开发团队之间的沟通交流。类似《演说之禅:职场必知的幻灯片秘技》[Rey08]这样的大众图书突然热卖,表明越来越多的人意识到简单、有效的沟通非常重要。这是个好的开始。
1700488370
1700488371
不过,提高学习和思考能力要更难一些。
1700488372
1700488373
程序员需要不断地学习——不仅仅是学习新技术,还包括应用的问题域、用户社区的奇思妙想、同事的古怪习惯、行业的八卦新闻和项目演进的重要特征,我们必须学习学习再学习,持续不断地学习,然后把学习成果应用到解决日常遇到的一切新旧问题上。
1700488374
1700488375
也许,这些听起来都相当容易,但学习能力、批判性的思考能力和创造力——所有这些扩展思维的能力,都取决于你自己。没有人教你这些东西,你必须自己学习。我们往往错误地看待老师和学生的关系:不光是老师在教,学生也要学。学习完全取决于你自己。
1700488376
1700488377
我希望本书能够帮你获得又快又强的学习能力和更实用的思考能力。
1700488378
1700488379
什么是敏捷方法
1700488380
1700488381
“敏捷方法”这个词最早出现在2001年2月的一次峰会上,与会的17个人都是软件开发行业领军人物,他们创建了各种开发方法,如极限编程、Scrum、Crystal,当然也包括我们的注重实效的编程。
1700488382
1700488383
敏捷方法在很多重要的方面都与传统的基于计划的方法不同,最显著的就是摆脱了死板的规则,丢弃了陈旧的日程表,注重实时的反馈。
1700488384
1700488385
我在本书中会经常提到敏捷方法,因为很多敏捷思想和实践都是与良好的认知习惯相融合的。
1700488386
1700488388
1.1 再提“实用”
1700488389
1700488390
从最初的《程序员修炼之道:从小工到专家》[HT00]到现在的Pragmatic系列图书,你会注意到我们一直在冠以实用(pragmatic)这个词。实用主义(pragmatism)的本质就是做对你有用的事情。
1700488391
1700488392
在开始讨论之前,请牢记:每个人都是不同的。虽然我引用的很多研究成果都已经被大部分人所沿用,但也有一些还未广为使用。我会运用大量不同的材料,既有通过对人脑的功能性核磁共振扫描证实的科学事实,又有一般概念性理论,既有荒诞故事,也有“嘿,Fred做了尝试,这对他管用”的日常生活中的例子。
1700488393
1700488394
在很多情况下,尤其是在讨论大脑时,根本的科学依据是未知的或不可知的。但你不必为此担心:如果某种方法是有效的,那么它就是实用的,我就会写入书中,供你思考。我希望这些方法中的大多数对你都有用。
1700488395
1700488396
切忌随波逐流。
1700488397
1700488398
Only dead fish go with the flow.
1700488399
[
上一页 ]
[ :1.70048835e+09 ]
[
下一页 ]