关于程序员的那些事---一个五年程序员的总结

 

前言,

一晃,做了五年多的程序员了,感觉自己应该是程序员大军中比较典型的一个,班科生毕业,直接加入了软件开发的行列,先是小公司,然后大公司,走了一条典型的程序员的路线。

虽然我不是大牛,但是感觉在我这样普通程序员身上所能得出的一些结论可能更加适合广大的程序员兄弟们,让我们在程序开发的路上,共勉。

话说,五年前,我是一只小小鸟,一头扎进了dot Net开发的丛林,没能变成猎手,却险些变成了猎枪下的亡魂...

回首往事,曾经有过太多的经验和教训,现总结如下:

 

一、要想飞的更高,我需要一双有力的翅膀...

一双有力的翅膀,是飞行的最基本的支撑和前提。

那什么是程序开发的最基本的支撑呢,个人感觉是构建一个完整的关于开发的知识体系和程序员应该具备的最基本能力。

 

 

1. 知识体系

 

知识体系无非就是支撑你软件开发的那些最基本知识,也可以说是技术的路线图。

例如你可以参考园子里的大牛Anytao路线图,应该会有一些体会。

 

清楚自己的知识体系的好处是可以时刻提醒自己在哪些方向上有所欠缺,在哪些方向上有相应的优势,并且更容易对自己的技能有个良好的把握。

关于这方面的东西就不多说了,下面说几个构建知识体系时的个人心得。

 

1.分清楚知识的核心和扩展

 

每项知识都有其核心价值与相应的扩展体系。

核心价值决定了技术的应用方向,而扩展体系决定了技术的外在表现。个人的意见是抓核心,适当的放弃某些扩展,比如asp.net你更应该了解页面周期而不是某些控件的具体使用。

 

了解了核心价值有助于我们对某样技术有深刻的理解。

 

拿语言举例,如果将语言分为命令式和函数式,那么我们就应该知道命令式语言的核心本质就是通过操作指令去改变内存中的数据,而函数式语言的核心就是通过不断的函数求值以得到结果。

 

明确了这些核心对于我们对语言的了解有显著的作用,我们也就明白了为什么汇编语言的指令一般都是 "mov ax,1"这样的语句。

 

BTW:对于一个dot net程序员而言,如果不理解framework,不了解framework的构成,不了解一些基本的概念,比如”CLRCTSGAC“之类的东西,很难想象这样的人会是一个成功的dot net程序员。

记得有一次和一个同事聊天,我说如果没看过《Microsoft .NET框架程序设计》这本书,我就不确定你对于dot net能有深入的了解。

其实我的本意是想说,《Microsoft .NET框架程序设计》这本书,会在某种程度上极大的帮助你构建dot net framework的知识体系,这本书好就好在不是讲c#或者vb这些语言,而是讲framework这个框架。当然,不看这本书你也能打造一个良好的framework的知识体系,只是相对来说要麻烦一些,没有这本书这样的系统。

 

2.通过内联和外延梳理自己的知识体系

 

技术与技术之间都有着相应的联系,通过互相对比我们能够清晰的加深对技术的理解。
比如WPFHTML都是通过markup的方式构建界面,再比如WebServiceRemoting都是通信方式,只是具体的方式和信道不同。


再比如FlexSilverLight的区别和差异。

 

甚至你可以通过对比JavaC#两种语言来看语言设计上的一些异同,比如java为什么默认的就是虚函数,而C#默认的不是,通过这些对比,你更容易发现这两种语言设计时的思路。

 

3.审慎的对待IT技术的走向和潮流

 

软件开发是个不断更新的职业,其新技术更新之快远超传统行业,也经常看到很多人抱怨技术更新过快没有时间学习之类的,其实在我个人看来,新技术的到来远没有那么可怕。

 

当你有完整的技术体系,明确其中各种技术的联系,你会发现你对于新技术会有更明确的定位与预判。

 

举个例子,微软出了个新技术WPF,那么,它是干什么用的呢,一种通过标签描述windows界面的表示技术,这时你自然就会想起Windows Client,想起HTML,在比较它们之间的异同,你就会很清晰的明确WPF这种技术所适用的场合和大概的优缺点,那么到了这个时候你会发现,你缺少的就完全是对于WPF的熟练度和技巧了。

 

2. 程序员的基本能力

 

什么是程序员应该具备的基本能力呢,下面是我的总结:(这个问题肯定每个人都有自己的看法,下面只是我个人的总结)

 

对编程语言的掌握能力

一个良好的程序员肯定要熟悉一种或几种编程语言,同时对各种主流编程语言有一定的了解。

 

操作文本的能力

最基本的能力之一。

 

操纵shell的能力

这是证明你是一个程序员而不是一个普通人的最简单办法了,你看过一般电脑的操纵者会玩shell?

更何况shell在某些场景下能给我们巨大的帮助。

 

操纵IDE的能力

IDE类似于战士手里的枪,玩不好枪你当什么战士?

 

单元测试的能力

太多的程序员不在乎单元测试了,要知道这是证明你的工作成果是正确的唯一方式,我想,有这一条就足够说明单元测试的重要性了。

 

文档的能力

有人很不在乎这个,其实,想说的是,有很多时候文档是体现你价值的最重要的工具。不理解?想想你的项目经理们是不是都能做出非常漂亮的ppt,你就知道差距了。还不明白,文档可是交付物之一,也就是产品中的一部分,想想你买个漂亮的家用电器,却又一个非常丑陋的包装的情景,你就应该明白了。

 

 

