程序员的思维修炼:开发认知潜能的九堂课 (图灵程序设计丛书) (亨特(Andy Hunt))》
简介
本书解释了为什么软件开发是一种精神活动,思考如何解决问题,并就开发人员如何能更好地开发软件进行了评论。书中不仅给出了一些理论上的答案,同时提供了大量实践技术和窍门。
本书供各层次软件开发人员阅读。
1. 软件是在头脑中创建的
思维和概念是需要在团队(也包括付钱让我们开发软件的人)中分享和交流的。
现在我们需要研究的真正难题是团队内部和团队间的交流,甚至更困难的问题是完全陈旧的思想。没有任何项目是孤岛,软件不可能独立的创建或运行。
2. 考虑到社会各个相关团体的复杂交互影响和社会的持续变化,在我(作者)看来最重要的两项能力就是:
- 沟通能力
- 学习和思考能力
3. Only dead fish go with the flow(切忌随波逐流)
总有些人与众不同,不要盲从的听从任何建议,包括我的建议。尝试执行一些建议,再判断哪些对你有用。
需要补充的是,这不是培养你自大,自以为是,拒绝别人的建议。不要盲从的意思是,在你能虚心听取别人意见的基础上,不要盲从。
4. 德雷福斯模型的5个阶段
- 新手 novice
- 高级新手 advanced beginner
- 胜任者 competent
- 精通者 proficient practitioner
- 专家 expert
以后可以依据这个来判断自己达到了什么程度。
4.1 新手。新手需要一份指令:"当X发生时,执行Y." 当意想不到的事发生时,新手就会不知所措。
4.2 高级新手。可以独自尝试任务,但仍难以解决问题。他们想要快速解决问题,不想刨根问底。能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力。他们开始形成一些总体原则,但不是“全貌”。
Advanced beginners don't want the big picture. 高级新手不想要全局思考。
举个例子。当CEO举行全体会议展示销售预测图是,你可能看到这样的反应:许多在这方面经验较少的员工根本不予理会,以为这和他们毫不相干。
当然其实这是非常相关的,这些图标关系着你明年能否继续在这儿工作下去。你看不到这种关系,说明你层次还不够。
4.3胜任者。他们能够独立解决问题,并开始考虑如何解决新的问题--哪些他们之前没有遇到过的问题。他们的工作更多是基于谨慎的计划和过去的经验。如果没有更多经验,他们将难以确定关注哪些细节。Competents can troubleshoot. 胜任者能够解决问题。
他们是团队里的好人,既可以指导新手,也不会经常骚扰专家。
4.4精通者。精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常沮丧。
Proficient practitioners can self-correct.精通者能够自我纠正。
他们会学习他们人的经验。作为精通者,他能够阅读案例研究,倾听有关失败项目的流言蜚语,观察别人怎么做,从故事中认真学习,即使他没有亲自参与。
他们知道在什么情境下运用什么经验。能够熟练的运用软件模式。能够充分利用思考和反馈,这是一次巨大的飞跃。
4.5专家。专家是各个知识领域知识和信息的主要来源。他们总是不断地寻找更好的解决方法和方式去做事。他们有丰富的经验,可以在恰当的情境中运用这些经验。他们著书,写文章,演讲。他们是当代的巫师。据统计,专家只占总人数的1%-5%
Experts work from intuition.
专家制定规则,但是你不能强求专家去遵循他们自己制定的规则。如果让一个专家严格遵守规则,将拖累公司的生产效率至一个新手的水平。
成为一个专家大约10年时间。但好消息是如果你成为一个领域的专家,你很容易成为其他领域的专家。因为你已经掌握了获取知识的模型。