【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……

/祈福//思念//joy//panda//smile//315/有关我的一切,认识的都了解…不认识的交集过也会慢慢了解…说与不说,我还是我。从今天起时刻不忘三问:为什么,梦想理想目的;怎么做,一分耕耘,一分收获;办法总比困难多。
运筹帷幄之中,决胜千里之外,九层之台起于垒土,千里之行始于足下……
思想:505406143
生活:619582527
工作:Hello world,谷百4,just here !

程序员

百科名片

程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类的方法。

目录

岗位职责
职业认证
岗位分类
行业现状
职业要求
必备技能
  1. 熟练开发工具
  2. 熟知数据库
  3. 了解操作系统
  4. 明白DCOM/CORBA/XML/WEBServices存在的意义
  5. 不要将软件工程与CMM分开
  6. 需求理解能力
  7. 模块化思维能力
素质要求
  1. 团队精神和协作能力
  2. 文档习惯
  3. 规范化的代码编写习惯
  4. 测试习惯
  5. 学习和总结的能力
  6. 拥有强烈的好奇心
职业困境
中国社会科学院文献信息中心主办的杂志
  1. 基本信息
  2. 栏目
展开
岗位职责
职业认证
岗位分类
行业现状
职业要求
必备技能
  1. 熟练开发工具
  2. 熟知数据库
  3. 了解操作系统
  4. 明白DCOM/CORBA/XML/WEBServices存在的意义
  5. 不要将软件工程与CMM分开
  6. 需求理解能力
  7. 模块化思维能力
素质要求
  1. 团队精神和协作能力
  2. 文档习惯
  3. 规范化的代码编写习惯
  4. 测试习惯
  5. 学习和总结的能力
  6. 拥有强烈的好奇心
职业困境
中国社会科学院文献信息中心主办的杂志
  1. 基本信息
  2. 栏目
展开

岗位职责

  1、对 项目经理负责,负责 软件项目的详细设计、 编码和内部测试的组织实施,对程序员小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
  2、协助项目经理和相关人员同客户进行沟通,保持良好的 客户关系。
  3、参与需求调研、项目可行性 分析、技术可行性分析和需求分析。
  4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
  5、负责向项目经理及时 反馈软件开发中的情况,并根据实际情况提出改进建议。
  6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
  7、负责相关技术文档的拟订。
  8、负责对业务领域内的技术发展动态。


行业现状

  由CSDN、《程序员》主办的2007年开发者大调查2007年底已收到15000多份有效 问卷,已经是 中国调查样本最多的开发者调查。在这次调查中,详细的分析了样本空间的分布状况,发现在庞大数目的有效问卷的参与者中有70%也就是接近一万一千名的参与调查者是 IT的全职人员,14%的参与者是有过开发工作经验的学生,从这样的分布就可以看出来IT从业人员对专业知识的需求是巨大而迫切的,CSDN作为专业的软件开发技术 门户网站,已经是大家获取这些技术知识的主要手段。
【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第1张图片

程序员


   一、选择数据库技术和互联网技术的人数总和占到了总人数的一半
  2007年火热的SOA和动态语言各占13%和12%。其实这几大块技术分布他们之间都是有一定的联系的,互联网的发展近两年呈爆炸式的增长态势,中国的网民总数已经超过了1.4亿这样一个巨大的数字。
  企业中业务的复杂程度越来越高,商业竞争不断增加企业的IT系统,使企业的商业数据呈几何数量级不断增长,在后台海量的数据中数据的管理由之前的单一型数据变成了多纬度的复杂数据,所以可以同时管理 关系型数据库 和XML数据的混合型数据库已经成为主流。
  面对企业不断增加新的IT信息系统,整合已经迫在眉睫,SOA成为必然的趋势,企业对人才的需求从单一型技术人才、业务人才跳跃到了业务技术的 复合型人才 ,这次的开发人员大调查令《 程序员》杂志的调查者看到了这些技术焦点背后千丝万缕的关联。
【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第2张图片

