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

只有对软件工程有更清晰的了解,才能知道努力的方向,才能成为一个合格的软件工程师,邹欣老师用这一节的内容带我们走近软件工程师的世界。那么,一个合格的软件工程师到底是怎样的标准,为了达到标准,又需要我们怎样做呢?

首先,我们应该了解软件工程到底包括了什么?

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

那么,软件开发的工作量和质量怎么衡量呢?

1.项目/任务有多大?

说明项目的大小,一般用代码行数(LOC)来表示;也可以用功能点来表示。

2.花了多少时间?

可以用小时、天、月、年来表示。一组人所花费的时间可以用(人数*时间)来表示,

3.质量如何?

交付的代码中有多少缺陷?交付有两个定义

在代码完成时,交付给测试人员

在软件最终发布时,交付给顾客

可以用软件的缺陷的数量来除以项目的大小。例如 5 bug / KLOC ,意味着每千行程序有5 个缺陷。

4.是否按时交付

下面,让我们一起了解一下微软公司的软件工程师的职业等级:

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

中级软件开发师(SDE II):独立,可以写别人交给你的东西,不明白时知道去问谁

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

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

更高的职务(例如:Partner SDE、Distinguished Engineer、Technical Fellow):影响力扩大到整个机构甚至工业界。

软件工程师如何成长呢?

1.积累软件开发的相关知识,提升技术技能(如对具体技术的掌握,动手能力)。

例如:对java、c/c++、c#的掌握,诊断/提高效能的技术,对设备驱动程序(Device Driver)、内核测试器的掌握;对于某一开发平台的掌握。

2.积累问题领域的知识和实践。

第一点和第二点都可以在很多简历上看到,也可以比较容易地检测出来。随着经验的增长,一个工程师可以更广泛、更深入的技术和问题领域的知识。

3.对通用的软件设计思想和软件工程思想的理解。

这一方面比较虚,什么是好的软件设计思想?什么是好的软件工程思想?一个工程师开了博客,转发了很多别人的文章,这算有思想么?另一个工程师坚持做任何设计都要画UML图,这算有思想么?

4.提升职业技能

职业技能包括:自我管理能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力,这些能力在IT行业和其他行业都很重要。

5.实际成果

绝大部分软件工程师的工作成果都是可以公开的,你参与的产品用户评价如何,市场占有率如何人,对用户有多大价值?你在其中起了什么作用?行胜于言,这些实际的工作成果,是最重要的评价标准。

邹欣老师让我们更贴近的接触到了软件工程师的能力,让我们更清晰的认识到自己的不足和以后努力的方向,并且为我们开阔了眼界,寻求到了标准。让我们能够更好的把握自己,更严肃的对待未来的学习时光。

时间: 2024-10-05 23:47:28

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

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

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

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

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

《构建之法》需求分析 读书笔记

后悔没有早点读完这章,回想团队项目刚开始时做的需求分析,深深感到我们实在太天真.太理想.毕竟没有理论指导,按习惯做调研是容易碰钉子的,不过现在项目还未正式启动,亡羊补牢,为时未晚. 我们踩中了哪些坑? ①未能充分引导用户表达需求 我们采用了问卷调查的方式,但没有做进一步的深入调研.问卷调查有其好处--简单方便.调查速度快.数据易统计,但也有固有的弊端,那就是容易形式化,不易让受调查者充分表达自己的观点.问题或是诉求.出于节约受调查者时间的目的,题目基本设定为多项选择,这会有什么后果呢?填问卷的人

构建之法 现代软件工程

这篇是计算机类的优质预售推荐>>>><构建之法 现代软件工程(第二版)> "做中学 Learning By Doing"的现代方式教授软件工程,李未院士鼎力推荐,众多软工教师一致好评,微软研发总监邹欣力作 编辑推荐 1.作者的讲授方法非常新颖,符合现代软件工程的学习和训练规律,在各大高校计算机教学中取得很好的效果和反馈. 2.作者知名度很高,具有深厚的微软工作背景,是软件工程产学结合的典范. 3.作者在博客园开设了专题博客,提供教学指导.教学素材以及

《构建之法——现代软件工程》读书笔记---刘艺凌

1.概论 开篇就讲到一个概念即:软件=程序+软件工程. 书中说到,程序指的是源程序,也就是基于数据结构上的实现算法,这是我们软件学生的基本功.程序员需要对代码不断编写,程序越来越庞大,就需要源代码管理.程序是要正确运行的,就需要软件测试.我们写的程序需要让别人的看得懂,就得运用程序理解.程序总会出现BUG,就需要软件维护.掌握一系列过程需要一个项目经理,称为项目管理. 所以,构建管理(数据结构+算法),源代码管理,软件测试,软件维护,项目管理,需求分析这些环节构成了软件工程. 我们在学校做一些小

构建之法现代软件工程(第二次)

构建之法现代软件工程(第二次) 单元测试是什么? 单元测试是为了让各个模块的质量能得到稳定的,量化的保证的一种有效解决方案.(VSTS) 好的单元测试的标准是什么? 1.单元测试应该在最基本的功能/参数上验证程序的正确性 2.单元测试必须由最熟悉代码的人(程序的作者)来写 3.单元测试过后,机器状态保持不变 4.单元测试要快 5.单元测试应该产生可重复,一致的结果. 6.独立性--单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性. 7.单元测试应该覆盖所有代码

《构建之法——现代软件工程》

在读完邹欣老师的<构建之法——现代软件工程>后颇有感想,这本书的厉害之处是把软件的开发方法写的十分的清晰.有趣,将每一章的理论和知识点进行了归纳,举例说明,故事与企业相结合相联系,让我们进行了一次头脑风暴.在每一章要点中有重点字眼的加黑,图文搭配更加的生动形象,在阅读完代码.文字之后的图片不禁让人会心一笑.它结合了作者自身的开发经验,书中创造了一个虚拟环境,通过人物的对话和活动,讲述不同人物在软件工程中等不同角色和作用,展现出了软件工程这么学科,文中的代码有很强的实用性,更容易让人接受,让人有

《构建之法—现代软件工程》读后感

大家好,我是一名软件工程的在读大学生,之前对于软件工程并没有太大的认知,想着大概也就是敲敲代码,写写文档之类的,并没有进行太过深入的了解,但自从阅读了邹欣老师的<构建之法—现代软件工程>,似乎为我打开了关于软件工程的另一扇新世界的大门,让我对此有了不同的认识.       整本书中主要讲述了软件工程的基本概述,个人技术以及流程,软件工程师的成长,团队协作及流程,需求分析项目经理,软件设计与实现,用户体验以及软件测试,软件质量保证以及关于IT行业的创新.我们常常宣称软件工程非常的重要,它甚至背负

读《构建之法-现代软件工程》前三张后感

刚开学的第一天,学校发下了书本,有六本书,当时会在上这门课的头一天晚上去看看书本的内容,去大概了解这门课程.其中有一门课程的书吸引了我,感觉这本书和其他的教科书有所不同,它不像其他书一样那么的死板,除了公式,就是理论,没什么奇特的地方.而这本书却很奇特,它不但吸引了我,还让我觉得很有趣,这本书是邹欣老师写的一本书,一本胜似小说的书,平时爱看小说的我,就开始喜欢上了这本书,这本有关软件工程的小说书. 到现在,老师也上了好几次课,我们也对软件工程有了一些初步的了解,而软件工程这本书,我也大概的看完了