IT行业可谓现在的热门行业,程序员也是很多人羡慕的工作。薪水高,不用东跑西颠,敲敲键盘,看看屏幕,一切工作全都搞定,轻松而方便。
果真如此吗?
不尽然,实际上,程序员的职业生涯也是一个求道的过程,需要不断的提高和学习,IT行业知识更新之快,常让程序员们有随时掉队的危险,无一日不战战兢兢,不敢稍有懈怠。
程序员的职业生涯也可分为四个阶段,初级程序员(菜鸟)、高级程序员(熟练工)、系统程序员(高手)、软件大师(大师),其作品也 经历四种境界:
可以运行的程序
健壮、高效的程序
结构优美的程序
思想深邃的程序
1
第一阶段的程序员都是编写可以运行的程序,很多从“Hello World”开始,当第一次按照教科书上的步骤,将源文件编辑完后,编译、连接、运行,在屏幕上显示出“Hello World”时,心中的激动一点也不亚于阿里巴巴打开了宝库的大门。
初级程序员的目标一般是让程序能运行起来,他们迷惑于库函数的众多,不知道该用那一个,他们还要学习基本的语法,以使程序编译通过。初级程序员一般不会考虑设计模式、软件结构等问题。
程序员菜鸟的时候编写的第一个较大的程序是本人的本科毕业论文题目——一个计算机辅助实验系统,开发工具为Turbo C,在DOS下开发(那个时候Windows还不太流行),整个软件大约7000行代码,在当时已经能干不少事,在DOS下也能显示不少花里胡哨的图形界面,支持中文,支持鼠标操作(那时候在DOS下需要自己处理鼠标事件中断),当时还颇受好评。
可是今天再重新温习过去的作品,真有点掺不忍睹,整个软件毫无结构可言,一共分成两个源文件还是由于编译器不支持一个太大的源文件而被迫分开,整个系统就是源代码的简单堆砌。相信每个程序员都需要经历这个阶段,它是程序员职业生涯的开始,没有捷径可以跨越,只有不断的实践、学习和总结。
2
第二阶段的程序员已积累了不少的编程经验,语法和库函数不再是障碍,他们已不再满足于程序正确运行、功能实现无误。
他们需要了解程序背后发生的事情,需要了解操作系统的原理和调度机制,需要了解怎么样才能开发出更安全的程序,这个阶段的程序员往往还不懂得如何保护自己的程序,因此需要借助第三方安全平台去给程序做加密保护。
同时还要了解内存管理,文件系统组织等;了解开发工具的细节,如C的函数调用机制,参数的传送机制、堆栈的建立过程等;了解Java的封装、继承和多态性背后的机制,虚函数实现机理等。他们不仅知道程序应该如何运行,还知道它为什么这样运行,能编写高效、鲁棒的程序。
3
第三阶段的程序员能构建结构优美的软件系统,软件系统结构的合理性、可扩展性、可维护性、可测试性是系统程序员考虑的重点,结构优美的软件系统同一栋完美的建筑群一样,每个部分各司其职,搭配合理。
一直认为,一个好的软件系统应当具有美学特征,如简洁、和谐规范、层次感等。
一个好的软件系统应当是简洁的,易于理解的;
应当是和谐规范的,每个部分高内聚、低耦合,既分工又合作;
应当是层次分明,易于维护和移植。
所以,建议那些进行软件系统设计的程序员, 当你设计完一个系统后,需要问问自己:"它美吗?",如果答案是否定的,那么我建议你需要重新考虑系统的设计,如果答案是肯定的,那么,恭喜你,你已经达到一个相当高的水平。
4
最后一级也许是每个程序员梦想达到的顶峰,程序设计不再是简单的工具,而是大师们改变世界的魔杖,从C到Java,再到COM和COBRA,再到XML 和WEB SERVICES,每次改变,不是软件语法和开发工具的升级,而是用软件构建现实世界模型的改变,是一种软件思想的革命,软件具有了灵魂和智能。
如果没有理解这一点,认为Java只是更好的C,COM只是更好的Java话,你就没有了解它们的精髓和思想性。
五流程序员比技术和工具
五流程序员关心的是用什么工具可以产生什么结果,他们知道用Safe.ijiami可以去轻松检测下程序的漏洞,而不用再去一个个代码的扒拉修bug,使用工具可以大大提高效率、节省时间!
然后去追逐他听过最新、最好、最时髦的技术,沉浸于一些小的练习,却很少走出象牙塔和客户或市场进行真正的沟通,甚至完成大型的真实案例。
四流程序员比较整合和管理
四流程序员比前者更关心在什么地方使用什么,他的心里放着集成各种技术的地图,而不偏向单一工具或技术,他在乎运作一场战役的风险,还有资金成本的考量,包含开发时间、维护难易、用户培训或是市场推广……
三流程序员比创意和设计
三流程序员不仅要求把事情“做完”,同时要求自己把事情“做好”,他的作品里充满着感动和生命,即使好几年以后重新来过,你依然会觉得那些创意和设计,突破了时空限制,只能模仿无法取代。
二流程序员比沟通和性格
二流程序员跳脱工具,比人际沟通,他知道怎样和老板沟通,怎么和同事沟通,也知道怎么和客户沟通。他有一个成熟且稳定的性格,让任何人跟他在一起做事都有安全感,并且感到快乐。
一流程序员比态度和方法
一流程序员比的是学习态度和方法,包括对自我控制的能力,也就是纪律,我们不看他做出来什么事,而是看他准备怎么怎么去做,包含解决问题需要的时间,还有学习新事物的方法。
只要他掌握了适合他自己学习的态度和方法,那么他可以从任何时刻开始学习,并且展现最好的结果,至于现在会不会,懂不懂都不重要,因为只要他想要,他就随时可以要,也能要得到。无论你用或不用,学或不学,好资源就在那里
超级程序员比思想和素质
程序只是语言的表述,而语言则是思想的淬炼。
超级程序员不仅改变我们的行为,也企图改变我们的思想。你不需要从超级程序员的代码判断他的素质,而是从他写的字,他说的话去感受他,因为没有那个思想到不了那个境界。
转载自:程序员之家