程序员


   二、几乎一半的.NET用户不参与开源项目RedHat+Ubuntu占有率超过70%
  应用到.NET平台上的开源项目,“大量使用”的比例数仅为8.68%,尚不足一成;“少量应用”的开发者人数比例为42.78%。“基本不用”的比例高达48.54%,与前二者之和几乎不相上下。
  虽然 开源 的出现和发展,让软件没有 垄断 的未来日渐明朗;虽然开源运动经过多年的高速发展,现在已经聚集了相当的力量,开源的自由和给予 理念 逐渐深入到了企业的技术核心层面。但微软以商业软件为生,毕竟在微软技术领域中,开源项目通常都被看作是二等公民。很多开源项目对.NET社区产生了巨大的推动作用, 微软公司 很难提供任何实质性质的支持。
  Linux版本
  当前安装有 Linux操作系统 ,数据中RedHatFedora占据绝对优势——Linux使用者使用该版本占总数的49.49%。 Fedora 是RedHat推出的重要的一款 Linux版本 ,在每个fedora版本中都是集成最新的Linux软件,特别是服务端软件。
  使用“RedHatFedora”关键词在 百度 网页中搜索得到7,090,000条结果,RedHatFedora在调查中占据Linux版本的半壁江山符合整个Linux版本的分布情况。
  排在第二位的是 Ubuntu ,受支持数占到总数的23.92%;第三位的是SuSE占9.09%,接下来是Debian,使用率为5.92%。
  在这里面令人期待的中国本土Linux的让人大失所望。使用率仅占5.16%,几乎只 有RedHatFedora的十分之一。

【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第3张图片

程序员


   三、揭示八成技术人员数据库选型标准SQLServer用户接近50%
  使用率占据榜首的数据库产品是微软的 SQLServer ,比例数达到了47.92%。与其余所有的数据库之和分庭抗衡,大有一览众山小之势。
  从调查得到的 使用率 来看,MySQL仍处于望MSSQLServer项背的阶段。调查显示, MySQL 的使用数为1651,占总数的13.80%,不过排名第三。
  使用率排在第二位的是 Oracle ,比例达到24.21%。在前有SQLServer,后有MySQL的情况下,Oracle仍能达到四分之一的占有率,发展势头不可谓不强劲。
  虽然Orcale数据库的价格比SQLServer数据库要高,但Oracle采用开放的策略目标,可在所有主流平台上运行。而且有开发者认为Oracle的 安全认证 是获得最高认证级别的ISO标准认证,因此安全性高于SQLServer。
  排在第四位的是Access——5.59%;接着是DB2UDB,占总数的2.75%;至于FoxPro、Informix、PostgreSQL、Sybase得票数均仅在一百左右,还有待进一步的发展。

  【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第4张图片

程序员

   四、中国程序员最爱的智能手机平台Linux+Java超过Symbian
  “开源Linux对于众多开发者的吸引力是巨大的,但是,这仅仅是针对于技术开发人员来说的,而对于普通消费者就不是如此了。”在众多开发者心中,主要是对Linux的青睐。从调查结果中也可以直接反应这样的现象。有专家对此评论说:Linux+Java的模式,应该是应用最多的模式。
  开源Linux对于众多开发者的吸引力是巨大的,但是,这仅仅是针对于技术开发人员来说的,而对于普通消费者就不是如此了。针对此问题行业的专家有自己的观点:“现在Wince和Symbian发展很快,并且随着手机硬件方面性能的提高,很多政府部门和企业在 采购 时,很多会考虑Dopod这样的手机,或者价格便宜,Wince和Symbian都主要使用 c++ 开发,正是嵌入式开发的潮流。”
  不同人群对于收集智能 操作系统 的观点是不同的,对于开发者角度,他们更加青睐于微软和开源Linux的产品,而普通大众他们比较喜欢Wince和Symbian。

   五、七成程序员不愿意选择门户网站获取开源信息SourceForge占绝对优势
  30%的技术人员从门户网站获取开源技术信息,剩下的70%的技术人员都是从专业的开源社区和开源厂商的技术网站上获取信息,包括有SourceForge、LinuxToday、 OpenOffice 和IBMdW等。
  在这70%当中,比例占有绝对 优势 的就是SourceForge了,这里是 开源软件 的开发者进行开发管理的集中式场所,也是全球最大开源软件开发 平台 和仓库。而LinuxToday里面会有记录很多很新的Linux业界大事,新闻以及出版信息。所以,对开源技术感兴趣的程序员们,不必再为如何获取开源信息而苦恼了,快加入到这70%的人群中来吧。
  互联网的发展已经成为大家获取信息最主要的渠道之一,网民上网的习惯也从开始的上为数不多的几个门户网站发生了变化,大而全的门户网站并不能满足专业领域人员的信息需求,从2004年开始陆续出现了大量的各个领域垂直细分的内容网站,一方面有长尾理论的理论支持,另一方面厂商也建立了相应产品的技术内容网站,希望能聚集一批专注于这个领域专业人士,做好他们的 定向营销
  做细分领域内容的网站对门户已经造成了一定的威胁,这些网站的专业性高,用户的粘性相对也比较高,如果细分领域的内容网站能将自己的服务有所提升,就如同SourceForge一样,那么未来门户网站的路就变得更加崎岖了。

