第三章 软件工程师的成长

3.1 个人能力的衡量与发展

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

  以开发人员为例,流程如下:

    *通过交流、实验、快速原型等方法,理解问题、需求或任务

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

      *其中包括寻找以前的解决方案,因为很多工作是重复性的

    *与相关角色交流解决问题的提案,决定一个可行的方案

    *执行,把想法变成实际中能工作的代码,同时验证方案的可行性和其他特性(例如程序的效能等)

    *和团队的其他角色合作,在测试环境中测试实现方案,修复缺陷(bug)。如果方案有严重的问题,那么就考虑其他方案。

    *在解决方案发布出去之后,对结果负责

  如何衡量软件开发的工作量和质量?PSP认为有下列4个因素:

    a.项目/任务有多大?

    b.花了多少时间?

    c.质量如何?(可以用缺陷的数量来除以项目的大小)

    d.是否按时交付?(用方差衡量)

  软件项目的确需要创造性,需要一些意外,一些惊喜。但是,更多的是常规的、可重复的任务,软件工程的奠基人之一瓦茨·汉弗雷总结说,软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了90%-95%的比例。对于这些任务,一个成熟的软件工程师应该能够降低任务交付的时间的标准差。如果你能长时间稳定而按时地交付工作的结果,内部和外部的顾客就会对你的工作有信心,更喜欢与你合作。标准方差是六西格玛(Six Sigma)方法的核心概念,这也是杰克·韦尔奇在GE推行六西格玛的一大原因。

  怎样才是一个合格甚至优秀的工程师团队队员:

    1.交流;

    2.说到做到;

    3.接受团队赋予的角色并按角色要求工作;

    4.全力投入团队的活动;

    5.按照团队流程的要求工作;

    6.组好准备工作;

    7.按流程理性的工作。

3.2 软件工程师的职业发展

  微软公司的软件工程师职业等级:

    SDE(初级软件开发工程师):入门。在学校里学到了一些技能,尚未在实践中得到充分锻炼。

    SDE II(中级软件开发工程师):独立。可以写别人教给你的任何东西,不知道时知道去问谁。

    Senior SDE(高级软件开发工程师):小组领导。影响着3~12名工程师,或者是他们的行政领导;或者是他们的技术带头人。

    Principal SDE(首席软件开发工程师):领导团队。影响着10人以上的一个大团队,成为影响团队成败的关键人物。

    更高的职位有:Partner SDE、Distinguish Engineer、Technical Fellow:影响力扩大到整个机构,甚至工业界。

  没有人能在学校里掌握所有“将来会用到的知识”才离开学校,随后马上把技术运用在实践中。工程师应该在实际工作中不断学习和不断成长,根据自己的情况选择在哪个方面追求“专和精”,在哪几个方面达到“知道就好”的水平。

需要知其然,更要知其所以然。也要有自知之明。

  

时间: 2024-10-24 13:53:55

第三章 软件工程师的成长的相关文章

构建之法(第三章 软件工程师的成长)

第三章的主要内容是:评价软件工程师的主要方法 1.个人能力的衡量与发展 软件工程包括了开发,运营,维护软件的过程中的很多技术,做法,习惯和思想. 软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发的目的是为了提高软件的开发运营维护的效率,以及提升用户的满意度,软件的可靠性和可维护性. 1.1 IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下. 1)   通过交流.实验.快速原型等方法,理解问题.需求或任务 2)   提出多种解决办法并估计工作量 3) 

构建之法学习(第三章 软件工程师的成长)

本章的主要知识要点:评价软件工程师水平的主要方法 1.  软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.在团队的大流程中,是每个具体的个人在做开发.测试.用户界面设计.管理.交流等工作.因此个人在团队中也有独立的流程. 以开发人员为例,流程如下 *通过交流.实验.快速原型等方法,理解问题.需求或任务 *提出多种解决办法并估计工作量 *其中包括寻找以前的解决方案,因为很多工作是重复性的 *与相关角色交流解决问题的提案,决定一个可行的方案 *执行,把想法变成实际中能工

