做一个好的软件工程师需什么样的素质?需读哪类书籍?谢谢!

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-04
作为软件工程师应该具备哪些基本素质?

1:团队精神和协作能力
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
3:规范化,标准化的代码编写习惯
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
4:需求理解能力
程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广 告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程 序员,你给他深蓝那套系统,他也做不出太极链的并访能力。
性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
5:复用性,模块化思维能力
经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
6:测试习惯
作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。
当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到需求理解能力。
7:学习和总结的能力
程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。
但是学习也要找对目标,一些小coding有些codingTO就是这样的coding上只是一些Cfans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候马上就到了。
具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言。

第一是钻研,遇到技术问题和困难永远是知难而进,通过各种方法渠道去解决
第二是合作,现在单兵作战的时代已经过去了,你需要同很多人一起来完成项目,因此合作是不可避免的,必须要具有合作精神才会成为一个合格的软件工程师
第三是勤奋,在你选定的专业内不断学习,不仅仅局限于编程,还需要了解行业知识,如做ERP的需要了解企业的运作,相关的财务知识等;需要比较深入了解各种软件工程类知识;需要深入了解各种应用的架构及相应的优缺点.
有了以上三点,即使你天赋一般也能成为一个出色的软件工程师

软件企业要求基础软件工程师具备六大基本素质,即良好的编码能力、自觉的规范意识和团队精神、认识和运用数据库的能力、较强的英语阅读和写作能力、具有软件工程的概念和求知欲和进取心。

良好的编码能力。软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。

自觉的规范意识和团队精神。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是程序“游击队员”,他们可能对编程工具很熟,能力很强,把编码编得很简洁高效,但却缺乏规范和合作的观念;另一种程序员编程不一定很快,但是很规范,个人能力不一定很强,但合作意识很好。第二种人更加适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神。

认识和运用数据库的能力。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有甲骨文公司的Oracle数据库和微软公司的SQL Server等。

较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。

具有软件工程的概念。基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。

求知欲和进取心。软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力和对IT新技术比较敏感,同时,掌握最新的IT实用技术。

书籍,找相对应的就可以了。做到博览群书最好。

计算机技术与软件专业技术资格(水平)考试(简称计算机与软件考试)是原中国计算机软件专业技术资格和水平考试(简称软件考试)的完善与发展。
该考试是国家人事部和信息产业部领导下的国家级考试,其目的是,科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。

分为三个级别:
初级:程序员、网络管理员、信息处理技术员
中级:软件设计师、网络工程师、信息系统监理师、系统集成项目管理工程师、数据库系统工程师、多媒体应用设计师、信息系统管理工程师
高级: 信息系统项目管理师、系统分析师

软件工程师考试
一、考试说明
1.考试要求:
(1)理解软件工程管理的概念和任务;
(2)理解软件生存期过程;
(3)理解软件工程标准;
(4)掌握需求分析、测试、维护基本技术;
(5)掌握软件度量、软件配置管理方法;
(6)理解软件复用概念;
(7)理解软件质量保证的手段;
(s)理解软件项目对人员的需求;
(9)理解软件知识产权的基本知识。
2.通过本级水平考试的合格人员具有从事软件系统分析与工程系统分析员、工程管理员的实际工作能力和业务水平。
3.本级水平考试范围包括三个模块,即模块1、模块2和模块3。题型为单项选择题十多项选择题十综合题。每个模块考试时间为90分钟。
二、考试范围
模块1:软件工程技术
1.1软件生存期过程
1.1.1软件工程过程和软件生存期
1.1.2软件生存期模型
1.1.3国际标准:ISO/IECI2207信息技术一软件生存期过程
1.2软件需求分析
1.2.1需求分析的任务
1.2.2需求分析过程
1.2.3需求的类型。
1.2.4需求分析的原则
1.2.5需求分析人员和用户的责任
1.2.6需求文档
1.2.7需求说明技术的选择
1.3软件复用技术
1.3.1软件复用的概念
1.3.2软件开发过程
1.3.3构件技术
1.3.4分层式体系结构
1.3.5实施软件复用开发单位的组织结构
1.4软件测试技术
1.4.1软件测试的基本概念
1.4.2测试用例设计
●白盒测试
●黑盒测试
1.4.3性能测试
1.4.4软件测试策略
1.4.5软件测试工具
1.5软件维护
1.5.1软件维护的概念
1.5.2软件维护活动
1.5.3软件维护的实施
1.5.4软件可维护性
1.5.5软件再工程
1.6软件工具与软件开发环境
1.6.1软件开发工具的分类、作用和功能
1.6.2软件开发环境的概念
模块2:软件质量管理与软件质量保证
2.1软件质量
2.1.1什么是软件质量
2.1.2软件可靠性
2.1.3软件质量问题的根源
2.1.4软件产品质量与软件过程质量
2.2软件质量保证
2.2.1软件质量保证的概念
2.2.2软件质量保证体系
2.2.3质量保证的实施
2.2.4软件质量设计
2.2.5软件容错技术
2.3软件工程标准与软件文档
2.3.1什么是软件工程标准
2.3.2软件工程标准化的意义
2.3.3软件工程标准的制订与推行
2.3.4软件工程标准的层次
2,3.5软件工程国家标准
2.4ISO9000国际标准
2.4.1质量管理、质量认证与质量审核
2.4.2ISO9000标准概要
2.4.3ISO9000族标准构成
2.4.4质量体系
2.4.5ISO9001的主要内容
2.4.6ISO9000_3实施指南概要
2.5软件过程能力评估CMM
2.5.1软件过程评估的意义
2.5.2软件过程能力成熟度分级及其关键过程域
2.5.3软件过程评估的国际标准
2.6软件度量
2.6.1软件度量的概念
2.6.2功能点方法计算软件的大小
2.6.3程序环路复杂度计算
2.6.4Halstead程序工作量计算
2.6.5程序风格度量
2.7软件配置管理
2.7.1什么是软件配置管理
2.7.2配置管理计划的制订
2.7.3变更管理
2.7.4版本管理和发行管理
模块3:软件工程管理
3.1软件工程管理和软件项目管理
3.1.1软件工程管理的任务与意义
3.1.2软件工程管理的范围
3.1.3软件文档管理
3.1.4软件成本估算
3.1.5软件风险分析
3.1.6软件项目进度计划与监控
3.2软件人员管理
3.2.1软件开发组织结构
3.2.2软件人员能力成熟度模型
3.2.3软件工程师道德和职业活动规范
3.3软件知识产权保护
3.3.1什么是知识产权
3.3.2计算机软件著作权
3.3.3计算机软件著作权登记管理
3.3.4计算机软件著作权侵权与法律保护
3.3.5计算机软件的商业秘密与反不正当竞争
这些不难的,特别是你的应试能力好的话,更加简单……
如果你还是在校大学生的话,我就要更加恭喜你了!!
题目不难,多做真题~~
祝顺利!!