【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第5张图片

程序员


   六、Java开发框架:6%的JSF欲撼动21%的Struts
  JSF现在比较有优势的是对Ajax的 集成 ,这一点走在了其他框架的前面。未来两 年,JSF与Struts将展开JavaWeb框架的最终战争。 经过数年的“框架大战”,Java界的各种框架找到了自己应有的位置。Spring+Hibernate+Struts已成为Java开发的主流体系。在这个体系中,Spring+Hibernate的地位应该说短期内是难以撼动了。除了新兴的JbossSeam作为挑战者之外,几乎难有劲敌。
  JavaB/S编程中历来战火最激烈的其实还在Web层,框架的数量最多,争议最大。一切由Struts而起,而Struts最终也坐稳了第一个时代的王座。在技术层面,Struts1.x已经被无数人抱怨过、批评过,但终于还是稳坐王位,这充分说明了习惯的力量。“ 稳定压倒一切 ”,这句话在IT技术领域仍旧适用。
  详细的分析了Java开发框架的使用状况,发现主要使用的开发框架JSP占26%,Struts占21%,Hibernate占17%,SpringMVC占11%,EJB占7%,JSF占6%,SpringWebFlow和POJO各占4%,其它占4%。就这一调查数据,不难看出,Spring+Hibernate+Struts的优势地位还是相当的明显。
  Struts和Hibernate几乎已经成了JavaEE应用的常规 配置 ,21%的开发者用到Struts,用到Hibernate的开发者也有17%;在一个成熟的技术平台上,各个项目的技术方案会在很大程度上趋同——因为所有未知领域都已经被探明,各种问题都有对应的最佳实践,架构师们可以参考的成功案例越来越多。就拿JavaEE来说,架构师们需要考虑的问题比之三年前已经简单多了,这就是成熟的价值。
【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第6张图片

程序员

  有专家评论:“其实IT应用技术,什么新鲜玩意并不难学,难的是标准化和规范化。每 个程序员都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的占重要地位,很重要的一点在于Java的规范化。这种规范化很高的语言适用于多人合作的大型项目,便于沟通和理解,也就便于集成和维护。 Java世界为什么会框架横飞,说到底还是规范化的需要。纯JSP和Struts写 Web 谁快,摆明了是JSP。那为什么用Struts?原因在于100个人写出来的JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在JavaWeb层的规范化方面所做出的贡献。
  然而 长江后浪推前浪 ,Struts1.x的技术 缺陷 毕竟是隐患。Sun力推JSF,打算一雪Web层框架缺失之耻。JSF现在比较有优势的是对Ajax的集成,这一点走在了其他框架的前面。未来两年,JSF与Struts将展开JavaWeb框架的最终战争。
  JSP经过几年风雨洗礼依然把持头把交椅,看来所有的框架表示层都离不开JSP而存在,而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。

