现代软件工程讲义 2 工程师的能力评估和发展

发布时间:2020-05-04 19:45:15 作者:邹欣
来源:网络 阅读:203

Advanced Software Engineering  现代软件工程  讲义

软件工程师的能力评估和职业发展

 

介绍:  个人软件流程,  职业发展, 个人绩效的衡量和提高软件开发是科学工程手艺或是艺术? 

我们刚讲了软件工程它包括了什么呢?

软件工程包括了开发,运营维护软件的过程中有很多技术做法习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中 “软件开发流程软件开发流程的目的是为了提高软件开发运营维护的效率,以及用户满意度可靠性,和软件的可维护性。

 

软件开发流程不光指团队的流程,  软件团队是由个人组成的。在团队的大流程中是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此个人在软件团队中也有个人的流程。

现代软件工程讲义 2 工程师的能力评估和发展

 

个人的劳动成果有序地组织起来就是团队的流程。这里说的“有序”并不是“无争论”,  在大部分成功的软件团队模型中,  各个角色(开发测试项目管理等)考虑问题的出发点是有区别的不同意见的冲突在所难免一个好的团队流程能把冲突的积极方面 (各自尽力把自己的工作做好,说服别人释放出来,而避免消极方面 (因为冲突而产生的消极,抵触情绪等) 

现代软件工程讲义 2 工程师的能力评估和发展

 

我们用足球作一个比喻:  足球中有没有个人流程?  当然有,  职业球队对于运动员有很严格的要求例如:

体能技术意识斗志

具体技术有传接,盘带,射门定位球跑位等。一些特定的角色(守门员)还有独特的技术要求。

现代软件工程讲义 2 工程师的能力评估和发展

 

足球的团队有没有流程当然有:

阵型配合临场应变

 

足球队有不少 “阵型” (442, 433, 451和它们的各种变体等等和打法 (南美,欧洲,技术,力量小快灵抢逼围两翼齐飞,  全攻全守等等). 

现代软件工程讲义 2 工程师的能力评估和发展

尽管有这么多理论,  足球的每一次盘带传球,  跑动射门,扑救,都是单个运动员完成的。  如果单个运动员的技术体能不行无论是什么阵型用处都不大,有些阵型反而会起反作用,  例如让体力弱的球队去打全攻全守。

软件也是这样。

软件系统的绝大部分模块都是由个人开发或维护的。在软件工程的术语中我们把这些单个的成员叫做 Individual Contributor (IC).

IC 在团队中的流程是怎么样的呢我们以开发人员为例:

       理解问题或任务

       提出多种解决办法并估计工作量

       其中包括寻找以前的解决方案,因为很多工作是重复性的 – 例如实现某些类似的web页面。

       与相关角色交流解决问题的提案决定最终方案

       执行把想法变成实际中能工作的代码

       修复缺陷,  对结果负责

每个人的工作质量直接影响最终软件的质量。

作为一个软件工程师你觉得自己表现如何有没有这样的体会:

看书的时候觉得技止此耳,开发项目的时候才觉得实际情况和书上讲的都有一些出入,一些重要的细节书上没有提。我们很多人是边看asp.net的书边开发asp.net 的项目,这相当于一边看医学书一边动手术。。。

 

如果你是病人你希望你的医生是下面的那一种呢?

a)  刚刚在书上看到你的病例开刀的过程中非常认真严谨时不时还要停下来翻书看看

b)  富有创新意识开刀时突然想到一个新技术新的刀法,  然后马上在你身上试验

c)  已经处理过很多类似的病例可以一边给你开刀一边和护士聊天说昨天晚上放的 《非诚勿扰》的花絮

d)  此医生无正式文凭或医院但是号称有秘方可治百病。

e) 还有这一类, 给你开刀到一半的时候, 出去玩去了, 快下班的时候, 他们匆匆赶回来, 胡搞一气, 给你再缝好, 打了很多麻药,就把你送出了院, 说“治好了”!

 

事实上很多软件项目就是用 a) b) 这样的方法搞出来的。当然也有一些人走 d) 这条路。 e) 这一种可以在很多大学生软件大作业上看到例子。 

如果我可以选择我要选 c) 那样的医生。

职业成长– Steve McConnell 版本:

Steve McConnell 创立的公司  (Construx Software) 为员工提供了下面的成长路径。

知识:把相关的软件知识分为十大知识领域。

能力:一个工程师对这些知识的掌握分为如下四个阶段:

入门 (Introductory); 熟练 (Competency); 带头人 (Leadership); 大师 (Mastery)

职业成长级别 (Professional Development Ladder):

把工程师分为6个级别 ( 9 – 15) 每一个工程师属于一个技术等级。一个工程师要从一个级别升到另一个级别需要在各方面达到一定的要求。例如要达到 level12 工程师必须在三个知识领域达到“带头人”水平。  例如要到达“工程管理 (知识领域熟练 (能力)”水平,工程师必须要做到以下几点:

·         阅读: 4-6 个经典文献的深入分析和阅读

·         工作经验要参与并完成个具体的工作

·         课程:要参加个专门的课程

有些水平还要求工程师获得某种专业证书,在工业界,教育界教课发表论文等等。

 

职业成长– 大公司版本:

微软公司针对软件工程师的职业发展也有很完备的规划和支持。这方面的资料比较多这里简单地以软件开发工程师为例说明一下。  下面的解释部分来自于 Eric Brechner 的书– Hard Code (link)

SDE (初级软件开发工程师)

                入门。在学校里学到了一些技能但是还没有在实践中得到充分锻炼。

SDE II  (中级软件开发工程师)

独立。可以写别人交给你的任何东西。如果你不懂你知道去问谁。

 

Senior SDE (高级软件开发工程师)

小组领导。影响着3 – 12 个工程师或者是他们的行政领导或者是他们的技术带头人。怎么显示领导力呢这有几个例子:

·         你当过新员工的导师么?  他们后来都尊重你的种种教诲么?

·         你是否成为别人的榜样?  (写的代码做的设计别人可以拿来重用)

·         你在招人方面是否有心得并言传身教让大家都认识到面试的重要性和各种技巧。

·         你是否创立/改进/推动一些流程,  而且这些流程不需要你亲自参与,也能流传下去?

·         在和别的角色 (例如, UX/PM/QA) 打交道的时候你往往都能赢得别人的支持而不是和别人争执抱怨不休?

Principal SDE (首席软件开发工程师)

团队领导。影响着12 人以上的一个大团队成为影响团队成败的关键人物。

Partner SDE, Distinguished Engineer, Technical Fellow

影响力扩大到整个机构,甚至工业界。

 

职业成长– Pragmatic 版本 - 从小工到专家

IT业界的不少专家也对于程序员的成长提出了不少好的建议.  例如:

现代软件工程讲义 2 工程师的能力评估和发展

这本书的副标题是“from journeyman to master”从打下手的小工到大师。

推荐阅读:
  1. 软件工程中的RUP
  2. 现代软件工程 第九章 【项目经理】练习与讨论

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

software 界面设计 软件开发

上一篇:pt-osc全解pt-online-schema-change

下一篇:openstack rocky版详细搭建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》