现代软件工程 练习与讨论 第三章 软件工程师的成长

1. (1)第三种,稳定,安全,高效. (2)需要,programer不是coder,要成为软件工程师必须要有一定的能力,不能阿猫阿狗都自称软件工程师,这样不利于行业的发展 2. (1)既是工程,也是艺术,艺术家的衡量标准通过创造能力来衡量,创造能力体现在创新事物的新颖,实用,以及美感. (2)软件工程和音乐美术是有区别的,更讲究实用性而不是观赏性. 3.随着工具和理论的完善,软件开发的门槛越来越低,同样竞争也会越来越激烈,保持个人的先进和创新能力对个人在行业内的立足至关重要.行业在发展的同时,

第三章 软件工程师的成长随笔

软件工程包括了开发.运营.维护软件的过程中的很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程", 软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 把每个人的工作有序的组织起来,就是团队的流程.个人在团队中也有独立的流程. 软件开发的工作量和质量怎样衡量? 1.项目/任务有多大.2.花了多少时间.3.质量如何.4.是否按时交付. 职业成长:微软公司的软件工程师等级:SDE(初级软件工程师).

【构建之法】第3章 软件工程师的成长

1 软件工程师的成长 积累软件开发相关的知识,提升技术技能 积累问题领域的知识和经验 对通用的软件设计思想和软件工程思想的理解 提升职业技能 实际成果 2 软件工程师的思维思维误区 分析麻痹 不分主次,想解决所有依赖问题 过早优化 过早扩大化/泛化:画扇面--调侃目标和远景 3 技能的反面 通过不断的练习,把低层次的问题解决,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题 原文地址:https://www.cnblogs.com/kxbk100/p/8496389.html

读构建之法 第三章:软件工程师的成长

本章理论和知识点:评价软件工程师水平的主要方法 软件工程把相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.个人在团队中也有独立的流程.把每个人的工作有序地组织起来,就是团队的流程."有序",并不是"无争论".在大部分成功的软件团队模型中,各个角色有不同意见的冲突在

《构建之法》学习(3)——软件工程师的成长

<构建之法>学习(3)--软件工程师的成长 1.1个人能力的衡量与发展 积累软件开发相关的知识,提升技术技能 积累问题领域的知识和经验 对通用的软件设计思想和软件工程思想的理解 提升职业技能 实际成果      衡量软件开发的工作量和质量 项目/任务有多大? 花了多少时间? 质量如何? 是否按时交付? 1.2软件工程师的职业发展 职业发展--考级之路 职业成长--Steve McConnell版本 职业成长--大公司版本 职业成长--自我评估 1.3技能的反面 通过玩魔方的例子说明了技能提升的

软件工程师的成长(构建之法)

上班的时候,高级的软件工程师其实和普通的软件工程师一样坐在电脑前敲敲打打,查下邮件,上会网,看看手机,聊会天.但是两者的区别就在下班的时候,高级工程师下班回家,而新入职的工程师还在电脑前奋斗. 软件开发不仅有团队的流程,还对每个成员有独立的要求.软件团队是由个人组成的,团队开发的大流程中是每一个人在做具体的开发测试用户界面设计管理交流等工作.个人在团队中也有独立的工作流程.但是个人的工作要用什么来评判呢,用上班时间?那是不是经常加时的同志能够赢得头筹? 初级软件工程师要成长要先积累开发相关的知识

《构建之法—现代软件工程》读书笔记之 — 软件工程师的成长

只有对软件工程有更清晰的了解,才能知道努力的方向,才能成为一个合格的软件工程师,邹欣老师用这一节的内容带我们走近软件工程师的世界.那么,一个合格的软件工程师到底是怎样的标准,为了达到标准,又需要我们怎样做呢? 首先,我们应该了解软件工程到底包括了什么? 软件工程包括了开发.运营.维护软件过程中的很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户的满意度.软件的可靠性和可维护