【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第7张图片

程序员


   七、C++开发环境格局难打破75%的开发人员首选VS系列
  BCB正江河日下,2007版本的推出也无法力挽狂澜。虽然现在C++Builder已经归于CodeGear,但人们还是习惯性地与Borland联系上。
  1998年 Borland 公司推出的C++Builder这一当年全新的32位Windows开发工 具,继承了Delphi使用简便、功能强大、效率高的特点,并且结合了C++语言几乎所有优点。所以开始C++Builder迅速风靡。 它的主要竞争对象——Microsoft开发的VisualC++也是不甘示弱,迅速出击,突出了Visual可视化强的特点,加上Platform、SDK部分以及Microsoft产品与Windows的天然默契,逐渐成为了技术人员的首选。随着VisualC++版本的不段升级,以及功能、风格等诸多原因,BCB渐现颓势,许多Builder使用者也开始转而使用Visual了。
  在2007年CSDN、《程序员》主办的开发者大调查中,详细的分析了C++方面大家主要使用什么IDE的状况,在目前已收到的15000多份有效问卷中,发现主要使用VS系列的占了75%,BorlandC++Builder/CBuilderX只占6%,EclipseCDT占6%,DevC++占2%,其他IDE占3%,不使用 IDE 占8%。对于.NET开发,VisualC++2005有了一套新的语法;新的 优化 技术,可使程序的速度最高提高30%;同时新的编译模式,可保证在Microsoft.NETFramework之上生成完全遵从CLI(CommonLanguageInfrastructure)的可验证代码;新的interop模式,可提供本地与托管代码的无缝融合。
  相对于前两个版本,新 编译器 还包括了一个增强版本的 缓冲区 安全检查选项, 而且对C++程序普遍使用的库,也有新的注重安全的版本。VisualC++2005对基于IntelItanium和AMD64的64位平台,提供了对OpenMP标准的支持,并且修正了一些混合DLL 加载 的问题,对DoubleP/Invoke的性能问题,提供了自动运行时消除。 相比之下,C++Builder2007英文版2008年6月初上市。从CodeGear大中华区 技术总监 李维的 博客 ,看到CodeGear对C++Builder2007的期待。虽然说对同一件事情,每个人都有自己的视角,已有五年C++方面学习和开发经验的赖勇浩说道:“BCB正江河日下,2007版本的推出也无法力挽狂澜。虽然现在C++Builder已经归于CodeGear,但人们还是习惯性地与Borland联系上。
  现在的Microsoft及VC势头强劲,产品也具有很高的质量性,CodeGear在C++和.Net领域至少三五年内会继续望其项背。所以推出CB2007,更多的是基于版本延续。”
【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第8张图片

程序员

   八、程序员更喜欢Firefox市场份额超过IE7.0两倍
  参与调查的多数是软件开发人员或者多数是IT从业人员,但是从这一比例不难看出,IE丢失掉了曾经在 浏览器 大战中占据了的技术优势,在 IE6 推出后的5年时间里,浏览器一直在快速发展,而IE却一直没有更新过,这对一个世界上最常用的产品来说绝对是致命的。 Firefox 火狐浏览器 )以它的小巧、安全,很容易扩展和定制的特长获得了越来越多的喜爱。
  更重要的是,它是是一个自由的浏览器,所有的 源代码 都是开放的,任何人可以为它的成长贡献力量。Cookie、页面缓存,个人都可以精确的控制,这些特性都是技术人员们所崇尚的“我的 地盘我做主”的精神。 如果说之前FireFox相对IE6有50%的优势的话,那么,FireFox相对于现在的IE7的优势已经降低到25%左右了。因为 IE7 从底层已经做了很多的修改,已经慢慢的向W3C标准靠近了许多,在功能使用方面与FireFox的差距也变得很细微,Tab功能,CSS和 脚本 支持功能现在IE7都比之前表现强了,差距仅仅存在于某些小细节中了。
  IE6在这个市场中存在了5年之后微软才意识到改变和向国际标准靠拢的重要性,这就直接导致了大量的技术人员失去了对IE的信心,投向FireFox阵营,不过,微软到底还是强大的,在全球范围内有很多的“粉丝”,他们会一直关注微软的任何一次动作,客观的评价也是对产品最好的 反馈 ,也是最有价值的。
  包括了FireFox、Opera这种标准的浏览器,也包括了Maxthon和TT这样基于IE内核的浏览器,对于标准的浏览器,FireFox和Opera的重点是要解决 兼容 问题,而基于IE内核的Maxthon和TT更主要的是要解决浏览器插件、工具的应用问题,所以,技术产品的激烈竞争带给用户的其实是一种良性循环,使我们可以第一时间用到最好用的工具,至于商业效应,还是留给厂商自己去考虑吧。
