• 2008-02-22

    起步的台阶

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/15800574.html

    我的程序人生是从微软的技术起步的。虽然那时已经是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这个具体的平台之上,而更多的是一种通用的软件开发理念,拥有了这些理念,即便进入了一个陌生的领域,只要稍加学习,从前的感觉便会回到身边。

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

    历史上的今天:

    引用地址:

    评论

  • 最后一句,很赞同~
  • “我们公司内部,有一个技能列表,上面记录着哪些人会哪些东西,比如Java、.NET、Ruby等等,这样方便做项目时进行资源调配。”

    怎么像是我们公司的做法?Acc。
  • 你觉得自己真正“心里踏实”是因为一个项目呢,还是很多项目,大概是怎么样的经历?
    回复jx说:
    这和项目多少并没有直接的关系,而是在做项目的过程中,我逐渐知道了软件应该如何开发,而不是像从前那样,只见树木,不见森林。
    2008-02-28 10:12:12
  • Agree. *nix或者open source对一个程序员的成长是非常有帮助的, 在整个过程中最大的收获不是懂得了某方面技术, 而是学习本身, 也就是如何学习.
  • 我经常在想:不跟/很少跟底层的操作系统、硬件打交道,对于程序员来说是不是件好事?
    回复javalurker说:
    从我的经验来看,直接编写非常底层程序的机会并不多,但是,还是有必要了解一些底层的知识,这样,可以帮助我们更好的理解软件是如何运行的,我们也可以写出更好的程序。

    关键还在于你想成为一个怎样的程序员,如果希望成为一个好的程序员,有些内容是必然要了解的,即便你做的不是相关的开发。
    2008-02-22 16:57:35