软件工程师的工作能力主要体现在三个方面:思想、态度、管理和专业技术。 思想确定态度“态度决定一切”,你常常会听到这种说法,事实也确实如此。充满热情、积极主动、认真、责任感,等等,这些确实有助于提高工作效率和质量,尽管你的专业技能可能差一些。这里探讨的是知识和技能,并据此对软件工程师进行分级,因此,工作态度不在本文的讨论范围之内。
本文按照完成任务的难度和质量对软件工程师分类,并阐述相应的类别所需要的技能。
一、软件工程师分级
1、初级软件工程师
可以在高级工程师的指导下完成模块编程。
面对一个编程问题,他们对实现方法了解不多,通常只要实现了就行,不会过多考虑更好的实现。因此,无法保证产品质量。
2、中级软件工程师
可以独立完成模块编程。
面对一个编程问题,他们对不同的实现方法有了解,通常也会选择更好的实现,但是,由于对原理了解不深刻,他们采用的实现方法常常无法保证产品质量。
3、高级软件工程师
《Pragmatic Programmer》
有能力开发商用产品,可以指导低级别的工程师开发模块规模的软件。有一种特殊情况,有一些工程师的专业技术能力比较弱但管理能力很强,他们可以主动组织协调其他工程师完成商用级产品的开发。这些人也具有高级软件工程师的能力。
4、资深软件工程师 (架构师/产品规划师/项目经理)
《人人都是产品经理》《产品经理手册》 《人月神话》
有能力设计大型软件系统的架构,具有产品设计(规划)能力,具有管理10人以上团队的能力。
5、CTO(Chief Technology Officer ):没有这方面经验
可以参考《将才》《我也能做CTO之程序员职业规划》
职业规划战略管理
CTO之能力沉淀模型
CTO之技术战略规划
CTO之企业文化规划
CTO之领导艺术能力
CTO之笑傲江湖逍遥游
二、高级软件工程师的技能
管理:(识人、知人、)
1、可以参与招聘面试。
2、可以独立负责研发项目,具有一定的项目管理能力。
技术:
1、发现问题、分析问题、解决问题的能力 (why what how (who where when)) 5W2H检验归纳总结 (各行各业都需要通用能力)
能够查找到问题相关的主流解决方法(方法不是唯一的),了解这些方法的工作原理并分析其优缺点。这里涉及到几个方面的能力:
-发现问题(定义问题) 根据问题现象发现问题本质,《你的灯亮了吗?》Donald C.Gause;Gerald M.Weinberg;
能够将问题(问题现象 及 问题本质)表达清楚(说清楚、写清楚)也算是一个点,
因为能够把问题表达清楚,才能够很好的利用周边资源(网络、书籍、人)解决问题
-查找资料(快速查找并研究理解中英方式资料)google/图书馆/请教导师、老师、同事、朋友...... 这个需要加强:提高查找资料的能力和经验,提高阅读(中、英尤其是英文)理解能力
-理解和分析解决方法 《如何解题》波利亚 :做实验,验证可行性?
-实际执行能力及检验总结,举一反三,触类旁通。
2、编程(计算机系统结构、数据结构和算法、程序设计语言、软件工程、计算机网络、数据库 参考《ACM通讯》Computing as a Discipline)
编写的程序不仅结构合理,而且运行效率和稳定性都达到产品级,具体要求是:
-能够设计合理的程序结构,熟练掌握设计模式 《架构模式》《设计模式》《数据结构和算法》《重构》 ......
-能够分析算法空间和时间等复杂度并使用工具实际测量程序的资源占用情况,并据此进行优化 《数据结构和算法》Jprofiler...
3、操作系统(或java虚拟机)(数据结构和算法、计算机系统结构、操作系统、计算机网络、数据库、编译原理、软件工程、程序设计语言 参考《ACM通讯》Computing as a Discipline)
操作系统是程序运行的基本环境。要了解程序的运行状态,必须首先了解操作系统。
-熟悉内存、线程等资源管理原理,并可以观察资源使用状态 如:Window任务管理器,linux top等《操作系统概念》Linux Window.....
-熟悉类或模块加载原理,并可以观察 如:JProfiler工具查看 (java虚拟机)
-熟悉虚拟机内存管理机制,并可以观察,并与C,C++进行比较(内存创建,内存释放GC,内存管理等)
4、文档 (读写沟通能力 语言领域)
良好的语文,思路清晰的表达、能够中英文表达
可以编写有质量的文档,具有可用的书面沟通能力。 《商务管理与沟通》《金字塔原理》......
三、高级软件工程师的技能的进一步阐述
作为高级软件工程师,你的第一重要的能力是编写商用级的软件。也许你的技术能力还不能满足商用软件开发的要求,但如果你能够主动协调其他人完成产品的开发,你的能力仍然配的上高级软件工程师的称谓。初级和中级软件工程师不具有上述能力,因此,他们只能从事小模块的编写。小模块的质量问题必须限制在小范围内,不应该影响整个软件系统的质量。
你已经有了多年的经验,对别人和对自己都观察了多年,因此,你看人会比较准确,沟通技能会比较熟练。识人是管理技能中最重要的。如果你这方面的能力有欠缺,你可以靠自己过硬的技术能力解决问题,不过,你要想更上一层楼就困难了,软件开发毕竟是团队活动。最佳实践所达到的境界是这样的:上下左右的人都知道你在干什么,你也知道别人在干什么。
你做事情也比较有经验了,掌握了一定的项目管理方面的技能,包括计划制定、监督、通报等。《管理学》
你对自己编写的程序非常了解,并知道如何测量它占用资源的情况。
你也许创新能力有限,但应该有能力找到已有的答案,从而解决曾经被别人解决过的问题。
四、中级工程师技能的进一步阐述
与高级工程师比较,除了在管理技能和商用产品开发能力两个方面不作要求之外,其它技能要求没有差别。
分享到:
相关推荐
"软件工程师分级标准" 软件工程师分级标准是软件开发行业中的一种职业标准,旨在评估和认证软件工程师的技术水平和工作能力。该标准共分为七个等级,从实习生到高级软件工程师,每个等级都有明确的技术要求和工作...
### PCB工程师分级依据详解 #### 一、入门级PCB工程师 **能力要求:** 1. **封装制作:**能够独立完成简单的封装制作,例如DIP10等封装。 2. **软件操作:**掌握至少一种PCB设计软件的基础操作,并能够设定简单的...
在软件工程师的考试中,通常会重点考察候选人的编程能力、问题解决能力和对计算机系统原理的理解。 接着,我们关注到“考题”这个标签,这表明文件内容包含的是过去的考试题目,这意味着考生可以通过这些题目来检验...
### PCB工程师金字塔分级标准知识点详解 #### 入门级PCB工程师 **能力要求:** 1. **封装制作:** 入门级PCB工程师应能够制作简单的封装,例如DIP10等常见封装类型。这包括理解封装的几何尺寸、焊盘布局以及如何将...
华大电子对软件开发工程师的任职资格进行了详细的分级,分为一级至四级,每个级别的工程师都有明确的能力要求和职责。这些标准旨在确保公司的软件开发团队具备高质量的技术能力和良好的团队协作精神。 **一级软件...
在当今这个以信息技术为核心驱动力的商业环境中,软件工程师的角色日益重要。为了维持竞争力,激发技术研发团队的活力,软件工程师绩效考核成为众多科技企业不可忽视的一环。这不仅仅是一个简单的评估过程,它是企业...
它不仅帮助工程师理解在职业生涯中需要达到的标准,也帮助企业在人力资源配置上做出更为明智的决策。而对个人而言,了解这些标准能够帮助他们规划未来的发展方向,为在华大电子乃至整个电子软件行业的长远发展奠定...
5. **编程与调试**:西门子的SIMATIC编程软件,如Step 7 Micro/WIN或TIA Portal,提供了直观的界面来配置和调试MM430的分级控制功能,用户可以方便地进行参数设置和逻辑编程。 6. **应用实例**:MM430分级控制常见...
最后,规范中还包含两个应用示例,分别是CITYPILOT功能软件设计开发和车道保持辅助系统设计开发,通过这些示例,能够帮助理解规范中提出的设计和开发方法。 综上所述,智能驾驶功能软件平台系统架构设计规范不仅...
- 薪酬分级:高级工程师年薪8万~10万元,中级工程师5万~6万元,初级工程师3万~4万元。 - 地区差异:不同城市的薪资水平有所区别,例如深圳、北京、广州和上海的外商独资企业通常提供高于平均水平的薪资。 4. **...
气流分级机SW18的可编辑特性意味着用户或工程师可以根据具体工况调整设备参数,如改变转速、调整气流方向等,以适应不同物料的分级需求。这需要对设备有深入的理解,并具备相应的软件操作技能,如使用 SolidWorks 或...
本部分详细阐述了软件类人员在不同级别的任职资格标准,分为四个级别:一级工程师、二级工程师、三级工程师和四级工程师。每一级都有其特定的专业技能要求,旨在确保每位员工能够胜任相应级别的工作任务。 ### 必备...
- **安装调试**:评估工程师对软件调试的及时性和人性化程度。 - **数据维护备份**:强调对错误数据的处理和定期数据备份的重要性,以防止数据丢失。 4. **代码质量**: - **BUG处理**:工程师应能迅速处理发现...
在深入理解“四级数据库工程师”的内涵之前,我们首先需要了解中国计算机技术职业资格考试体系的分级情况。一般而言,该体系将专业资格分为四个级别:初级(助理)、中级、高级和正高级。四级数据库工程师对应的是...
他们的目标是通过实践提高代码编写能力和理解软件开发的整个流程。 进入中级的Java程序员需要对Java有更深入的理解,比如反射、动态代理、JVM内存模型和多线程编程等高级特性。这些高级特性是编写高效、安全代码的...
《亮度分级智能照明系统的设计》 智能照明系统作为现代建筑和...这份报告为理解智能照明系统的工作原理、设计思路和实际应用提供了丰富的知识,对于从事相关领域的工程师和研究人员来说,是一份极具价值的学习资料。
以上是对2013系统集成项目管理工程师(中级)整理笔记中的部分内容进行的详细解析,涵盖了信息化基础知识、信息系统服务管理以及信息系统集成专业技术知识等关键知识点,希望能够帮助读者更好地理解和掌握相关概念和...
以下是对子系统仿真分级的一些关键点介绍: 子系统的划分:在仿真分级中...它不仅能够帮助工程师更好地理解系统的整体行为,还能在系统开发的早期阶段发现和解决问题,从而降低项目风险和成本。通过这种方式,仿真分级
文章首先概述了什么是ASPICE 以及它的评估分级标准,随后深入探讨了 SWE (Software Engineering Processes) 的具体实施细节,从需求分析到最终的软件验证,详尽地列出了每一阶段的关键步骤和基线实践 (Base ...
标题中的“FGS可分级编码”指的是视频编码技术中的一种,即Fine Granularity Scalability(精细粒度可扩展性)编码...通过深入理解FGS编码原理和技术细节,开发者和工程师可以优化视频编码方案,以提供更好的用户体验。