【乾言龙语】从今天第一篇博客起,用心记录下我的IT之路,不论未来如何……_第9张图片

程序员


   九、中国程序员健康两成感觉很虚弱亚健康接近七成
  “干得比驴累,吃得比猪差,起得比鸡早,睡得比狗晚,看上去比谁都好,五年后比谁都老。很多程 序员都曾这样感慨和抱怨过自己的生活状态。” 亚健康状态 是人体处于健康和疾病之间的过渡阶段,在身体上、心理上没有疾病,但主观上却有许多不适的症状表现和心理体验。
  位于调查结果第二位的是“很虚弱”——149,比例为19.81%。很虚弱的健康指数低于亚健康,已接近生病和透支状态,他们的健康已经被亮出了 黄牌
  每个人的理解不一样,但是“糟透了”这样的词如果用来形容程序员健康的话,相信大多数人都绝对认同“你已经病了”这样的理解。令人不敢相信的是,竟然有8.24%的程序员用这个词来形容自己的健康状态!
  调查结果中“非常健康”的票数低得可怜——40,即使算上“没感觉”,二者之和也不过9.04%,几乎跟“糟透了”持平。如果将“非常健康”和“没感觉”一起算为健康的话,处于 亚健康 状态的程序员是健康状态的7倍,自认为“很虚弱”的程序员数目是处于健康状态的2.2倍!
程序员

程序员

   十、.NET全面进入2.0时代,AJAX风头正劲 “在Java领域,JDK5.0是当之无愧的主流平台,但JDK1.4仍保有一半以上的 占有 量。总的来说,Java族群显然不像.NET族群那样追新。从另一个方面看,这也说明 Java平台 的成熟,和.NET平台的迅速发展。”
  根据2007年的调查数据分析,在.NET领域,.NETFramework2.0的采用量已全面超越.NETFramework1.1,成为.NET平台的首选框架。2006年调查结果,1.1和2.0的采用量基本持平,而2007年2.0的采用量则高达1.1的三倍之多。.NETFramework1.1已是明日黄花,微软的更新 换代策略可以说是成功的。 在Java领域,JDK5.0是当之无愧的主流平台,但JDK1.4仍保有一半以上的占有量。总的来说,Java族群显然不像.NET族群那样追新。从另一个方面看,这也说明Java平台的成熟,和.NET平台的迅速发展。
  B/S已经成为中国软件业普遍接受的 软件结构 。在表现层,AJAX技术采用量较去年有较大提升,有将近一半的Web应用采用了AJAX技术,仍采用纯HTML+少量脚本的Web应用中,也有四分之三打算转向采用AJAX技术。反观微软和Adobe力推的新一代RIA平台,则响应者尚少。分别只有1/20和1/10的人愿意选用SilverLight和Flash/Flex作为Web表现层技术。
程序员

程序员

职业要求

  一般的程序员都有四年的在专业领域的学习,需要一个在程序领域的学士学位获得者,不论是数学方面的还是工程方面的都是可以的。
  大约有20%的人在这一领域的 计算机科学和 工程学拥有更高的学位。还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的 学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的 学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。
  对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的 业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加 研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。

必备技能

熟练开发工具

  做为一名程序员至少熟练掌握两到三种 开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如s hell,perl等,至少能读懂这些脚本代码。