软件工程师这个概念太宽了,你要想好具体的工作,做WEB,客户端,嵌入式?这个确定了再确定一门你喜欢的语言,精通它。你就能找个工作了,再工作中学习具体的东西。我觉得做软件需要的实践,架构设计之类的需要你有项目经验后自然就学会了。
需什么样的素质?网上一搜一大堆,但你真正能做到吗? 遵守职业道德,多关注你的团队,多交流,多学习就够了。 个人见解, 希望对你有帮助!

百度搜一下徐州新华电脑学校的咨询电话,然后问咨询师!最专业最给力最权威的回答!

  • 做为一个软件工程师应该具备哪些素质
    答:第三责任心:责任心 不仅对于软件,而是对于任何一件事,都得有责任心 敢做敢当,是做为男人的基本 素质 第四沟通:在软件这行沟通主要对两方面 第一点是对客户:我们做的东西都是回绕客户而做的 通过深入的沟通和交流,能够了解到客户想要什么,不要什么 而不会使我们做的东西另客户觉得不满意,从而得...
  • 作为软件工程师应该具备哪些基本素质(软件工程师所具备的知识和...
    答:善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候马上就到了。具备以上全部...
  • 软件工程师有哪些要求?
    答:1 强烈的责任心和事业心 实际上这对每个岗位来说都是必备素质。系统分析师由于必须保证需求的准确性,所以责任更为重大。一般来说,不应以用户表述不明确,无法得到需求,或者用户需求变化太多作为借口。2 具有面向对象的程序设计思想 面向对象的程序设计思想对于客观、真实地以软件的方式模拟客观事务的运行...
  • 一名优秀的软件测试工程师应具备哪些素质?
    答:【答案】:一个优秀的测试工程师应该具备的基本素质有:责任心、沟通能力、团队精神、自信心、耐心、怀疑精神、洞察力、幽默感等。应具备的专业素质有:有竞争力的测试人员要具有三方面的技能:计算机专业技能、测试专业技能、软件编程技能。
  • JAVA软件工程师应该具备哪些基本素质(java开发工程师需要具备的...
    答:1 良好的编码能力 软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现 编码能力直接决定了项目开发的效率 这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)2 自觉的规范意识和团队精神 随...
  • 软件开发需要具备什么条件
    答:第二种人更适合现代软件企业发展的潮流 对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神 三,认识和运用数据库的能力 信息以数据为中心,因此与数据库的交互是必不可少的,了解数据库的操作和编程是软件工程师需要具备的基本素质之一 四,较强的英语阅读和写作能力...
  • 想要成为一个优秀的java软件工程师需要具备哪些素质与能力
    答:一:java工程师项目经验要求 一年以上正规项目开发经验 2.熟悉开发流程、体系结构,较好的文档能力及编码风格 3.至少熟悉OA、CRM、HR、ERP、电子商务中一种业务类型 二:java工程师职业素质要求 学习能力和主动性 2.团队协作和沟通表达 3.责任心和稳定性 三:java工程师技能要求 熟悉Eclipse开发工具,熟悉...
  • 软件开发工程师需要具备哪些素质?
    答:1、表达能力职业素养个人素质信心和恒心良好的个人品质良好的个人习惯软件开发工程师是从事软件开发相关工作的人员的统称。2、软件企业要求基础软件工程师具备六大基本素质:1良好的编码能力、2自觉的规范意识和团队精神、3认识和运用数据库的能力、4较强的英语阅读和写作能力、5具有软件工程的概念、6求知欲和...
  • 软件工程师需要具备哪些知识
    答:第一是钻研,遇到技术问题和困难永远是知难而进,通过各种方法渠道去解决 第二是合作,现在单兵作战的时代已经过去了,你需要同很多人一起来完成项目,因此合作是不可避免的,必须要具有合作精神才会成为一个合格的软件工程师 第三是勤奋,在你选定的专业内不断学习,不仅仅局限于编程,还需要了解行业知识,如做...
  • 软件工程师应该具备哪些素质和技能
    答:团队协作能力: 软件工程师通常在团队中工作,需要良好的团队协作能力,包括沟通能力、合作精神和团队意识,能够与团队成员有效合作,共同完成项目任务。持续学习能力: 软件工程师应该具备持续学习的意识和能力,因为计算机科技发展迅速,新技术、新工具不断涌现,软件工程师需要不断学习新知识,保持自身竞争力...