软件工程师的成长

读《构建之法》笔记

个人能力的衡量与发展

  • 软件工程之中,单个的成员叫做individual contributor,简称IC,IC在团队之中的流程如下
    • 通过交流、 实验、 快速原型等方法, 理解问题、 需求或任务
    • 提出多种解决办法并估计工作量
    • 其中包括寻找以前的解决方案, 因为很多工作是重复性的
    • 与相关角色交流解决问题的提案, 决定一个可行的方案
    • 执行, 把想法变成实际中能工作的代码, 同时验证方案的可行性和其他特性(例如程序的效能等)
    • 和团队的其他角色合作, 在测试环境中测试实现方案, 修复缺陷(Bug) 。 如果此方案有严重的问题, 那么就考虑其他方案
    • 在解决方案发布出去之后, 对结果负责每个人的工作质量直接影响最终软件的质量

初级软件工程师的成长

  • 积累软件开发相关的知识, 提升技术技能(如对具体技术的掌握, 动手能力) 。 例如: 对Java、 C/C++、 C#的掌握, 诊断/提高效能的技术,对设备驱动程序(Device Driver) 、 内核调试器(Kernel Debugger) 的掌握; 对于某一开发平台的掌握
  • 积累问题领域的知识和经验(例如: 对医疗或金融行业的了解) 。 第一点和第二点都可以在很多简历上都可以看到, 也可以比较容易地检测出来。 随着经验的增长, 一个工程师可以掌握更广泛、 更深入的技术和问题领域的知识
  • 对通用的软件设计思想和软件工程思想的理解。 这一方面就比较虚,什么是好的软件设计思想? 什么是好的软件工程思想? 一个工程师开了博客, 转发了很多别人的文章, 这算有思想么? 另一个工程师坚持做任何设计都要画UML图, 这算有思想么?
  • 提升职业技能(区别于技术技能) 。 职业技能包括: 自我管理的能力, 表达和交流的能力, 与人合作的能力, 按质按量完成任务的执行力, 这些能力在IT行业和其他行业都很重要
  • 实际成果。 绝大部分软件工程师的工作成果都是可以公开的, 你参与的产品用户评价如何, 市场占有率如何, 对用户有多大价值? 你在其中起了什么作用?行胜于言, 这些实际的工作成果, 是最重要的评价标准。 软件开发的工作量和质量怎么衡量呢? PSP认为有下列4个因素:
    a . 项目/任务有多大? 说明项目的大小, 一般用代码行数(Line OfCode, LOC) 来表示; 也可以用功能点(Function Point) 来表示。
    b . 花了多少时间? 可以用小时、 天、 月、 年来表示。 一组人所花费的时间可以用(人数×时间) 来表示, 例如某项目花费了10个人×月。
    c . 质量如何? 交付的代码中有多少缺陷?

猜你喜欢

转载自blog.csdn.net/FZUMRWANG/article/details/82728669