
程式设计师(职业)
程式设计师(英文Programmer)是从事程式开发、程式维护的专业人员。一般将程式设计师分为程式设计人员和程式编码人员,但两者的界限并不非常清楚,特别是在中国。软体从业人员分为初级程式设计师、中级程式设计师、高级程式设计师(现为软体设计师)、系统分析员,系统架构师,测试工程师六大类。
基本介绍
- 中文名:程式设计师
- 外文名:Programmer
- 拼音:chéng xù yuán
- 职责:程式的设计、开发、维护
- 分类:设计人员、编码人员
岗位职责
1、对项目经理负责,负责软体项目的详细设计、编码和内部测试的组织实施,对小型软体项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关係。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软体部开发的软体项目的相关软体技术。
5、负责向项目经理及时反馈软体开发中的情况,并根据实际情况提出改进建议。
6、参与软体开发和维护过程中重大技术问题的解决,参与软体首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
职业认证
考试介绍
软考程式设计师考试属于计算机软体水平考试(简称软考)中的一个初级计算机职称考试。对于软考程式设计师考试并无学历及资历条件限制,更无论年龄、专业与资历。一年可报考软考程式设计师考试两次,但一次考试只能报考一种资格,因此报考了程式设计师考试则无法再报考软考其他级别或科目的考试。同时软考程式设计师考试採用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标準、统一证书的考试方式。
通过国家统一组织的考试,资格考试分为:程式设计师级(原初级程式设计师)、软体设计师(原高级程式设计师)以及更高水準的:信息系统项目管理师、系统分析师(原系统分析员)、系统架构设计师、网路规划设计师、系统规划与管理师。
考试目标
通过本考试的合格人员能根据软体开发项目管理和软体工程的要求,按照程式设计规格说明书编制并调试程式,写出程式的相应文档,产生符合标準规範的、实现设计要求的、能正确可靠运行的程式;具有助理工程师(或技术员)的实际工作能力和业务水平。
1、CVEQC认证持有者已经通过了中国职业教育资格认证指导中心组织的培训和相应的考试,具有相应的专业技能和知识。
2、CVEQC证书可作为劳动者岗前培训、在职培训、提高培训、继续教育的培训认证;也是劳动者“先培训、后就业,先培训、后上岗”的凭证。
3、CVEQC证书是中国职业教育资格认证指导中心颁发的专业技能证书。标有证书序列号、证书编号、培训者及证书持有者身份证号码,并盖有全国职业教育管理委员会、中国职业教育资格认证指导中心的证书专用章。
4、 证书证明参加培训及证书持有者具有系统地接受岗位技能培训的经历,证书在全国範围内有效。
报考条件
凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术套用能力的人员,均可根据本人情况报名参加相应专业类别、级别的考试。
考试要求
(1)掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的套用数学基础知识;
(2)理解计算机的组成以及各主要部件的性能指标;
(3)掌握作业系统、程式设计语言的基础知识;
(4)熟练掌握计算机常用办公软体的基本操作方法;
(5)熟练掌握基本数据结构和常用算法;
(6)熟练掌握C程式设计语言,以及C++、Java、Visual Basic中的一种程式设计语言;
(7)熟悉资料库、网路和多媒体的基础知识;
(8)掌握软体工程的基础知识,了解软体过程基本知识、软体开发项目管理的常识;
(9)了解常用信息技术标準、安全性,以及有关法律、法规的基本知识;
(10)了解信息化、计算机套用的基础知识;
(11)正确阅读和理解计算机领域的简单英文资料。
相关书籍
很多程式设计师回响,他们在推荐时也写下自己的评语。 以前就有国区域网路友介绍这个程式设计师书单,不过都是推荐数 Top 9的书。
其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》 史蒂夫·迈克康奈尔
2、《程式设计师修炼之道》
3、《电脑程式的构造和解释》
4、《算法导论》
5、《重构:改善既有代码的设计》
6、《设计模式》
7、《人月神话》
8、《电脑程式设计艺术》
9、《编译原理》(龙书)
岗位分类
世界上第一位程式设计师是英国着名诗人乔治·戈登·拜伦的女儿AdaLovelace,曾设计了巴贝奇分析机上解伯努利方程的一个程式。她甚至还建立了循环和子程式的概念。由于其在程式设计上的开创性工作,AdaLovelace被称为世界上第一位程式设计师。美国国防部开发的ADA语言就是为纪念这位世界上的第一位程式设计师而命名的。
计算机科学发展到今天(21世纪初期),程式设计师从事的人群很多,分工也不相同,从大的方面可以分为以下几类:asp程式设计师、web前端开发程式设计师、delphi程式设计师、php程式设计师、powerbuilder程式设计师、C程式设计师、linux程式设计师、net程式设计师、vb程式设计师、java程式设计师、javascript程式设计师、C++程式设计师、Python程式设计师、ABAP程式设计师、android程式设计师、iOS程式设计师。
行业现状
由CSDN、《程式设计师》主办的2007年开发者大调查2007年底已收到15000多份有效问卷,已经是中国调查样本最多的开发者调查。在这次调查中,详细的分析了样本空间的分布状况,发现在庞大数目的有效问卷的参与者中有70%也就是接近一万一千名的参与调查者是IT的全职人员,14%的参与者是有过开发工作经验的学生,从这样的分布就可以看出来IT从业人员对专业知识的需求是巨大而迫切的,CSDN作为专业的软体开发技术入口网站,已经是大家获取这些技术知识的主要手段。
程式设计师

