[转]程序员的四个境界

gucs 2003-05-21 09:47:38
程序员的四个境界
作者:雷年胜 本文选自:赛迪网 2003年01月22日

国学大师王国维先生认为古今成大事业、大学问者,必经过三种境界,第一种境界:“昨夜西风凋碧树。独上高楼,望尽天涯路”;第二种境界:“衣带渐宽终不悔,为伊消得人憔悴”,第三种境界:“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”。一代宗师真是体察入微,寥寥数语,道尽了求道者的心路历程,将一个人由浅尝、迷茫到彻悟的过程尽数概括,可谓入木三分。

IT行业可谓现在的热门行业,程序员也是很多人羡慕的工作。薪水高,不用东跑西颠,敲敲键盘,看看屏幕,一切工作全都搞定,轻松而方便。果真如此吗?不尽然,实际上,程序员的职业生涯也是一个求道的过程,需要不断的提高和学习,IT行业知识更新之快,常让程序员们有随时掉队的危险,无一日不战战兢兢,不敢稍有懈怠。

程序员的职业生涯也可分为四个阶段,初级程序员(菜鸟)、高级程序员(熟练工)、系统程序员(高手)、软件大师(大师),其作品也经历四种境界:

· 可以运行的程序

· 健壮、高效的程序

· 结构优美的程序

· 思想深邃的程序

程序员的必经第一个阶段都是编写可以运行的程序。很多人的编程生涯是从“Hello World”开始,当第一次按照教科书上的步骤,将源文件编辑完后,编译、连接、运行,在屏幕上显示出“Hello World”时,心中的激动一点也不亚于阿里巴巴打开了宝库的大门。初级程序员的目标一般是让程序能运行起来,他们迷惑于库函数的众多,不知道该用那一个,他们还要学习基本的语法,以使程序编译通过。初级程序员一般不会考虑设计模式、软件结构等问题。记得本人编写的第一个较大的程序是本人的本科毕业论文题目——一个计算机辅助实验系统,开发工具为Turbo C,在DOS下开发(那个时候Windows还不太流行,怎么样,年代够久远吧),整个软件大约7000行代码,在当时已经能干不少事,在DOS下也能显示不少花里胡哨的图形界面,支持中文,支持鼠标操作(那时候在DOS下需要自己处理鼠标事件中断),当时还颇受好评。可是今天再重新温习过去的作品,真有点掺不忍睹,整个软件毫无结构可言,一共分成两个源文件还是由于编译器不支持一个太大的源文件而被迫分开,整个系统就是源代码的简单堆砌。相信每个程序员都需要经历这个阶段,它是程序员职业生涯的开始,没有捷径可以跨越,只有不断的实践、学习和总结。

第二阶段的程序员已积累了不少的编程经验,语法和库函数不再是障碍,他们已不再满足于程序正确运行、功能实现无误。他们需要了解程序背后发生的事情,需要了解操作系统的原理和调度机制,内存管理,文件系统组织等;了解开发工具的细节,如C的函数调用机制,参数的传送机制、堆栈的建立过程等;了解C++的封装、继承和多态性背后的机制,虚函数实现机理等。他们不仅知道程序应该如何运行,还知道它为什么这样运行,能编写高效、鲁棒的程序。

第三阶段的程序员能构建结构优美的软件系统,软件系统结构的合理性、可扩展性、可维护性、可测试性是系统程序员考虑的重点,结构优美的软件系统同一栋完美的建筑群一样,每个部分各司其职,搭配合理。本人一直认为,一个好的软件系统应当具有美学特征,如简洁、和谐、层次感等,一个好的软件系统应当是简洁的,易于理解的;应当是和谐的,每个部分高内聚、低耦合,既分工又合作;应当是层次分明,易于维护和移植。所以,本人建议那些进行软件系统设计的程序员,当你设计完一个系统后,需要问问自己:"它美吗?",如果答案是否定的,那么我建议你需要重新考虑系统的设计,如果答案是肯定的,那么,恭喜你,你已经达到一个相当高的水平。

