写给一位有程序员心结的朋友

至从在博客和论坛发布招人贴,就不断有朋友与我联系,这不,今天又来了一位。

这位朋友年方32,浓眉大眼,虎背雄腰,天庭饱满、仪表堂堂。见第一面,我便从内心中喜欢上这位朋友,话语便不由得比往常多了许多,足足聊了一个多小时。

这位朋友一表人材,如果旁人介绍:他是一位公司总经理、部门经理、项目经理、或是一名销售经理,我都相信,但如果人家告诉我:他是一名架构设计师,或者一名程序员,我还真的不太敢相信,原因是,他的性格太丰满了。而一般的程序员或架构师应该是有某种偏执倾向的。

于是,在经过一段时间的旁敲侧击之后,我便问他两个问题:

1、如果评价一下你自己的能力,你认为自己哪一块的能力突出,有五个选项:架构师、程序员、项目(实施)经理、售前支持、销售人员,请排序。
他的选择是:程序员、架构师、项目经理、售前支持、销售人员。

2、如果可以任意发展,你希望成为何种人员,同样是上面五个选项,请排序。
他的选择是:程序员、销售人员、架构师、项目经理、售前支持。

我又追问了一句,如果还有一个职位,是产品经理,产品经理的职责是定义产品的市场定位、需求、验证产品功能、进行产品包装、策划,他希望将它插在第2个问题中的哪个地方,他的选择是:程序员、销售人员、产品经理、架构师、项目经理、售前支持。

我明白了,他是一个有程序员情结的人,即便他这次过来,明确的目标是来应聘架构师,也不隐瞒自己对编写程序的偏爱。于是,我便开始询问他在编程方面的经历。

他1997年开始编写程序,一直使用C和C++,编了两三年DOS下程序,用的是Microsoft C 6,也用过一段时间的Borland c++ 3.0,在转入Windows环境后,便一直使用C++ Builder,编写的都是一些与信息管理系统相关,编写的系统挺多的。

听他介绍完经历后,我便在内心发出一声叹息:他被耽误了,十年的工作经验不再是他的经验,却变成了包袱。

他的编程之路,也许是不得已的选择,也许是公司要求他必须在这条路上奉献自己的青春,但不管怎么样,他是被耽误了。而从他更多的描述中,我更确认:他是被自己耽误了。

他当初选用C++ Builder而不是Visual C++或Delphi,原因有二:
1、自己熟悉C++,一直在用C++编程,不想放弃C++;
2、Visual C++的界面编制工作太复杂,而C++ Builder在界面编制方面有具大的优势。

我一直认为,C++ Builder是那些固执的C++程序员的一个偷懒的C++开发工具。它在延长传统C++程序员的生命的同时,也给这些程序员套上了沉重的枷锁。

C++ Builder、Visual Basic和Delphi的编程人员,都会不直觉地养成在界面中直接编写程序逻辑,久而久之,对程序架构设计的追求便慢慢淡化和麻木,C++ Builder程序员很难写出层次清晰的类和对象。

而C++ Builder相比于Delphi,还会带来另一个致命的问题:C++ Builder使用的所有VCL组件都是采用Delphi编写的,当C++ Builder程序员不愿意学习Delphi时,便只能利用别人编写的现成组件了。于是会出现这样一种情况:一个C++Builder程序员需要一个新的功能时,他们会先寻找合适的VCL组件,如果没有,他们便会上网搜索合适的VCL组件,即便某VCL组件与他们需要的功能的重叠度达到99.99%,他们不会想到去直接改动VCL组件而是想办法找到100%满足要求的VCL组件。

也就是说,C++ Builder程序员是一群在编程技术方面没有前途的程序员。他们的前途应该是应用系统的需求分析能力。

令人遗憾的是,这位朋友在系统设计方面没有太多的想法,对UML、RUP、企业架构模型、.NET框架、J2EE框架、WEB编程、系统建模、数据建模、设计模式、重构、系统功能划分、极限编程、单元测试等方面,都不是很了解。

如果他选择另外一种编程语言,在某应用领域(而不是信息化系统领域,在这个领域,重点不是编程技术而是设计技术)能流畅地使用该编程语言,我会很高兴。

或者,他告诉我:编程语言只是一门工具,我追求的是如何高效地快速地开发系统,我知道如何合理地设计系统,如何对进度进行控制,如何进行开发质量的控制,我也会很高兴。

再或者,他告诉我:编程算什么呀,那只是我曾经在某个阶段的工作,我现在已经完全不编程了,我开始转型为产品经理、销售经理等等,我会非常地高兴,因为,我相信,那些工作可能更适合他。

对编程的喜好,是很多人(包括曾经的我)的心结,这不是一件坏事,但是,作为程序员,一定要有不断学习新知识的冲动,也一定要有不断否定自己的勇气。

计算机技术的发展日新月异,新技术层出不穷,我们不可能将每件新技术都学习一遍,但应该要有敏锐的嗅觉,发现可能成为未来主流方向的新技术,即便不能在工作中对该技术进行实践,也应该利用业余时间系统地学习这些知识,而且,不管它如何地难,都不应该放弃对它们的学习,否则,很可能成为新技术的旁观者,旧技术的卫道士,成产一个固步旧封者。

即便再好的技术,过了五年便可能被新技术替代,因此,即便你对某项技术已成为专家,该抛弃的还是应该坚决抛弃,否则,世界便会抛弃你。

实在不行,就应该知足常乐,不要为别人的高工资眼红。

我对他说:以你目前的状态,我不能聘你为系统架构师,也不能聘你为核心程序员,但我可以聘你为一般程序员,或者直接聘你为一般销售人员,我聘你的工资不会太高,我会按一般程序员或一般销售人员的岗位支付给你工资。当然,如果你能提高发展为优秀程序员,或者是系统架构设计师,或者是销售经理,我会相应地提高你的工资,但我不能给你保证,你在什么时间会成为那样的人,那一切,需要你自己去努力。

在提出这些建议之前,我已经知道他会作何种选择,他有生活的压力,有太多的包袱,不象年轻人,没有太多的牵挂,有的只是梦想。

美国心理学家霍兰德认为人的性格大致可以划分为六种类型,分别是:现实型、研究型、艺术型、社会型、企业型、传统型。这位朋友的性格应该属于企业型,他更适合做那些伟大的事情,而不是编程。

问题是,他有否定自己的勇气吗?

本人将开发国产实时数据库作为自己的事业,欢迎同道之人一起来品酒论道
更多内容,请见我的主博客网站http://linkman.gkbk.com