一、选择资料库技术和网际网路技术的人数总和占到了总人数的一半
2007年火热的SOA和动态语言各占13%和12%。其实这几大块技术分布他们之间都是有一定的联繫的,网际网路的发展近两年呈爆炸式的增长态势,中国的网民总数已经超过了1.4亿这样一个巨大的数字。
企业中业务的複杂程度越来越高,商业竞争不断增加企业的IT系统,使企业的商业数据呈几何数量级不断增长,在后台海量的数据中数据的管理由之前的单一型数据变成了多纬度的複杂数据,所以可以同时管理关係型资料库和XML数据的混合型资料库已经成为主流。
程式设计师

面对企业不断增加新的IT信息系统,整合已经迫在眉睫,SOA成为必然的趋势,企业对人才的需求从单一型技术人才、业务人才跳跃到了业务技术的複合型人才,这次的开发人员大调查令《程式设计师》杂誌的调查者看到了这些技术焦点背后千丝万缕的关联。
二、几乎一半的.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的十分之一。
程式设计师

三、揭示八成技术人员资料库选型标準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得票数均仅在一百左右,还有待进一步的发展。
四、中国程式设计师最爱的智慧型手机平台Linux+Java超过Symbian
“开源Linux对于众多开发者的吸引力是巨大的,但是,这仅仅是针对于技术开发人员来说的,而对于普通消费者就不是如此了。”在众多开发者心中,主要是对Linux的青睐。从调查结果中也可以直接反应这样的现象。有专家对此评论说:Linux+Java的模式,应该是套用最多的模式。
针对此问题行业的专家有自己的观点:“现在Wince和Symbian发展很快,并且随着手机硬体方面性能的提高,很多政府部门和企业在採购时,很多会考虑Dopod这样的手机,或者价格便Wince和Symbian都主要使用c++开发,正是嵌入式开发的潮流。”
程式设计师

