2009年1月5日星期一

起步的台阶

by 梦想风暴

原文请看这里

我的程序人生是从微软的技术起步的。虽然那时已经是Windows的年代,但是目光的局限,让我依然还是在DOS上下了一些功夫。也是因为从DOS出发,后来顺理成章的进入了Windows开发的行列。那时候的我是很努力的,不断的探索着各种各样的技术实现,不断的阅读着各种各样的书刊杂志,也着实记住了一些所谓的技术。不过,有个问题一直困扰着我,我觉得自己记住的只是一些形,而非神,这些形的东西是很容易忘记的,所以,我一直觉得自己并没有真正的理解编程,我甚至一度怀疑适不适合做开发。

真正让我开始觉得心里踏实是以程序员为职业之后。我的职业之路起步于Java,做的是服务器端的开发。跨平台的Java让我的目光不在局限于微软的平台,而服务器端的开发,让我有机会更加关注软件设计本身,而并非花哨的表现形式。随着开发越做越多,我逐渐开始摸索到了一些共性的东西,对自己的程序人生充满了信心。

走不同的路,得到的结果差异会很大。从上面提到的我个人的经历反映出在不同的技术社区内的不同倾向。记得有人说过,微软社区更倾向于探究底层实现,而Java社区更关注设计架构。其实,差别并不只这些,比如,微软的技术社区倾向于追踪新技术,因为几乎差不多每隔几年,微软就要把自己的东西推翻了重来,从DOS到Windows,再到.NET的变化,而Java社区的人则是在一个稳定的基础上不断的发展。微软是为了商业上的发展,所以,它要不断推陈出新,而Java也有变化,比如EJB到without EJB,但决定因素多半是技术上的,而非商业上的。

如我前面所说,微软社区有很多人关注的是一些细节上的实现,所以,造成的结果是他们不得不在茂密的技术丛林中不断摸索,而无暇顾及其它。我们公司内部,有一个技能列表,上面记录着哪些人会哪些东西,比如Java、.NET、Ruby等等,这样方便做项目时进行资源调配。其中有一个有趣的现象,只拥有一项技能的开发人员大多都属于.NET阵营。而Java阵营的人,经过最初的探索,会发现原来自己学到的东西是可以用在很多其它的地方,于是他们的触角开始伸向其它地方,比如JavaEye这个以Java命名的网站上会有很多关于Ruby的讨论、关于函数式编程的讨论、关于Erlang的讨论,这些东西少有会对Java开发本身产生直接的帮助。

如果已经从最初的阶段突围而出,或许,这些差异并不重要,因为我们做事靠的是自己的方法和一些共性的东西。但对于刚开始成为程序员的人来说,并不知道这些差别的存在,一个人的见识有限时,他会认为自己见到的就是整个的世界,就像我刚开始编程那会儿。

其实,我觉得最适合编程起步的应该是Unix开发。这些年里,很多出自贝尔实验室的书,比如《Unix编程环境》、《程序设计实践》、《C程序设计语言》等等都是在探索软件开发本质的书,而Unix的诞生地正是贝尔实验室。Eric Raymond写过一本《Unix编程艺术》,品味之下,便不难发现,许多随着Unix而生的是做事的方法,而这些方法并不是把人限制在Unix这个具体的平台之上,而更多的是一种通用的软件开发理念,拥有了这些理念,即便进入了一个陌生的领域,只要稍加学习,从前的感觉便会回到身边。(说得多好阿)

起步固然重要,不过,即便起步并非一帆风顺,如果抱有一个开放的心和一个思考的大脑,最终,都会走上同样的开发之路。

没有评论: