程序员的发展和境界

评论:在IT社区看到这篇文章,觉得挺有意思,挺激励人的,所以引用来大家交流,只要能不断付出和努力,总是有收获的,这样对自身和企业的持续发展都是很有利的!

原文:程序员的四个境界
http://bbs.chinaunix.net/viewthread.php?tid=149659

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

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

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

· 可以运行的程序

· 健壮、高效的程序

· 结构优美的程序

· 思想深邃的程序

程序员的必经第一个阶段都是编写可以运行的程序。很多人的编程生涯是从“Hello World”开始,当第一次按照教科书上的步骤,将源文件编辑完后,编译、连接、运行,在屏幕上显示出“Hello World”时,心中的激动一点也不亚于阿里巴巴打开了宝库的大门。初级程序员的目标一般是让程序能运行起来,他们迷惑于库函数的众多,不知道该用那一个,他们还要学习基本的语法,以使程序编译通过。初级程序员一般不会考虑设计模式、软件结构等问题。


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

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

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

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


转载于:https://www.cnblogs.com/grandydong/archive/2007/08/12/852758.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC 上传大文件时404

前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传。 后来服务器升级到windows 2008,改为IIS7后,上传文件一旦超过30M时,就出现404错误,而且是是上传进度达到10…

下午去银行办理按揭手续,不得已调休半天

可恶的银行非得在工作日才办理按揭手续,不是人民的银行为人民吗?既然存款利率要降,以后还打算收取存款费用,那银行就是[或者打算是]地道的服务行业,周末对公业务不开就算了,个人按揭也闭门,没有…

Scott Hanselman 喊你来看看最新的极简APII

近日,Scott Hanselman 在社交网络上发布了 .NET 的最新消息:现代的 C# 特性和 ASP.NET Core 中新的极简 API 正在 .NET 6 中开始出现。你可以在 DamianEdwards 的仓库中看到一些示例,并与团队分享你的想法! (点击原文链接查看仓库…

全球孩子迷恋手机/iPad,其实罪魁祸首是父母!

全世界只有3.14 % 的人关注了青少年数学之旅我从来没有想过,现在孩子的童年会是这样子的。他们手上捧着的不是书籍,而是小手掌都握不过来的手机、iPad;他们嘴上谈论的不是作业,而是许多成年人都搞不懂的王者和吃鸡。很多父母说&am…

c#设计模式(转)

http://terrylee.cnblogs.com/archive/2006/06/01/334911.html转载于:https://www.cnblogs.com/niuniu502/archive/2007/08/17/859032.html

好资源大家分享

500 本E书下载 http://forum.blogchina.com/38652.htmlMSN7发布: http://dl.pconline.com.cn/html/1/1/dlid2461&dltypeid1&pn0&.html

oracle vm 安装虚拟机小bug

2019独角兽企业重金招聘Python工程师标准>>> 如果是iso文件是64位, 那么在创建虚拟电脑时选择的系统就是window7 x64。否则报错:0000225错误. 转载于:https://my.oschina.net/u/1174884/blog/175596

庄表伟:License之外,社区的规则与潜规则 | DEV. Together 2021 中国开发者生态峰会...

内容来源:2021 年 6 月 5 日,由 SegmentFault 思否主办的 2021 中国开发者生态峰会圆满落幕。会上,华为云产品专家、开源社理事长庄表伟发表了主题为《License之外,社区的规则与潜规则》的演讲。分享嘉宾:庄表伟&#…

GridView 简单扩展

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Text;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;namespaceFanfajin.MyWebControls{ /**//// <summary> /// 增强的 GridView 控件 扩展 /// &…

mysql 1117_1117Mysql prepare预处理语句

转自http://www.jb51.net/article/81378.htm综述&#xff1a;一般用来拼凑SQL然后执行MySQL 5.1对服务器一方的预制语句提供支持。如果您使用合适的客户端编程界面&#xff0c;则这种支持可以发挥在MySQL 4.1中实施的高效客户端/服务器二进制协议的优势。候选界面包括MySQL C A…

为了偷吃东西你能有多拼?! | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;

[music]Canon and Gigue in D major

卡农Canon——复调音乐的一种,原意为“规律”。一个声部的曲调自始至终追逐着另一声部&#xff0c;直到最后……最后的一个小结&#xff0c;最后的一个和弦&#xff0c;它们会融合在一起&#xff0c;永不分离。缠绵制及的音乐&#xff0c;就像两个人生死追随。 Canon (卡农) 是…

Nacos真香,从零到一学起来

Nacos是阿里巴巴开源的微服务管理平台&#xff0c;可以帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。这篇文章主要来讲一下Nacos作为配置中心和注册中心的使用。1 安装 1.1 linux下安装首先搭建一套单机版的Nacos集群。Nacos的安装有两种方式&#xff0c;…

Servlet学习一

Servlet担当着客户请求&#xff08;Web浏览器或其它HTTP客户程序&#xff09;与服务器响应&#xff08;HTTP服务器上数据库或应用程序&#xff09;的中间层。Servlet是位于Web服务器内部的服务器端Java应用程序&#xff0c;与传统的从命令行启动的Java应用程序不同&#xff0c;…

自律的程度,决定你人生的高度

全世界只有3.14 % 的人关注了青少年数学之旅对于不少用户来说&#xff0c;微信已经成为了获取新资讯的重要途径之一。如何保证自己找到「值得看」的内容&#xff1f;每天更新的文章这么多&#xff0c;哪些才值得你看呢&#xff1f;今天就为大家推荐一些颜值与才华并存的好评公众…

pythonjam进不去怎么办_教程看了一遍又一遍,自学Python还是连门都进不去?

首先大家学习python一定要以实用性为导向&#xff01;如果去盲目看教程&#xff0c;结果大多是浅尝辄止&#xff0c;从入门到放弃。大家所谓“看不进去”或者“记不住”&#xff0c;本质上还是“看不懂”。你可能觉得书上或者教程写的都理解了&#xff0c;但是去示例代码照着敲…

标准MD5 .Net,实现!的对与错!

关键之处在,从byte到字符串的处理下面是一个错误的实现! /**//// <summary> /// 返回32位md5十六进制加密 /// </summary> /// <param name"strValue">待加密的字符串</param> /// <returns></return…

[导入]Asp.net中动态在中加入Scrpit标签

许久以前&#xff0c;写过一篇《asp.net页中动态加入样式表文件》&#xff0c;后来发现在使用时如果每页都写这么个函数真是很麻烦&#xff0c;于是自己写了一个Page的派生。将这个函数加了进去。/**////<summary>///作者 邹健 ///日期 20070202 ///重载的Page类。…

android 多布局

做为最后的方法&#xff0c;也是最后一个才会考虑的方法&#xff0c;那就是为不同的尺寸界面单独写布局。不到万不得已不要用这个方法&#xff0c;相信不少人和我一样都被逼着用过这个方法吧。需要说明的是&#xff0c;横竖屏切换使用不同布局也是用这个方法解决的&#xff1b;…

支持c#的分表分库组件-Ctrip DAL

简介Ctrip DAL是携程框架部开发的数据库访问框架&#xff0c;支持代码生成和水平扩展。其由携程技术中心框架部DAL团队开发&#xff0c;历经3年不断打磨&#xff0c;并在长期的实际使用中基于大量的用户反馈不断优化。开源范围包括代码生成器&#xff0c;Java客户端和C#客户端。…