不同人群对于收集智慧型作业系统的观点是不同的,对于开发者角度,他们更加青睐于微软和开源Linux的产品,而普通大众他们比较喜欢Wince和Symbian。
五、七成程式设计师不愿意选择入口网站获取开源信息,而更关注SourceForge等
30%的技术人员从入口网站获取开源技术信息,剩下的70%的技术人员都是从专业的开源社区和开源厂商的技术网站上获取信息,包括有SourceForge、LinuxToday、OpenOffice和IBMdW等。
在这70%当中,比例占有绝对优势的就是SourceForge了,这里是开源软体的开发者进行开发管理的集中式场所,也是全球最大开源软体开发平台和仓库。而LinuxToday里面会有记录很多很新的Linux业界大事,新闻以及出版信息。所以,对开源技术感兴趣的程式设计师们,不必再为如何获取开源信息而苦恼了,快加入到这70%的人群中来吧。
网际网路的发展已经成为大家获取信息最主要的渠道之一,网民上网的习惯也从开始的上为数不多的几个入口网站发生了变化,大而全的入口网站并不能满足专业领域人员的信息需求,从2004年开始陆续出现了大量的各个领域垂直细分的内容网站,一方面有长尾理论的理论支持,另一方麵厂商也建立了相应产品的技术内容网站,希望能聚集一批专注于这个领域专业人士,做好他们的定向行销。
做细分领域内容的网站对门户已经造成了一定的威胁,这些网站的专业性高,用户的粘性相对也比较高,如果细分领域的内容网站能将自己的服务有所提升,就如同SourceForge一样,那幺未来入口网站的路就变得更加崎岖了。
六、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套用技术,什幺新鲜玩意并不难学,难的是标準化和规範化。每个程式设计师都有自己的思路和习惯,写出来的代码自然是五花八门。Java何以成为编程界的占重要地位,很重要的一点在于Java的规範化。这种规範化很高的语言适用于多人合作的大型项目,便于沟通和理解,也就便于集成和维护。 Java世界为什幺会框架横飞,说到底还是规範化的需要。纯JSP和Struts写Web谁快,摆明了是JSP。那为什幺用Struts?原因在于100个人写出来的JSP,有100种写法;而100个人写出来的Struts,基本相似。Struts之成功,正缘于其在JavaWeb层的规範化方面所做出的贡献。
程式设计师

然而长江后浪推前浪,Struts1.x的技术缺陷毕竟是隐患。Sun力推JSF,打算一雪Web层框架缺失之耻。未来两年,JSF与Struts将展开JavaWeb框架的最终战争。
JSP经过几年风雨洗礼依然把持头把交椅,看来所有的框架表示层都离不开JSP而存在,而作为JSP的手足兄弟JSF也是仅次Spring之后又一个后起之秀。
如今JbossSeam在2009年之后就退出了历史舞台,JSF在国内使用者也寥寥无几了,而大红大紫的SSH框架也被Spring+SpringMVC+Mybaties主流所代替了。
七、C++开发环境格局难打破75%的开发人员首选VS系列
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,更多的是基于版本延续。”
高级程式设计师作为计算机技术与软体专业技术资格(水平)考试中的一科,是国家人事部和信息产业部对中国计算机与软体专业技术人员进行的职业资格和专业技术资格认定。
八、中国程式设计师健康两成感觉很虚弱亚健康接近七成
“干得比驴累,吃得比猪差,起得比鸡早,睡得比狗晚,看上去比谁都好,五年后比谁都老。很多程式设计师都曾这样感慨和抱怨过自己的生活状态。”亚健康状态是人体处于健康和疾病之间的过渡阶段,在身体上、心理上没有疾病,但主观上却有许多不适的症状表现和心理体验。
程式设计师

