软件开发者路线图 ——从学徒到高手
尝试自学Java,并慢慢地做各种练习,创建Java applet。结果我感觉自己真的成了个傻瓜,一切看起来都是那么难,我因此又放弃。直到26岁时,我找到了两位指导者,我的第一门语言才算学会了。那是在伊利诺伊州斯科基市,在"dot-com"泡沫的浪尖上,我在Edventions有限责任公司遇到了这两位指导者。公司的创始人Irv Shapiro知道我想成为一名程序员(他当时雇我做在线内容编辑)而且需要让我学习Perl,扑通一声,他把一本《Programming Perl》(http://oreilly.com/catalog/9780596000271/)(Perl语言编程)放在我的桌子上,并描述了一个“质脆玩具”作为我的练习作业。接下来的几天里,我啃完了《Programming Perl》,虽然对于像我这样的新手来说,这是本相当厚的书。为了继续探究Perl,我从自己的阅读列表中挑了一本消化起来更容易的可视化快速入门指导(Visual QuickStart Guide)系列的书。我的另一位指导者是Steve Bunes,Edventions公司的CTO,他时常坐下来与我“密切交往”,为我演示一些强大的调试技术,直到今天我还使用这些技术。在我完成第一版“质脆玩具”的过程中,最难运用的一个模式就是向旁边工作间中的那些有经验的Perl程序员和系统管理员“暴露无知”。但收起自己的面子是值得的,因为他们给了我一些快速的指导,使我弄清了程序中的一些问题,并理解了UNIX文件权限,这使我很快地完成了“质脆玩具”,让Irv和Steve大吃了一惊。
两年之后,我开始寻找一些机会,让自己的职业生涯超越我心爱的(但也越来越无法升值的)Perl并学习一些新技术。我一头扎进了极限编程(Extreme Programming,XP)和敏捷开发(Agile Development)中,让自己“提高带宽”,那时,极限编程和敏捷开发还处在宣传周期(Hype Cycle)的高潮中。我花了几天时间参加附近一所大学的XP/敏捷讨论会,从那里吸收新的信息。会见和聆听像Ron Jeffries[4]、Martin Fowler[5]、Bob Martin“大叔”、Alistair Cockburn[6]和Kent Beck[7]面对这样的人,简直是一种令人陶醉的享受,我从讨论会中出来后便成了正式的面向对象和极限编程的超级崇拜者。我发现Joshua Kerievsky正在写作《Refactoring to Patterns》(重构与模式),这听起来真让人钦佩,于是我找了个“同道中人”一起学习。很快,我们发现我们都跑在自己前头了,因为我们甚至还不知道重构和模式是什么。于是我开始寻找更适合自己经验水平的书。最终找到了《Object-Oriented Software Construction》(影印版《面向对象软件构造》,机械工业出版社引进)和《A Pattern Language》(建筑模式语言)。我还是想以后再回过头来再看看《Refactoring to Patterns》,于是把它加到了我的阅读列表中。
还是跟那个“同道中人”一起,我从2002年开始学习Ruby,但我无法找到很多在日常工作中使用Ruby的途径,直到出现了Ruby on Rails。2005年,我再次拾起Ruby,努力寻找一些在日常工作中使用它的方法。我开始用它构建一个“质脆玩具”,却发现自己的思维方式太像Perl程序员。对于任何一个精通其“入门语言”的程序员来说,当他学习一门新的语言时,都会遇到求助于已有语言的标准和惯用法的诱惑。Ruby拥有优雅、简洁的美誉,而我所写的代码让人感觉既丑陋又蹩脚,这让我觉得自己是在做错误的事情。我刻意决定系上“白色腰带”,于是把自己的Perl经验丢在一边,开始深入钻研Ruby文档。之后,我很快明白了我需要的是什么,并将那些费解的代码重构成精良、标准的函数调用(Ruby程序员们好奇了?就是String#scan那样的)。为了让所有这些新知识留在我的大脑中,我决定“暴露无知”:在网站上记下了自己学到的东西,让所有的人看。
-
HTML5(W3CSchool版)使用参考手册
一、HTML是什么?HTML(Hyper Text Mark-up Language )即是超文本标记语言,是 WWW 的描述语言,由 Tim Berners-lee提出。通过使用... 1093 0 24-05-24 -
怎样实现 new、apply、call、bind 的底层逻辑
JavaScript 中的 apply、call 和 bind 方法是前端代码开发中相当重要的概念,并且与 this 的指向密切相关。很多人对它们的理解还比... 1249 0 24-05-24 -
JBPM开发指南
JBPM 是一个扩展性很强的工作流系统,百分百用 JAVA 语言开发,持久层采用 Hibernate实现,理论上说,只要 Hibernate 支持的数据库 ... 754 0 24-05-28 -
TCP/IP路由技术
经过10多年的快速发展,中国的互联网已经进入了一个崭新的天地,目前的宽带用户数已跃居世界第二(仅次于美国)。互联网在中国的应用正逐步... 1156 0 24-05-24 -
高并发设计必须学的知识点有哪些?
对于单个服务或者单个接口,我们学习了在 Node.js 中要着重注意的 5 个高性能点。主线程避阻塞,特别是一些复杂 CPU 密集计算型,最... 1332 0 24-05-24 -
微信公众平台服务号开发:揭秘九大高级接口
2013年10月29日,微信公众平台就微信认证的服务号推出了九大高级接口,将以往一些VIP客户才能使用的功能全面开放给微信普通公众号,普通公... 1006 0 24-05-28 -
Safari浏览器内容被地址栏、菜单栏或工具栏遮挡导致的兼容问题
页面很多元素使用的是Fixed定位,当在手机端的Safari浏览器、安卓浏览器等测试时,会出现顶部元素、底部元素 被地址栏、菜单栏或工具栏遮... 1042 0 25-04-07 -
微信开放平台第三方申请
微信第三方申请一、接入应用--移动应用,APP端需要申请1.进入微信开放平台,进入“管理中心”,选则“移动应用”,点击“创建应用”。 2. ... 1252 0 24-05-13
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~