熟知数据库

  为什么 数据库是如此重要?作为程序员,他们自然有自己的理由:很多 应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中 关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握 SQL的基本语法。虽然很多数据库产品提供了可视化的 数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业 数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。

了解操作系统

  当前主流的操作系统是 Windows,Linux/ Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的 内存管理机制、进程/线程调度、信号、 内核对象、系统调用、 协议栈实现等。 Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有 现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议 TCP/IP。
  在互联网如此普及的今天,如果您还没有对互联网的支撑协议 TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。

明白DCOM/CORBA/XML/WEBServices存在的意义

  随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是 微软COM( 组件对象模型)的扩展,而 CORBA是OMG支持的规范。XML/WebServices重要性不言而喻, XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是 分布式计算的基石之一。

不要将软件工程与CMM分开

  大型软件系统的开发中,工程化的开发控制取代 个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的 软件工程思想有机结合,编程只是软件 生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场 分析,可行性分析,需求分析,结构设计,详细设计, 软件测试等。

需求理解能力

  程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。

模块化思维能力

  作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。

素质要求

团队精神和协作能力

   团队精神和协作能力是作为一个程序员应具备的最基本的素质。 软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是 工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。

文档习惯

   文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间用于写技术文档。没有文档的程序员势必会被 淘汰。

规范化的代码编写习惯

  知名软件公司的 代码的变量命名、注释格式,甚至嵌套中行缩进的长度和 函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的 移植和纠错,也有助于不同技术人员之间的协作。

测试习惯

  测试是软件工程质量保证的重要环节,但是 测试不仅仅是测试 工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。

学习和总结的能力

  程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些 编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,只能说他是一名熟练的代码民工(码农),他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为 软件设计师、系统分析员。

拥有强烈的好奇心

  什么才是一个程序员的终极武器呢,那就是强烈的 好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。

职业困境

  老虎、Bill、自己,中国程序员的困境也来自三个方面
  困境之一: 老虎的威胁。程序员要面对的饿老虎实在不少,比如说老板,好象老板就是程序员的 天敌,什么“不懂技术却指手画脚”、什么“得到与付出不相当”似乎是程序员最常见的牢骚,这个问题不可能得到真正的解决。
 
  困境之二: Bill的竞争。一般说来中国的程序员大都是吃“青春饭”的,大部分程序员的 黄金时代是24~28岁。到了30岁左右,一批又一批年轻程序员会给你带来巨大的竞争压力。首先由于软件行业的飞速发展,很多自己以前学的东西逐渐升级换代,而许多程序员由于长期于工作,学习新知识的效率必然下降。其次自己干了几年,薪水要求自然就高了,而年轻程序员 工资又低、干活又快,当然会成为老板的首选;第三,30岁基本都已经成家了,要支撑家庭的生活负担,几乎连从头再来的勇气都不会有了。中国的老话说“长江后浪推前浪、一代新人换旧人”,这个历史的规律在软件开发行业体现的尤其明显和残酷,很多程序员必然要面对的结果就是降薪乃至失业。
 
  困境之三: 自我的实力。都知道人最难战胜的是自己,所以自我也就是程序员需要超越的最大 障碍。大多程序员都把 系统分析员和项目经理作为自己的职业目标,但这些目标的达成,需要个人素质、市场机遇等多个方面的条件,太多的程序员就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员,特别需要以下几方面的素质: 客户需求分析能力、系统架构与设计能力、 模块分解设计能力、项目 流程控制能力、项目风险评估能力等,而对于 项目经理则更注重项目管理方面的能力如团队组织能力、沟通协调能力、分析问题解决问题的能力以及良好的 职业道德等,而这些素质和能力往往只能依靠程序员个人的学习和努力。看到越来越多的程序员开始学习项目管理的课程,真的有点为他们担心,因为现在的 项目管理培训只能停留在理论和考证的程度,既没有素质方面的训练,又缺少实际 软件开发项目的案例,学习的结果远远不能达到预期的效果。

你可能感兴趣的:(《在IT路上》)