学习是一种恒久的行动

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习是一种恒久的行动——《软件开发者路线图》读后感

/s/blog_7b0f0e140100t37d.html

软件开发作为一门工程学科或者说是一门科学,是以人作为主导因素,所以根据技能水平等级可以将软件研发人员分为软件学徒、熟练工和师傅。学徒期由于是人们必经之路所以显得尤为重要,它能把掌握技能的毕生技能和毕生热情灌输给我们,它能把永远学习的热情灌输给我们,所以对于想继续深入软件研发工作、渴望获得精湛技能的我们来说,在成为卓越的开发者之前,必须历经漫漫学徒长路的磨炼。

从学徒到熟练工,再从熟练工到师傅,每一种状态的改变是渐进而非离散的。对于某些人来说完成这种转变可能需要的时间会比别人更长,甚至超过了整个职业生涯。所以为了能有效提升内在动力、加快我们的成长过程,就迫切需要导师给我们指点迷津,希望能学习到易于消化吸收的建议,并且能在需要时信手拈来。在这个时候,我有幸拜读了《软件开发者路线图》这本书,它给了我很大启发,让我重新上路。

这本书更像是一本学徒守则,它没有空洞的理论,取而代之的常见问题的一般解决办法,以此来帮助我们软件研发人员增强动机和士气,帮助我们摆脱与人有关的窘境,帮助我们做出艰难的决定。作者

自创模式语言,将每种模式分为情景分析、问题描述、解决方案、行动指南四部分,让我们自己通过比对来找准想要解决的问题并根据指南来自主制定对策。所以无论我们研发能力处于一个什么水平,无论写了多久的代码,看一看这本书都是非常好处的:经验丰富的人,可以从中领悟新诀窍,或者是投入新领域的心态;而对于经验不那么丰富的人,那每一条规则都是能立刻付诸实践的好建议。在总共三十五条模式中,我提炼出六条重要模式,这些模式应对的问题非常具有普遍性,而且我在实际工作当中已经运用,取得了比较好的结果。

一、“学习过程是交付软件的一部分”,所以毫无保留地暴露无知并且正视无知是必要条件。

无知就像草地中的光秃块,不断散播知识的种子,它就会一点点减少。本能告诉自己要掩饰自身的无知,装作通晓各种专家知识,所以许多人选择把这些秃块隐藏起来,因为它们的外观和面积让人感到难堪,遮盖他们能保持自尊不受到影响,但这只会阻碍自己的成长,并阻止完成正在进行的工作。成功的软件研发人员所拥有最重要的品质之一就是面对无知、填补未知空间的能力,他们能找出无知的领域,暴露知识空白,对他人保持诚实,并通过努力学习和寻求帮助来减少这样的领域。

我们长期处于交付软件的巨大压力下,肯定对某些需要用到的技术并不熟悉。要让队员对自己有信心,要让他人安心,应该通过自己的学习能力,而不是通过假装知道自己并不知道的东西。这样,我们

的名声将建立在学习能力上,而不是已经知道的事情上,通过能拓宽自己知识储备,将触角多点延伸到更广泛的知识领域,避免过度依赖团队中的某些成员。

二、“任何事情,除非你热爱它,否则不可能真正做好它”,我们只有通过在学习中制作质脆玩具来体验、在工作中不断实践,最终产生永恒。

我们总希望在一个可以允许犯错误的环境中,拥有较多的时间来实践自己的技能,但实际上这种理想情况很难存在于现实中,作为学徒的我们必须借助自己的资源来达到同样的效果。

在学习过程中我们要跨出自己的技能边界,通过制作质脆玩具来独立构成完整的软件项目,要刻意创建学习的机会,让玩具系统和我们学徒生活相关并且有用。比如设计并构建一套代码库系统,主要存储认为有用将来能复用的代码,并能方便自己检索。最初版本只有一个简单的用户界面,随着更多的时间投入,会不断增加更多特性,使之与众不同。在构建质脆系统必然会尝试到挫折和失败,但那只会伤害到一个人,那就是自己,但是另一方面却能更深入地理解编程语言的设计和应用。

