不知不觉已经工作五年了,回顾自己五年的程序员生涯,总结了一些东西,希望对想从事程序员工作的
xdjm
们有些帮助。
如何从编程爱好者进阶为职业程序员:
一、
简单才是美
好的代码一定是最简单的,这应该是每个职业程序员心中万世不变的箴言。一个简单的“
hello world
”,可以有十几种实现,但是职业程序员绝对不会标新立异,他们会选择最简单最常用的那种。
为什么要写简单的程序?一、简单的程序易于扩展;二、简单的程序易于维护;三、简单的程序易于发现问题
……
写简单程序的理由实在太多了。能用
10
行实现的,就不要写
100
行;能用数组实现的,就不要用
avl
树
…..
总之,在能实现功能的情况下,程序越简单越好。
二、严格遵守编程规范
程
序员入职时,都会得到一本公司的编程规范。虽然每个公司的编程规范不尽相同,但是基本都讲的是排版格式、注释、命名规范、可测试性、语法规范等方面的内
容。编程规范是前人总结出来的经验教训,每个职业程序员都应该严格遵守。在项目层面上来说,编程规范是项目成员应该遵守的约定,这样项目代码才会风格统
一,尽力约束个人风格,避免出现
10
个人的项目出现
11
种风格的情况。
严格遵守编程规范,还可以避免出现一些低级错误。如:编程规范中有一条,条件判断式使用双等号
”==”
时,应该将常量放在双等号左侧,变量放在右侧。遵守该条规范可以避免出现所谓的“差一错误”,即将双等号写成等号。这种情况下,编译器会报错。
职业程序员写出来的代码应该是风格一致的,这样的代码便于维护,便于其他程序员的阅读,也可以规避一些低级错误,所以,严格遵守编程规范是程序员职业化的重要体现。
三、代码的质量属性
代
码的质量属性主要有三个方面:功能、可扩展性、性能。功能:是对一段程序最基本的要求。程序首先要正确实现预期的功能,才能谈其他的质量属性。可扩展性:
对于一个大型地,需要长期维护的软件来说,程序会不停地加入一些新的特性。如果程序的可扩展性差,就会导致系统的频繁重构,浪费大量的人力物力。可扩展性
应该是在程序的设计阶段就考虑到。当然,没有谁能在设计之初就考虑到所有的扩展性,但是我们必须尽量考虑周全,这就涉及到设计的方法和理论了,这里不讨
论。性能:好的程序应该考虑性能。但是,这因应用场景而论。比如:一个简单的计算器程序,我们没必要花太多地精力去提高它的性能。但是,对于一个大型的平
台系统(电信软件、操作系统、数据库系统等),我们就得花精力去考虑性能问题了。
三个质量属性的优先级应该是:功能正确
>
扩展性好
>
性能高。
通常,某些质量属性之间本身是矛盾的。有时候,我们顾得了性能,程序的可扩展性就会变差。反之,可扩展性好了,但是就会影响性能。一般情况下,我们会按照上面的优先级别来取得质量属性的平衡。
四、经常
review
你的代码
程序员都是心高气傲的,他们往往对自己写的代码充满了自信,以至于写好以后再也不愿意去多看一眼。但是,既是是大牛,也不能保证代码零缺陷。一个职业的程序员,应该定期
review
自己的代码,不断发现自己代码的
bug
。
五、职业程序员一定是优秀的测试人员
我
在公司几年以来,亲眼看见公司开发和测试人员之间关系的几次变革。刚入公司时,发现问题的数量是考核测试人员绩效的唯一标准,某些部门甚至出现给测试人员
下达日发现问题数量的指标,不达标直接影响年终奖。测试人员和开发人员水火不容,经常出现为了一个问题是否该提单争得面红耳赤。一年以后,情况有所改变,
测试人员不再唯问题单是从。到了现在,公司已经大力提倡开发测试融合了。开发和测试人员联合绩效考核,考核的标准是版本的稳定性以及遗留缺陷密度。开发和
测试人员办公区已经完全融合在一起,测试人员经常给开发人员培训测试方法,开发人员也主动投入到测试发现问题。
我说自身的经历,只是想说明一个事实,开发和测试之间并没有不可逾越的差别。
很多开发人员对测试不屑,觉得那是没有技术含量的活。其实不然,测试人员是站在客户的角度考虑问题,他们往往能考虑到很多研发人员考虑不到的场景。测试有一套非常完善的理论。如果研发人员能够了解一些测试方法和理论,对于软件的设计会有很大帮助。
职业程序员一定是优秀的测试人员。
六、站在设计的高度编码
站
在设计的高度编码,这话说得有点抽象了,但是这确实是我多年来感受最深的一点。软件开发通常分为三个阶段:设计、编码、测试。很多人认为设计是设计师架构
师的事情、测试是测试人员的事情,程序员的工作即是编码。所以,很多致力于成为职业程序员的同学都将全部的精力放在了编程语言的学习上。编程语言只是一个
工具,学得好,只能说明你学会使用了一门工具而已。举个不是很恰当的例子,对于一个画家来说,光学会使用画笔是不够的,还得要有艺术灵感。学会了编码只能
说明你会使用画笔了,但是离画家还远着呢。
有篇很著名的论文叫做《源码既是设计》(
http://www.feifanbbs.com/frame.php?frameon=yes&referer=http%3A//www.feifanbbs.com/
),我非常认同。架构师在设计阶段会输出设计文档,但是对于软件来说源码才是最直接的工程文档,一份好的源码胜过千百篇工程文档
----
这也是敏捷开发的思想。好的源码一定是经过设计的,架构师站在架构的角度设计,但是他很难考虑到代码级别的事情,代码的实现最终要靠编程人员。大到一个流程,小至一个函数,这些是要靠实际编程人员来设计的。编程人员也应该学会设计,懂得一些设计模式和理论。
做一个设计者,而不是代码工人。
以上是我的见解,希望与各位交流。
分享到:
相关推荐
这个压缩包“Java常用工具类”很可能包含了一些由一位有着五年开发经验的工程师精心整理的实用工具类。这些工具类可能覆盖了多种编程场景,如数据库操作、日期时间处理、字符串转换等。 1. **数据库操作**:在Java...
由于本人目前允许上传的资源太小,所以无法上传整个的技术学习笔记(JAVA 五年的工作经验和学习笔记),待以后有机会会分享给大家。 技术体系包括: J2SE/J2ME/J2EE/JAVA代码优化/Flex(BlazeDS、PureMVC等技术)...
五年JAVA 开发人士 精华 助手文档 必备核武器
文章作者在五年软件开发的职业生涯中经历了技术能力的停滞不前、职业方向的迷茫、以及对个人成长的深刻反思。在即将转换职业跑道之际,他回顾了自身在软件开发领域的经历,并给出了对后来者的几点建议。 首先,作者...
Cscms 采用PHP5+MYSQL做为技术基础进行开发,采用OOP(面向对象)方式进行基础运行框架搭建,模块化开发方式做为功能开发形式,五年开发经验的团队,勇于创新追求完美的设计理念,被更多的政府机构、教育机构、事业...
对于具备三、五年开发经验的同学而言,可能会接触到领域建模。如果公司规模较大,可能会更早接触这一概念。但是,领域建模好像一座高山,很难越过。目前,业界提出了很多方法建模,但没有一种被公认是最好的方法,大...
Cscms 采用PHP5+MYSQL做为技术基础进行开发,采用OOP(面向对象)方式进行基础运行框架搭建,模块化开发方式做为功能开发形式,五年开发经验的团队,勇于创新追求完美的设计理念,被更多的政府机构、教育机构、事业...
Cscms 采用PHP5+MYSQL做为技术基础进行开发,采用OOP(面向对象)方式进行基础运行框架搭建,模块化开发方式做为功能开发形式,五年开发经验的团队,勇于创新追求完美的设计理念,被更多的政府机构、教育机构、事业...
【前端开发简历模板-张女士-web前端-5年】的文档描述了张女士作为一名拥有5年经验的Web前端开发者的专业技能和工作经验。她的主要技术专长包括: 1. **Web开发基础**: 张女士精通HTML5和CSS3,这两种语言是构建网页...
【五年制高职电子技术项目课程的开发与实践研究】是一个旨在深化工学结合、校企合作的高职教育人才培养模式的课题。该研究针对五年制高等职业技术学校机电一体化和电气自动化专业的电子技术课程,旨在通过项目课程的...
中国旅游景区开发行业竞争态势与未来五年投资策略研究.doc
【摘要】中的文章主要探讨了基于职业能力的五年一贯制课程体系的开发与实践,以山东电力高等专科学校的发电厂及电力系统专业为例。文章指出,通过教学专家和工程技术人员的合作,对工作岗位、工作过程、工作对象、...
柳州市新中企开发有限公司五年(XXXX-XXXX)年发展规划(改后).doc
金晖房地产开发有限公司五年发展规划纲要(XXXX-XXXX).doc
本人作的申报五年制高职计算机应用技术专业教学指导方案开发工作的申报书,是山东省教育厅下的表格。
中国软件开发和评测平台行业的市场规模预计在未来五年内将持续扩大,并有乐观的前景预测。目前,行业已进入大规模推广应用阶段,市场需求增长点多样。精细化和差异化的服务与产品将成为竞争优势的关键。此外,与...
五年制高职计算机网络技术专业《SOHO网组建与管理》课程开发初探.pdf
根据给定文件的信息,我们可以总结出未来五年程序员应当掌握的十项关键技能: ### 1. 掌握至少一种主流编程语言(.NET、Java、PHP等) 在未来的五年里,程序员应该至少熟练掌握一种主流的编程语言,比如.NET (包括...
在本资源中,"蓝桥杯嵌入式近五年国赛/省赛赛题实现代码(嵌入式设计与开发组-F103RBT6平台 )" 提供了过去五年内蓝桥杯全国软件和信息技术专业人才大赛嵌入式设计与开发组的竞赛题目解决方案,这些代码是基于STM32...