程序员(Programmer)
目录 |
程序员是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师六大类。
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
高质量的程序,来自于高质量的程序员。我们把程序员自身的内在质量因素称作。素质”,把与软件开发或编程工作相关的外部质量因素称作。能力”。分析程序员主要的质量因素,可以对其形成更加具体、更加深入的认识,也会为新体系的创建指明工作方向。
【素质1】乐于学习。每当人们向编程大师AIWil—hams请教自己是否应该从事编程工作时,大师都会以反问的方式来回答:。我对他们提出的一个问题通常是:‘你喜欢学习吗?’我尚未发现其他问题能更好地提示编程的成功。原因很简单。编程经常不断地改变。你不能仅仅依靠上学,让别人教会你必要知道的东西,然后说:‘喂,那就是这样。’这是不够的,你必须要不断地自己学习。”
【素质2】慎思明辨。面对层出不穷的新技术,程序员努力学习是非常必要的,但不能像被蒙住眼睛那样尾随他人前进,而要在学习中进行抽丝剥茧”,去理解技术背后所含的观念与思想。对学习与工作中的每一问题,程序员都应慎重思考、注重理解、明辨道理、领悟实质。只有注重锤炼理解能力的程序员,才有望不断提高自己的技术层次。
【素质3】永不满足。有作为的程序员,应该属于能用高标准要求自己的人。他们在学习技术时永不满足,在编程工作中也永不满足。这已经超越了一般意义上的敬业精神。编程对于他们已不仅仅是谋生手段,而是在五彩斑斓的数字世界里的一种人生体验。他们在一次次“做得更好的欣喜中,积累经验、理解知识、增长才干。
【能力1】从逻辑上理解计算机系统与网络系统的能力。如果对不断提升功能的计算机系统和网络系统没有透彻的了解,即使是一个高级语言程序员,要编写出具有实际意义的高效率的程序也是不可能的。
【能力2】运用多种语言编程的能力。混合语言编程,是一种还在使用的、针对特定问题而发挥各种编程语言独特功能的传统编程技术。熟练掌握汇编、C++/C#、Del—phi/Java等几种编程语言,并对特殊领域的常用语言有一定程度的了解,是程序员应有的基本功。
【能力3】熟悉多种系统架构。对于程序员来说,无论是在开发MIS、Web解决方案、分布式应用系统、嵌入式软件、驱动程序系统,也不管是在Windows或UNIX或Linux操作系统之下,编写控制台程序、原生窗口程序还是.NET程序,透彻理解一种系统架构或开发平台的全部功能,同时了解其他架构的运作机制,是十分必要的。这样不仅有利于编程工作的转换,也有助于掌握信息技术发展的一般走向。
【能力4】理解和运用UML/Extrerile Program-ming的能力。现在软件开发的时限越来越短,软件产品却越来越复杂和庞大。为了在较短时间内开发出高质量的软件产品,许多软件公司在软件开发的系统分析和系统设计阶段,在大型项目中采用面向对象的UML(统一建模语言),在中小型项目中采用Extreme Programming。程序员虽然不必参与软件系统的分析与规划,但是必须学会使用UML/EP模型的方式与系统分析人员、系统设计人员进行沟通与交流。这是在开发团队中协调工作、实现快速开发的有效手段。
【能力5】使用RAD编程工具的能力。实现快速开发软件、提高软件生产率的另一个手段是使用快速应用开发工具(RAD)。程序员要学会使用新一代开发环境所提供的全部功能和工具,学会在一个开发环境中撰写源程序、以可视化的方式检查程序代码的关系和验证代码的可靠度,并且在开发环境中与系统分析和设计人员进行沟通;学会在相同的开发环境里进行程序的单元测试与负载测试。程序员通过开发环境参与项目管理、版本管理和软件产品的商业化包装,从而提高整个团队的软件开发生产率。程序员还应该知道开发环境在幕后为用户所做的事情,从中学习更高级的编程技术。
【能力6】在编程实践中正确运用程序质量属性的能力。软件工程学的宗旨是采用一整套科学、系统的方法,提高计算机软件的质量和生产率。优秀的程序员能自觉地运用软件工程学的技术思想指导程序设计,对可靠性(正确性+健壮性)、效率、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性等软件质量属性做到了如指掌,并且努力做到能在编程实践中运用自如,这是开发高质量软件的不二法门。