位于调查结果第二位的是“很虚弱”——149,比例为19.81%。很虚弱的健康指数低于亚健康,已接近生病和透支状态,他们的健康已经被亮出了黄牌。
每个人的理解不一样,但是“糟透了”这样的词如果用来形容程式设计师健康的话,相信大多数人都绝对认同“你已经病了”这样的理解。令人不敢相信的是,竟然有8.24%的程式设计师用这个词来形容自己的健康状态!
九、.NET全面进入2.0时代,AJAX风头正劲
“在Java领域,JDK8.0是当之无愧的主流平台,但JDK1.7仍保有一半以上的占有量。总的来说,Java族群显然不像.NET族群那样追新。从另一个方面看,这也说明Java平台的成熟,和.NET平台的迅速发展。”
调查结果中“非常健康”的票数低得可怜——40,即使算上“没感觉”,二者之和也不过9.04%,几乎跟“糟透了”持平。如果将“非常健康”和“没感觉”一起算为健康的话,处于亚健康状态的程式设计师是健康状态的7倍,自认为“很虚弱”的程式设计师数目是处于健康状态的2.2倍!
根据2007年的调查数据分析,在.NET领域,.NETFramework2.0的採用量已全面超越.NETFramework1.1,成为.NET平台的首选框架。2006年调查结果,1.1和2.0的採用量基本持平,而2007年2.0的採用量则高达1.1的三倍之多。.NETFramework1.1已是明日黄花,微软的更新,换代策略可以说是成功的。
程式设计师

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,则更好,这些开发工具减小了开发难度,并能够强化程式设计师对象模型的概念。另外,需要掌握基本的脚本语言,如shell,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的竞争。一般说来中国的程式设计师大都是吃“青春饭”的,大部分程式设计师的黄金时代是20~35岁。到了35岁左右,一批又一批年轻程式设计师会给你带来巨大的竞争压力。首先由于软体行业的飞速发展,很多自己以前学的东西逐渐升级换代,而许多程式设计师由于长期于工作,学习新知识的效率必然下降。其次自己干了几年,薪水要求自然就高了,而年轻程式设计师工资又低、干活又快,当然会成为老闆的首选;第三,35岁基本都已经成家了,要支撑家庭的生活负担,几乎连从头再来的勇气都不会有了。中国的老话说“长江后浪推前浪,前浪死在沙滩上”,这个历史的规律在软体开发行业体现的尤其明显和残酷,很多程式设计师必然要面对的结果就是降薪乃至失业。
困境之三:自我的实力。都知道人最难战胜的是自己,所以自我也就是程式设计师需要超越的最大障碍。大多程式设计师都把系统分析员和项目经理作为自己的职业目标,但这些目标的达成,需要个人素质、市场机遇等多个方面的条件,太多的程式设计师就是在高不成、低不就的状态中蹉跎了岁月。对于系统分析员,特别需要以下几方面的素质:客户需求分析能力、系统架构与设计能力、模组分解设计能力、项目流程控制能力、项目风险评估能力等,而对于项目经理则更注重项目管理方面的能力如团队组织能力、沟通协调能力、分析问题解决问题的能力以及良好的职业道德等,而这些素质和能力往往只能依靠程式设计师个人的学习和努力。看到越来越多的程式设计师开始学习项目管理的课程,真的有点为他们担心,因为现在的项目管理培训只能停留在理论和考证的程度,既没有素质方面的训练,又缺少实际软体开发项目的案例,学习的结果远远不能达到预期的效果。
薪资待遇
从经济学的层面上来看,软体人才也是劳动力商品中的一种,是由价值规律决定的,有需求才会有市场,才会有人愿意为他们支付更高的工资。当前,包括中国在内,全球都在争夺IT人才,当IT人才的社会总需求大于总供给时,不可避免就会出现人才升值的现象。
日常工作
确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
安排项目要求在编程式列分析要求;準备工作流程图和使用计算机知识的能力,题材,程式语言和逻辑图。
编码工作流程的信息转换成计算机语言的项目要求。
通过输入编码信息的电脑程式。
确认程式操作进行测试,修改程式序列和/或代码。
準备写操作指令供用户参考。
保持历史记录,通过记录方案的制定和修订。
维护客户的信息和保护保密的业务。
技能/资格:一般的编程技巧,分析信息,解决问题,软体算法设计,软体性能最佳化,注重细节,软体设计,软体调试,软体开发基础,软体文档,软体测试。程式设计师其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。