同时我们在工作中也要进行不断地实践,但这也是会导致在工作中犯错误的原因。失败是不可避免,失败常常是学习一样东西的最好方法,我们通过尝试大胆的事情,不断反复练习,面对失败,并从失败中学习,然后再尝试,在经过这一连串周而复始的实践后最终会磨

炼自己技能,纠正自身的弱点,增强了自己的技能,使我们成长为那种面对困难也能成功的人。

三、“如果你认为一样东西有趣,你就能学到有趣的东西”,求取知识最快捷也是最有效的途径就是阅读,我们通过规划自己阅读列表,并且坚持阅读,就能从获取知识的过程中获得乐趣。

在漫漫长路上,我们总会有一段时间拥有机会阅读大量书籍,在享受阅读时无与伦比的学习体验的同时,也与领域科学发展前沿保持联系,极大拓宽我们的思路,为我们提供了富有挑战性的新思想的源泉。当然没有人能一次学完所有的东西,也没有哪种规则说学徒不可以今天学习点这个,明天学点那个,所以学习的人需要自己安排自己的课程。我们在领域入门后,开始四周观看,结果看到自己需要获取的不可思议的信息量,需要阅读的书籍数量几何级增加。这个时候就需要维护一张“阅读清单”,记下已经阅读的书,用它来跟踪打算阅读的书。这张清单能反应自身阅读习性的机制,可以在自己选择的学习资料中逐渐发现一些模式、趋势和缺口,更好的决定下一步读什么;同时通过公开阅读信息,使其他人也能为自己阅读提供建议,帮助自己合理调整阅读顺序,有时候时间的选择会极大影响对一本书的体验。

《软件开发者路线图》的意义在于以常识性的解决模式为核心,它可以不只针对软件研发者,同样硬件研发、架构设计、软件测试、数据库设计、UI设计等都同样适用,尤其适合把这种经验从一种职业带到另一种职业的情况。我根据此书介绍的模式进行积极的尝试,依

据实际情况对照模式的情景分析确定基调,对照问题描述进行比对,然后确定套用何种模式,从解决方案中找到应对之策,最后借鉴行动指南的参考付诸实践。

当我初涉软件系统架构设计领域,感觉不知所措,只知道软件架构是很重要的,但是它到底是个什么东西,如何指导开发,如何设计,甚至是如何读懂都很茫然。于是我对照书中暴露无知模式,保持一种不知道的姿态,不掩饰自己的无知,放下自尊系上的“白色腰带”,在未知列表填入自己不甚了然的五件事情:什么是软件系统架构?软件系统架构到底针对哪些涉众?如何做到需求进,架构出?软件架构如何落地?软件架构设计需要哪些领域知识?然后采用正视无知模式针对暴露无知模式中产生的未知列表中列出的项目,努力学习其中的每一项,每了解一种就把它从列表中划掉,而将由此产生更多需要掌握的知识加入到列表中。包括要掌握所有的设计模式、数据的存储方式、进程线程知识等,保证不断更新未知列表。它使我知道正处在正确的位置,证明自己不断的进步,表明我正在成长。

阅读大师的著作是自我提高最有效的途径,在架构领域中有很多鼻祖级的导师包括Ivar Jacobson,Martin Fowler,Booch,Woods Mary Shaw,Bass,他们的著作都是经久不衰的名作,而且能在阅读他们的著作时获得一种享受。但是随着需要阅读的书籍不断增加,感觉很难全部读完,于是我参照阅读列表模式,把已经阅读、正在阅读和准备阅读的书籍纳入到阅读列表中公开放到博客中,这样不时会有有经验的同行对我的阅读次序进行建议,告诉我在读Len Bass《软件架构实

相关文档
最新文档