软件开发者路线图:从学徒到高手
基本信息
- 作者: Dave H.Hoover Adewale Oshineye [作译者介绍]
- 译者: 王江平
- 出版社:机械工业出版社
- ISBN:9787111310068
- 上架时间:2010-9-2
- 出版日期:2010 年8月
- 开本:16开
- 页码:185
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > 综合 > 程序(设计)理论
编辑推荐
Russ Miles,OpenCredo CEO 力荐,称其为了不起的作品!
书中的模式更加完整,而且互相关联,更加有助于读者理解
推荐阅读
内容简介回到顶部↑
作为一名软件开发者,你在奋力推进自己的职业生涯吗?面对今天日新月异和不断拓展的技术,取得成功需要的不仅仅是技术专长。为了增强专业性,你还需要一些软技能以及高效的学习技能。本书的全部内容都是关于如何修炼这些技能的。两位作者dave hoover和adewale oshineye给出了数十种行为模式,来帮你提高主要的技能。
本书中的模式凝结了多年的调查研究、无数次的访谈以及来自o’reilly在线论坛的反馈,可以解决程序员、管理员和设计者每天都会面对的困难情形。本书介绍的不只是经济方面的成功,学徒模式还把软件开发看成一种自我实现的途径。读一读这本书吧,它会帮你充分利用好自己的生命和职业生涯。
厌倦了自己的工作?去找一个玩具项目来帮你重拾解决问题的乐趣吧,这叫“培养激情”。
感觉要被新知识淹没了?做点以前做过的事情,重新探索一下自己熟悉的领域,然后通过“以退为进”再次前进。
学习停滞了?那就去寻找一支由富有经验和才能的开发者组成的团队,暂时呆在里面“只求最差”。
本书中的模式凝结了多年的调查研究、无数次的访谈以及来自o’reilly在线论坛的反馈,可以解决程序员、管理员和设计者每天都会面对的困难情形。本书介绍的不只是经济方面的成功,学徒模式还把软件开发看成一种自我实现的途径。读一读这本书吧,它会帮你充分利用好自己的生命和职业生涯。
厌倦了自己的工作?去找一个玩具项目来帮你重拾解决问题的乐趣吧,这叫“培养激情”。
感觉要被新知识淹没了?做点以前做过的事情,重新探索一下自己熟悉的领域,然后通过“以退为进”再次前进。
学习停滞了?那就去寻找一支由富有经验和才能的开发者组成的团队,暂时呆在里面“只求最差”。
作译者回到顶部↑
本书提供作译者介绍
Dave H. Hoover:Obtiva首席技师,喜欢在开发软件的同时培养软件开发者,他的专长是向企业家们交付项目。
Adewale Oshineye:软件工程师,从事过包括电子零售商销售网点系统、投资银行交易系统在内的各种大型项目开发。
.. << 查看详细
Adewale Oshineye:软件工程师,从事过包括电子零售商销售网点系统、投资银行交易系统在内的各种大型项目开发。
.. << 查看详细
目录回到顶部↑
序
前言
软件工艺宣言
第1章 绪论
什么是软件技能
学徒期是什么
学徒模式是什么
模式来自哪里
下一步做什么
第2章 空杯心态
入门语言
白色腰带
释放激情
具体技能
暴露无知
正视无知
深水区域
以退为进
总结
前言回到顶部↑
不知而不知其不知者,愚者也——避之!
不知而知其不知者,惑者也——授之!
知之而不知其知之者,寐者也——醒之!
知之而知其知之者,觉者也——从之!
——Isabel Burton(1831—1896 )女士在
《The Life of Captain Sir Richard F. Burton 》
(Richard F. Burton 上尉的一生)
一书中引用的阿拉伯谚语
本书目标
缺少经验的软件开发者常常面对进退两难的境地。为分享摆脱这类窘境的方法,我们写了这本书。我们指的不是技术上的窘境;本书中你不会找到任何Java 设计模式或者Ruby on Rails 诀窍。相反,我们所致力于解决的窘境是跟人有关的,是关于动机和士气的。作为专业软件开发领域的新人,你会面对一些艰难的决定,本书将帮助你做出这些决定。
读者对象
本书写给那些对软件开发有过一些体验并立志成为软件开发高手的人。你可能是一名Web 应用开发者,或者是一名医疗设备程序员,或者正在为一家金融机构开发交易应用。你也可能刚从中学或大学毕业,并认为件就是你的未来。
尽管本书是写给新人的,经验丰富的开发者仍可从本书内容中受益。有过几年开发经验的人,当从书中找到自己曾经面临过的窘境时,会不住地点头,而且还可能获得新的感悟,或至少获得一个新的词汇,用于描述他们自己使用或者建议给同行使用的方案。即使拥有十几年或者更长时间开发经验的人,特别是那些正在努力把握职业航向的人,也将会找到一些灵感和视角,用来抵御晋升到管理职位的诱惑。
写作过程
本书的构思始于2005 年初,Stickyminds.com 请Dave 写关于软件工艺(Software Craftsmanship )的专栏。那时Dave 认为自己是个(有经验的)学徒(apprentice ),唯一让他写起来感觉舒服的主题就是学徒期(apprenticeship )。这使他开始考虑关于这个主题写些什么更好。大约就在那时,Dave 读到一篇由软件开发者Chris Morris 发表的网志注1,其中提到了吉他手Pat Metheny ,而“只求最差”这一概念成了模式语言的种子。这粒种子很快从Dave 的网志注2成长为Dave 用来组织最初一些模式的个人wiki 。最初的一些模式就是从Dave 到那时(2000—2005) 的职业生涯中提取出来的。
Dave 知道,这些所谓的模式不能真正称为模式,除非它们确实是常见问题的一般解决办法。他开始通过三种方式从同行那里寻求反馈。第一,他开始在自己的网站上公开发表这些模式,通过公众点评的方式寻求反馈。第二,他开始访谈一些软件开发领域的思想领袖(主要通过电子邮件),并获得他们对最初几种模式的看法。第三,也是最重要的一种,Dave 开始访谈一些经验较少的从业者,用他们新近的经验来检验这些模式。这些经验较少的从业者们还把一些Dave 不曾遇到的或者在他的经验中不曾觉察到的模式介绍给他。就在这些关于学徒期的访问中Dave 访问了Ade ,经过双方同意,Ade 加入到这个项目中并成为一名合著者。
注1:
http://clabs.org/blogki/index.cgi?page=/TheArts/BeTheWorst.
注2:
Red Squirrel Reflections ( 红松鼠沉思录), 参见:http://redsquirrel.com/cgibin/dave 。
不知而知其不知者,惑者也——授之!
知之而不知其知之者,寐者也——醒之!
知之而知其知之者,觉者也——从之!
——Isabel Burton(1831—1896 )女士在
《The Life of Captain Sir Richard F. Burton 》
(Richard F. Burton 上尉的一生)
一书中引用的阿拉伯谚语
本书目标
缺少经验的软件开发者常常面对进退两难的境地。为分享摆脱这类窘境的方法,我们写了这本书。我们指的不是技术上的窘境;本书中你不会找到任何Java 设计模式或者Ruby on Rails 诀窍。相反,我们所致力于解决的窘境是跟人有关的,是关于动机和士气的。作为专业软件开发领域的新人,你会面对一些艰难的决定,本书将帮助你做出这些决定。
读者对象
本书写给那些对软件开发有过一些体验并立志成为软件开发高手的人。你可能是一名Web 应用开发者,或者是一名医疗设备程序员,或者正在为一家金融机构开发交易应用。你也可能刚从中学或大学毕业,并认为件就是你的未来。
尽管本书是写给新人的,经验丰富的开发者仍可从本书内容中受益。有过几年开发经验的人,当从书中找到自己曾经面临过的窘境时,会不住地点头,而且还可能获得新的感悟,或至少获得一个新的词汇,用于描述他们自己使用或者建议给同行使用的方案。即使拥有十几年或者更长时间开发经验的人,特别是那些正在努力把握职业航向的人,也将会找到一些灵感和视角,用来抵御晋升到管理职位的诱惑。
写作过程
本书的构思始于2005 年初,Stickyminds.com 请Dave 写关于软件工艺(Software Craftsmanship )的专栏。那时Dave 认为自己是个(有经验的)学徒(apprentice ),唯一让他写起来感觉舒服的主题就是学徒期(apprenticeship )。这使他开始考虑关于这个主题写些什么更好。大约就在那时,Dave 读到一篇由软件开发者Chris Morris 发表的网志注1,其中提到了吉他手Pat Metheny ,而“只求最差”这一概念成了模式语言的种子。这粒种子很快从Dave 的网志注2成长为Dave 用来组织最初一些模式的个人wiki 。最初的一些模式就是从Dave 到那时(2000—2005) 的职业生涯中提取出来的。
Dave 知道,这些所谓的模式不能真正称为模式,除非它们确实是常见问题的一般解决办法。他开始通过三种方式从同行那里寻求反馈。第一,他开始在自己的网站上公开发表这些模式,通过公众点评的方式寻求反馈。第二,他开始访谈一些软件开发领域的思想领袖(主要通过电子邮件),并获得他们对最初几种模式的看法。第三,也是最重要的一种,Dave 开始访谈一些经验较少的从业者,用他们新近的经验来检验这些模式。这些经验较少的从业者们还把一些Dave 不曾遇到的或者在他的经验中不曾觉察到的模式介绍给他。就在这些关于学徒期的访问中Dave 访问了Ade ,经过双方同意,Ade 加入到这个项目中并成为一名合著者。
注1:
http://clabs.org/blogki/index.cgi?page=/TheArts/BeTheWorst.
注2:
Red Squirrel Reflections ( 红松鼠沉思录), 参见:http://redsquirrel.com/cgibin/dave 。
序言回到顶部↑
25 年前,我和Kent Beck 坐在Tektronix 技术中心的自助餐厅里,考虑着我们对Smalltalk-80 的深入接触会给世界带来怎样的影响。
我对Kent 说:真的不必担心。如果我们能做任何事情,我们会做什么呢?
“我想改变人们看待程序设计的方式。”Kent 说。我表示赞同。那时,我们都认为行业发展进入了错误的方向,而我们都想逆转它。而且,令人惊奇的是,我们做到了。
我那时在自助餐厅中使用的这项技巧——“真的不必担心”这部分——是最早从我大学的指导老师那里学到的一种模式。他把该模式用在我身上,正如我把它用在Kent 身上。这种行为我现在把它归结为一种模式,它使我和Kent 敢于想象更远的目标,若非如此,那些目标看起来显得盲目。而一旦想到了,我们的目标就更容易实现了。
我把这种思考的技巧称为模式,因为它解决了我们经常遇到的一个问题:我们潜意识里会压抑自己的雄心壮志。本书中全是类似这样的技巧,它们用于解决各种不同的问题。我们说:模式解决问题。“真的不必担心”帮我和Kent 解决了一个问题。它使我们真正去考虑自己本来就有的更大的想法,而且使我们克服了习惯性的自我压抑。
或许你也尝试过“真的不必担心”这一模式。如果没有,不妨试一试。
最强大的模式是那些可以反复运用并取得成功的模式。模式并不一定非要新颖才有用。事实上,不新的模式才更好。另外,仅仅知道几个成型的模式名字也没有太大帮助。确定出一种模式,以后你每次谈论它的时候就不必重述整个故事。
快速翻阅这本书,你将看到很多模式,其中许多都会让你觉得熟悉。对任
何一个,你可能都会说“我已知道这种模式了”——可能事实真的如此。然而,即使相关解决方案是常识性的,书中的模式仍然能提供两种帮助你的方法。
第一,书中的模式更加完整。它们已经被研究、定性、归类并解释过。
每一种模式都会带给你意外的收获。尽情享受这种收获吧,它会帮助你让已知的模式变得更加强大。
第二,这里的模式都是相互关联的。每一种模式都通向其他的多种模式。当你发现一种已经知晓的模式,沿着这些关联,你可以顺藤摸瓜找到其他一些尚未知晓或者从没想过可与之联合运用的模式。
我和Kent 在Smalltalk-80 中挖掘模式,我们找到了很多。我们将这些模式的概念讲给了同事们,并引发了一场小小的革命。我们改变了人们考虑程序设计的方式。从那时开始,人们写出了几十本有关模式以及如何
使用它们的书籍。
我们的革命远未结束。慢慢地,模式术语越来越多,并成为敏捷(Agile )软件开发方法的基础。后来又出现了几十本书籍。
那现在为什么写这本书呢?好吧,我们的职业已经承载了过多的资源。关于我们的革命,有太多的信息可以获取,以至于没有人能完全吸收它们。然而,还是有些人努力做到了。他们消化了所有可以获得的建议,而且似乎总能在需要时信手拈来。他们是如何掌握到这种程度的呢?
本书的内容全都是教你如何掌握我们所处的复杂领域的模式。掌握不只是知晓。掌握是能帮你减轻负担的知晓。
举个例子,如果你记不住SUBSTR 函数的参数顺序,可以到互联网上查一查。感谢上帝赐予我们互联网,它把我们的负担减轻了一点点。但是,当你运用本书中的模式,当你可以随时改善自己的工作,你会发现自己在写一种不同的代码,一种不依赖于了解SUBSTR 参数顺序的代码。你将写出比SUBSTR 飞得更高的程序,而这将大大减轻你的负担。
来自这次革命中的所有建议,除非能成为你的第二天性,否则就不会有太大的帮助。在软件领域,工艺的发展使我们认识到,让这些东西变成第二天性并不是我们的第二天性。这些模式是对这一过程的贡献,令人欢迎的贡献。
——Ward Cunningham
我对Kent 说:真的不必担心。如果我们能做任何事情,我们会做什么呢?
“我想改变人们看待程序设计的方式。”Kent 说。我表示赞同。那时,我们都认为行业发展进入了错误的方向,而我们都想逆转它。而且,令人惊奇的是,我们做到了。
我那时在自助餐厅中使用的这项技巧——“真的不必担心”这部分——是最早从我大学的指导老师那里学到的一种模式。他把该模式用在我身上,正如我把它用在Kent 身上。这种行为我现在把它归结为一种模式,它使我和Kent 敢于想象更远的目标,若非如此,那些目标看起来显得盲目。而一旦想到了,我们的目标就更容易实现了。
我把这种思考的技巧称为模式,因为它解决了我们经常遇到的一个问题:我们潜意识里会压抑自己的雄心壮志。本书中全是类似这样的技巧,它们用于解决各种不同的问题。我们说:模式解决问题。“真的不必担心”帮我和Kent 解决了一个问题。它使我们真正去考虑自己本来就有的更大的想法,而且使我们克服了习惯性的自我压抑。
或许你也尝试过“真的不必担心”这一模式。如果没有,不妨试一试。
最强大的模式是那些可以反复运用并取得成功的模式。模式并不一定非要新颖才有用。事实上,不新的模式才更好。另外,仅仅知道几个成型的模式名字也没有太大帮助。确定出一种模式,以后你每次谈论它的时候就不必重述整个故事。
快速翻阅这本书,你将看到很多模式,其中许多都会让你觉得熟悉。对任
何一个,你可能都会说“我已知道这种模式了”——可能事实真的如此。然而,即使相关解决方案是常识性的,书中的模式仍然能提供两种帮助你的方法。
第一,书中的模式更加完整。它们已经被研究、定性、归类并解释过。
每一种模式都会带给你意外的收获。尽情享受这种收获吧,它会帮助你让已知的模式变得更加强大。
第二,这里的模式都是相互关联的。每一种模式都通向其他的多种模式。当你发现一种已经知晓的模式,沿着这些关联,你可以顺藤摸瓜找到其他一些尚未知晓或者从没想过可与之联合运用的模式。
我和Kent 在Smalltalk-80 中挖掘模式,我们找到了很多。我们将这些模式的概念讲给了同事们,并引发了一场小小的革命。我们改变了人们考虑程序设计的方式。从那时开始,人们写出了几十本有关模式以及如何
使用它们的书籍。
我们的革命远未结束。慢慢地,模式术语越来越多,并成为敏捷(Agile )软件开发方法的基础。后来又出现了几十本书籍。
那现在为什么写这本书呢?好吧,我们的职业已经承载了过多的资源。关于我们的革命,有太多的信息可以获取,以至于没有人能完全吸收它们。然而,还是有些人努力做到了。他们消化了所有可以获得的建议,而且似乎总能在需要时信手拈来。他们是如何掌握到这种程度的呢?
本书的内容全都是教你如何掌握我们所处的复杂领域的模式。掌握不只是知晓。掌握是能帮你减轻负担的知晓。
举个例子,如果你记不住SUBSTR 函数的参数顺序,可以到互联网上查一查。感谢上帝赐予我们互联网,它把我们的负担减轻了一点点。但是,当你运用本书中的模式,当你可以随时改善自己的工作,你会发现自己在写一种不同的代码,一种不依赖于了解SUBSTR 参数顺序的代码。你将写出比SUBSTR 飞得更高的程序,而这将大大减轻你的负担。
来自这次革命中的所有建议,除非能成为你的第二天性,否则就不会有太大的帮助。在软件领域,工艺的发展使我们认识到,让这些东西变成第二天性并不是我们的第二天性。这些模式是对这一过程的贡献,令人欢迎的贡献。
——Ward Cunningham
媒体评论回到顶部↑
“了不起的作品!阅读本书就像置身于一部时间机器中,把我带回软件开发者职业生涯中的那些关键的学习时刻,那时,学习最佳的实践方法需要通过艰苦的方式,但是在我从学徒到高手的每一步上都有良师益友坐在旁边。我当然乐意把这本书介绍给大家。我多么希望14年前就拥有了这本书!”
——Russ Miles,OpenCredo CEO
——Russ Miles,OpenCredo CEO
【插图】


点击看大图






加载中...