您所在的位置: 英盛问吧  >  职业素养
妮可

程序员的 职业素养?

妮可 | 被浏览:547 | 2016-06-03 18:00:01
分享到:

全部回答 (2)

椰子头
椰子头
经验:435 2016-06-05 01:01:31
说起职业素养,可能大家脑子里马上反映出来的是西服领带公文包的精干白领形象,其实作为程序员来说,外在可能没有那么重要,更多的是内在职业素养,本期调查分享了两个研发小组的故事,让大家在统计数据的基础上进一步了解——什么是程序员需要的职业素养?  案例一:问题团队A  D公司是个在发展壮大中的贸易公司,由于业务发展员工从刚开始的10人两年内增加到150多人,管理上出现了沟通效率低、对员工工作难以监控的现象。公司想近期上OA系统,以加强公司的工作效率、支持快速增长的业务。经过几次与F开发公司的沟通后,双方确定了合作意向。安排有两年开发经验的开发工程师苏成,作为项目经理带领三个开发人员,开始了D公司的OA项目。  因项目不大,没有特别安排需求工程师,而由项目经理与客户确认需求后进行开发,初为项目经理的苏成信心爆棚:对外,他想当然地按照合同后附的简单需求说明草率开发;对内,他认为项目经理拥有绝对权力,任何关于开发的不同意见都听不进去。在第一期快结束时,苏成已与项目组成员发生了N次争吵,大家纷纷要求调离项目组,团队面临崩溃。  在两个月未与客户沟通的状态下,苏成项目组向D提供了OA系统一期产品,按合同规定包括了:员工管理一项功能和其中四个子项。看完基本功能演示后,D公司的HR经理Helen几乎崩溃——OA系统中员工管理没与考勤部分联系起来,而且在系统中增加一个新用户需要五步,十分繁琐,很多功能也与公司需求相差极大。  但是苏成却认为这些都是小问题,更让Helen气结的是要求增加一个小的统计功能时,他居然说做不了。后来才了解到,原来在开发时,项目组并没有留下文档,加之团队其它几个成员均已准备离开项目组,任何在此模块中的小小变化都会面临所有代码重新开发的局面,更不用说要新增什么功能了。  最终苏成辛苦开发了几个月却没有得到相应地回报,客户不满意,项目组成员不满意,研发部总监更是对他的能力产生了怀疑,在几经努力拿到D公司的第二期项目开发合同之后,更换了项目经理。  点评:程序员如何以明确需求为基础与客户沟通?  如果有专门掌握需求编写技术和经验的需求工程师作为客户和程序员之间的桥梁是最理想的状态。但以国内目前的国情,每个项目组都配有需求工程师的并不多。因此,正确地帮客户表达需求、正确地理解需求就成了程序员的基本素质之一。在此次调查中66.67%的被访者认为“能帮助客户正确提出需求”是程序员职业素养之一,可见在程序员内部已就此达成了相当的共识。认为“能使客户需求更完善”是程序员看重的职业素养之一,占到此次调查的55.13%,这说明超过一半的程序员认识到,帮助客户完善需求会节省双方的时间和精力。  那么如何才能提高自己的需求分析能力呢?以下分享几个有关需求的小技巧:  1.尽量提高自己的表达和沟通能力。良好的表达和沟通能力能在客户不能清楚表达需求时,融入到客户组织内部,了解客户的工作流程,与客户共同更好地、更准确地定义和分析需求。此次调查中60.90%的被访者认为沟通能力是程序员应具备的基本能力,但只有28.85%的程序员认为“表达能力”是程序员必备的基本能力。沟通固然很重要,但我们更应该进一步认识到准确表达自己的观点和意见也是成功沟通的基础之一。如果只“沟”而不“通”仍然是在浪费方面宝贵的时间。  2.应用多种方式了解需求。常用的方法有:问题分析法和建模分析法以及几种方法的结合。比如在问题分析法中应用面向对象的思想,与客户的员工谈话,访谈首先要面向工作流程,面向任务,面向角色,也就是用面向对象的思想帮助客户理清思路。  3.不臆测需求。如果有专门的需求工程师,有一点要特别强调,就是在编码过程中当需求不明确时,必须与项目经理或需求工程师及时沟通,程序员不能自作主张地猜测客户的需求。  4.不过度承诺。很多销售人员拿到项目,向客户大包大揽,甚至完全不顾公司的现有开发能力向客户承诺很多功能。在定义需求阶段,一定要向客户说明“什么是我们能做的,什么是我们应该做的,什么是我们不能做的”。很多时候过度承诺导致了新功能无法实现的同时,原有功能也受到影响。在此次调查中,有59.62%(近六成)的被访者正确地认识到对客户提出的不合理需求拒绝得当也是程序员职业素养的一个重要方面,这是非常难得的。  案例二:严格开发流程的团队B  国资委某下属集团公司要上OA系统,C公司在研发能力、价格两个方面以综合分第一的成绩竞标成功。拥有10年项目管理经验的李石被任命为项目经理,并由他组建团队。李石对团队成员只有三个要求:分析能力、产品意识、较强的团队意识。  初选方案  需求确定后,项目有两个方案:更流行的BS模式和传统的CS模式。李石安排两个程序员前期负责选方案,分别基于两种模式开发用户权限管理系统的原型,给大家做演示,并结合客户特别评估每一个架构的优劣。  分析了BS/CS的特点、结合客户的需求,他们发现:  1.从流程的定制来看CS结构更加利于客户方便地进行“可视化”定制;  2.从公文的“不可修改、保密性”以及电子图章的“不可诋毁性”需求来看,CS框架更加利于实现DRM技术和数字指纹技术实现;  3.从公文的打印需求与一般WEB报表的差异性来看,CS框架更加适合对打印格式的定制与控制;  4.从客户提出的内部电子会议的实时性来看,CS框架明显优于BS框架的非状态性,能够做到更顺畅、更及时的沟通;  5.从系统的安全性来讲,CS框架更加适合硬加密系统(如加密狗、U盘Key)与系统的对接。  产品开发  在开发过程中李石强调了每个程序员的产品意识,取得了不错的效果。比如客户要求一个能上传文件的功能时,并没有提出UI需求,团队的B程序员并没有简单完成任务了事,而是做出一次能同时选取上传5个文件的程序。这种产品意识为客户使用带来方便,弥补了需求的不足。  团队配合  在团队B中,每个程序员都做到了做完一个功能后与项目经理沟通进度、结果,并与负责测试的同事沟通,及时检测Bug,及时修改并及时回归。每个功能的实现都相对完善。及时的沟通与相互学习,还促进了团队磨合。  经过8个月的开发,OA项目第一期完成基本功能顺利上线。C公司已顺利拿到了客户第二期的开发合同。  点评:成功的开发需要这样的程序员  通过上面的案例,我们为程序员总结出如下素养:  1.学习和分析能力。每个团队都在成长,作为程序员这个群体就更需要“与时俱进”。尤其是在开发这个知识日新月异的行业里。同时分析能力也是必不要少的。在调查中71.15%的程序员认为,学习能力非常重要,同时有57.69%的程序员认为,在技术方面有不同的意见时,处理妥当是程序员应该具有的职业素养。相信这个案例为我们提供了新的思路。  2.与内外保持良好的沟通,永远是成功的保证。及时汇报、沟通进展也可以在第一时间发现自己的偏差。数据证明59.62%的程序员认为“汇报项目进展时明确及时”是重要的职业素养。  3.产品意识。良好的产品意识可以大幅度提高开发效率,也能有效的弥补需求不足。例如,在案例二中,在做文件上传功能时,充分考虑了客户使用的方便性,弥补了需求中被忽略的细节。  4.团队意识。强烈的团队意识能帮助自己和整个团队更快成长,因为知识的分享是知识学习中一个最有效的方法,尤其是在程序员这个行当里。  5.编码规范和文档规范。据调查显示有分别由80.77%和68.59%的程序员认为编码规范和文档规范是程序员的必备职业素养之一。
赞(0
趁桃红柳绿
趁桃红柳绿
经验:400 2016-06-10 09:52:40
程序员因其致力于程序开发、设计、维护、编程等这一特殊领域,使其天生具备了坚定的职业信念、超强的职业知识技能、良好的职业行为习惯等职业素养。 简介: 程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员,系统架构师,测试工程师五大类。 岗位职责: 1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。 2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。 3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。 4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。 5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。 6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。 7、负责相关技术文档的拟订。 8、负责对业务领域内的技术发展动态进行分析研究。 职业认证: 考试介绍: 软考程序员考试属于计算机软件水平考试(简称软考)中的一个初级计算机职称考试。对于软考程序员考试并无学历及资历条件限制,更无论年龄、专业与资历。一年可报考软考程序员考试两次,但一次考试只能报考一种资格,因此报考了程序员考试则无法再报考软考其他级别或科目的考试。同时软考程序员考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试方式。 通过国家统一组织的考试,资格考试分为:程序员级(原初级程序员)、软件设计师(原高级程序员)以及更高水准的:信息系统项目管理师、系统分析师(原系统分析员)、系统架构设计师、网络规划设计师、系统规划与管理师。 考试目标: 通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照程序设计规格说明书编制并调试程序,写出程序的相应文档,产生符合标准规范的、实现设计要求的、能正确可靠运行的程序;具有助理工程师(或技术员)的实际工作能力和业务水平。 1、CVEQC认证持有者已经通过了中国职业教育资格认证指导中心组织的培训和相应的考试,具有相应的专业技能和知识。 2、CVEQC证书可作为劳动者岗前培训、在职培训、提高培训、继续教育的培训认证;也是劳动者“先培训、后就业,先培训、后上岗”的凭证。 3、CVEQC证书是中国职业教育资格认证指导中心颁发的专业技能证书。标有证书序列号、证书编号、培训者及证书持有者身份证号码,并盖有全国职业教育管理委员会、中国职业教育资格认证指导中心的证书专用章。 4、 证书证明参加培训及证书持有者具有系统地接受岗位技能培训的经历,证书在全国范围内有效。 二、报考条件:凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据本人情况报名参加相应专业类别、级别的考试。[1] 考试要求: (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程序员、jsp程序员、delphi程序员、php程序员、powerbuilder程序员、C程序员、linux程序员、net程序员、vb程序员、java程序员、javascript程序员、C++程序员、Python程序员、android程序员、iOS程序员。 职业要求: 一般的程序员都有四年的在专业领域的学习,需要一个在程序领域的学士学位获得者,不论是数学方面的还是工程方面的都是可以的。 大约有20%的人在这一领域的计算机科学和工程学拥有更高的学位。还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。一个程序员虽然没有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。 对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。 素质要求: 团队精神和协作能力: 团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。 文档习惯: 文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间用于写技术文档。没有文档的程序员势必会被淘汰。 规范化的代码编写习惯: 知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 测试习惯: 测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。 学习和总结的能力: 程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,只能说他是一名熟练的代码民工(码农),他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。 拥有强烈的好奇心: 什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。 日常工作: 确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。 安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。 编码工作流程的信息转换成计算机语言的项目要求。 通过输入编码信息的计算机程序。 确认程序操作进行测试,修改程序序列和/或代码。 准备写操作指令供用户参考。 保持历史记录,通过记录方案的制定和修订。 维护客户的信心和保护保密的业务。 技能/资格:一般的编程技巧,分析信息,解决问题,软件算法设计,软件性能优化,注重细节,软件设计,软件调试,软件开发基础,软件文档,软件测试。程序员其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。
赞(0
帮助中心
老师问答榜
用户名回答数经验
问吧达人
用户名回答数经验
关于我们
免责声明
联系方式
帮助中心
会员权益
如何观看
忘记密码
常见问题
商务合作
渠道加盟
讲师合作
课程合作
客服 在线咨询客服
电话客服热线:400-666-4343
关注微信公众号
关注我们
每天好料不断