前几天和一些同事聚会,每人介绍了自己的背景,发现不少人的工作跨度都比较大,比如从开发转向测试,从应用开发转向底层开发。Max是做Java SE的安全方面开发的,说想到自己写的一部分代码能部署在全球那么多机器上,能被那么多人使用,就挺自豪的,这是应用开发所不能带来的感觉。有意思的几位从应用开发转向底层开发的工程师,说起转变的理由基本类似:
应用开发需求变化太大,和行业结合太紧,技术含量不高,经常还要和一些愚蠢的客户打交道。
这样说,我就应该惭愧,因为自毕业后,我一直参与的就是技术含量不高的应用开发,而且还乐此不疲,真的有机会让我去做底层开发,我还未必有兴趣。追究原因,我大概是实用主义者,而且急功近利一些,所以,一些技术如果不能让我马上看到成效,我没太多兴趣去参与。在生活和工作中,常常有些念头冒出来,觉得如果有这样的工具能高效地帮我完成某种事情该有多么棒,可找寻的结果经常让人失望。应用软件里有那么多的空白需要这么多人去做,却还在一些IT论坛中充斥着所谓“牛人”的讨论,“牛人”的定义似乎就是能写出一些其他人都搞不太懂的代码的人,而且只要设计到应用类,界面类问题,就被归到水平低之列。到现在,还有一些可笑的论调,如果用那些集成度好,自动化功能强的工具作开发,那么就是水平低,而水平高的人会使用那些原始工具,如emacs, vi,UltraEdit. 如果有人说自己是用文本编辑器写代码,不仅作者隐隐带着些自豪感,更是能引来羡慕一片,那些VB开发者简直就没有开口的勇气。
我是觉得很多程序员本末倒置,变成了为技术而技术。想想技术最终要起到什么样的作用,也许对应用开发就不会存在那么多的偏见了。
在我看来,应用开发真是一个多姿多彩的领域,比如Web领域开发,竞争固然激烈,但是也造成白花齐放的局面,很多新思想,新技术正在在这个领域中源源不断涌现,而这种创新的速度是底层开发中无法体会到了,所以更适合哪些喜欢变化的人。说到与行业结合紧密,有劣势也有优势。劣势是除技术基础外,更多需要行业知识的储备。优势是劣势的另一面,有很多”程序员不能干到三十岁“的悲观论调,理由是年龄大,精力不足,很容易被后辈超越,如果是在行业的应用开中,就不需要这种担忧,行业知识的积累更多来自时间,程序员的价值是随着时间增值,而且这些积累无法用干劲足,精力旺盛等快速超越,可以说是个很高的门槛。
总之,变化是永久的,在哪个行业都如此。另外,客户并不愚蠢,如果程序员认为自己不愚的话。