二、要想飞的更远,我需要混入一个团队...

 

大雁是我知道迁徙类中飞的最牛b的鸟类了,因为它们总是能在天空中排成美丽的S形,美丽的B...:)  我相信在这样的团队中,你只要混进去,也就可以很容易的排成那些美丽的形状。

 

其实这里的团队不是通俗意义上的团队,而是圈子的概念,程序员也有程序员的圈子,积极的融入这些圈子,总会有一些好处。

 

举个例子,在去年,我想换工作的时候,就得到了园子里面Nick Wang"Lbq"的极大帮助,其实我和他们素未相识,但是不得不说程序员真的是很热心,很纯洁的一帮人,有这样的一帮人作为同职业者,对于我们每个人来说,都是一种幸运。

 

人都是群居动物,社交对于每个人都非常的重要,ok,下面说说我对圈子的一些小看法。

 

1.在广义的圈子里

 

所谓的广义的圈子,指的是相对而言一个比较大的范围,可以是网络,或者一个邮件group

有一个很重要的事情就是在这样的一个圈子里,不要做一个只得到不分享的人。

 

如果你只获取不分享至少有两个坏处,

第一 就是你不能收获最大,这点我深有感触,我加入博客园是05年,貌似属于比较早的了,可是最开始的时候感觉自己很是幼稚,不敢分享自己的观点和体会,于是直到07年我才敢发自己的第一篇随笔,如果早早分享的话,我想我会有更大的提高。

第二 对于任意一个组织,当获取超过分享的时候,这个组织也将会走向灭亡了。

 

2.在狭义的圈子里

 

这个很简单,就是你工作的城市,你工作的公司,如果你想在一个城市里面混,程序员的圈子说大很大,说小其实也很小,如何让这个圈子里的人认可你的能力,是很重要的。

 

记得有个前同事问我说他将来会不会失业,我当时就告诉他,以他的能力,他不可能失业,但是以他的人际圈子,他很有可能混不去,因为他的圈子太窄了,如果不能在现在的公司得到认可,他很可能连去其它公司展示自己能力的机会都没有...

 

是不是很现实,但是社会往往就是这样现实,想想吧,如果你想去某个公司,里面有个了解你能力的人,赏识你能力的人对你会有怎样的帮助。

 

 

三、我该朝哪个方向飞,当我们面对选择...

 

对技术迷茫过?动摇过?很正常,每个人都有过这样的困惑,审慎的对待自己的性格、能力,并作出合理的选择是我们这代人需要面对的问题之一,我们没有可以参考的目标(对于软件行业而言,在国内从无到有也才那么10几年时间,自然没有什么参考对象),也不像我们的父辈一样无法选择,展现在我们面前的是一条更加宽广的路,也是一条充满了荆棘的路,所以,选择也就更加的重要了。

 

我不知道别人是如何选择的,说下自己的心路历程吧,在04年的时候我做出了第一次选择,

一,选择.net,其实当时的原因很简单,只是因为看Microsoft .NET框架程序设计时的一句话,微软为未来的10年准备了Dot Net,你呢?当时被这句话深深的打动,于是毅然决然的选择了.net

二,没有选择日本外包,而是选择了当时在大连还是才起步的欧美外包,选择的理由也很简单,英语永远比日语说的人多,在外包一个这样语言至上的行业里,学习英语远比日语来的划算。

 

到现在,虽然没有证明当年的选择是正确的,但是既然是自己选择的,那么就想一直坚持走下去。

 

第二次选择是在08年,从一个小企业到了一个大企业,虽然对当时的团队也很是不舍,但是我却知道,按照自己的性格,既然不能走向管理,那么只能走向一个大的团队,这样才能保证自己的职业生涯更稳固。

 

如今,即将面临第三次选择,一个正规化、专业化的开发团队,这样才能让自己在职业的道路上走的更远。

 

最后想说的是,人生,无时无刻不在选择着,其实选择不重要,重要的是做出选择之后按照自己的选择并坚持走下去。

 

 

四、一些额外的东西

 

1外语能力

 

作为程序员,没有出色的英语永远是二流的角色,没办法,人就要适应环境,而最先进的代表生产力的东西貌似现在很多都是E文的,既然没的选择,那就学呗。

 

2管理能力

 

在程序员中,感觉想走管理路线的人应该占大部分,那么储备一点管理的知识吧,机会永远垂青那些有准备的人。

还想说句话,其实不是每个人都适合管理的角色,自己也曾经参与过一定的管理工作,但是感觉性格上很不适应,于是放弃,依然选择在技术上起伏,某些时候放弃更重要。

3突出重围

 

不想泯然众人,不想永远做人后之人?看看xiaotie的这篇文章《突出重围》,个人感觉很精彩。

 

最后,

程序员不过是三百六十行中的一行罢了(算不算在三百六十行中我还不知道),无非就是一种职业,它不比其它职业来的高贵,也不比其它职业来的低贱,无非是你获取报酬用来支持你生活的一种方式

如果你真心的热爱这个行业,那么就持之以恒的在程序开发这条路上走下去吧,其实无论你选择了哪个行业,只要坚定不移的走下去,总会找到属于自己的那片天空!

 

 

 

posted on 2010-01-25 11:49  xiao_p  阅读(4866)  评论(41编辑  收藏

导航