最后一级也许是每个程序员梦想达到的顶峰,程序设计不再是简单的工具,而是大师们改变世界的魔杖,从C到C++,再到COM和COBRA,再到XML和WEB SERVICES,每次改变,不是软件语法和开发工具的升级,而是用软件构建现实世界模型的改变,是一种软件思想的革命,软件具有了灵魂和智能。如果没有理解这一点,认为C++只是更好的C,COM只是更好的C++话,你就没有了解它们的精髓和思想性。

“程序员之路漫漫兮,吾将上下而求索”,希望与所有的程序员共勉。

作者简介:

雷年胜 大唐永创科技发展有限责任公司技术总监 大唐永创从事网络安全、网络管理软硬件产品开发

e-mail: lei_niansheng@sina.com

...全文
54 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
seiya_13 2003-05-27
  • 打赏
  • 举报
回复
我清楚操作系统的原理和调度机制,内存管理,文件系统组织等;了解开发工具的细节,如C的函数调用机制,参数的传送机制、堆栈的建立过程等,

可是我还只是一个初级程序员,
是因为我经验不足还是其它什么原因?
cncoder 2003-05-27
  • 打赏
  • 举报
回复
我就要说不中听的话了
在我看来,永远做第一级或者第二级的程序员也没什么不好
不要暴躁,听我说:

我们不是做科学研究的,我们中大多数人的任务不是做绝顶聪明的顶尖高手。
对我而言,我知道穷我一生之力,也未必能够达到软件大师的水平:这个世界上,有几个人在写编译器?
这不是浅薄,因为我毕竟是一个普通人,我把我的软件写好,我的客户用的很满意,我的程序维护起来不复杂,我就满足了。更多的时间,我会去了解,我的客户们需要什么样的软件,需要什么样的服务?我去开拓新的市场,我写出虽然不太“美”但是很有市场很实用的东西,就够了。
这也是一种乐趣。也未必不是在为民族的软件产业做贡献

愿意和朋友们交流:realenjoy@163.com
seafarer777 2003-05-27
  • 打赏
  • 举报
回复
;)
mlin2000 2003-05-27
  • 打赏
  • 举报
回复
up
cxx1997 2003-05-27
  • 打赏
  • 举报
回复
2-3级吧,设计能力还不过关
vcshcn 2003-05-27
  • 打赏
  • 举报
回复
2.5吧
ColderRain 2003-05-27
  • 打赏
  • 举报
回复
归纳的不错,作者是个有能力的人。
正从2向3过度中.
gucs 2003-05-27
  • 打赏
  • 举报
回复
to cncoder(静心学notes)

任何行业都是一个金字塔的结构,达到顶层的人只是少数。
其实,作者也未必达到了顶层。
猎人66 2003-05-26
  • 打赏
  • 举报
回复
第二级吧
rom 2003-05-26
  • 打赏
  • 举报
回复
经典
kanon2003 2003-05-26
  • 打赏
  • 举报
回复
呜呜~~~我还没入级!!!!
seaAsky 2003-05-26
  • 打赏
  • 举报
回复
0.1
yoyowoho 2003-05-26
  • 打赏
  • 举报
回复
mark
DanielWYO 2003-05-26
  • 打赏
  • 举报
回复
大概我是在第一级吧
binbin50 2003-05-26
  • 打赏
  • 举报
回复
看了之后,发现自己在初级程序员阶段,要加油了
gameisover 2003-05-26
  • 打赏
  • 举报
回复
经典
SeekTruth 2003-05-26
  • 打赏
  • 举报
回复


1。5级。呵呵
dongguabianbian 2003-05-26
  • 打赏
  • 举报
回复
受易非浅! 一直对自己的定位迷惑不解! 今天发现自己编程两年多,离菜鸟并不远!
dihai2000 2003-05-26
  • 打赏
  • 举报
回复
经典
coast1982 2003-05-26
  • 打赏
  • 举报
回复
up
加载更多回复(19)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