zoukankan      html  css  js  c++  java
  • 《构建之法》第三章 软件工程师的成长

    《构建之法》第三章 软件工程师的成长

    一、个人能力的衡量与发展

    软件开发流程:软件工程把相关的技术和过程统一到一个体系中。

    目的: 为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和可维护性。

    IC(Individual Contributor):单个成员

      软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的。个人在团队中也有独立的流程。把每个人的工作有序地组织起来,就是团队的流程。“有序”,并不是“无争论”。在大部分成功的软件团队模型中,各个角色有不同意见的冲突在所难免,因此团队要做的就是解决冲突、意见统一。以足球队为例,足球队有个人流程,有单个运动员的技术、体能要求,在单个运动员的技术、体能达标的情况下,再去讲团队的阵型和战略,还有团队的交流。软件系统的绝大部分模块都是由个人开发或维护的。

    IC在团队中的流程:

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

    2.提出多种解决办法并估计工作量; 其中包括寻找以前的解决方案,因为很多工作是重复性的

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

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

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

    6.在解决方案发布出去之后,对结果负责每个人的工作质量直接影响最终软件的质量。

    初级软件工程师的成长:

    1. 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力);
    2. 积累问题领域的知识和经验。。随着经验的增长,一个工程师可以掌握更广泛、更深入的技术和问题领域的知识;
    3. 对通用的软件设计思想和软件工程思想的理解。这一方面就比较虚;
    4. 提升职业技能(区别于技术技能)。职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力;
    5. 实际成果

    软件开发的工作量和质量的衡量标准:(4个因素)

    1、项目/任务有多大?说明项目的大小,一般用代码行数来表示;也可以用功能点来表示;

    2、花了多少时间?可以用小时、天、月、年来表示。一组人所花费的时间可以用(人数×时间)来表示;

    3、质量如何?交付的代码中有多少缺陷? 交付有两个定义:

    • 在代码完成时,交付给测试人员
    • 在软件最终发布时,交付给顾客。可以用缺陷的数量来除以项目的大小。

    4、是否按时交付

    在团队工作中,稳定、一致的交付时间是衡量一个员工能力的重要方面。

    一个成熟的软件工程师应该能够降低任务交付时间的标准方差。

    二、软件工程师的职业发展

    1、职业发展—考级:

    • 国家认证的,有一定的权威性和通用性(计算机等级考试,全国计算机技术与软件专业技术资格考试);

    • 行业内认证的(微软公司的微软认证专家MCP,甲骨文公司的Oracle认证项目OCP);

    2、职业成长—Steve McConnell版本:

    • 知识;

    • 能力(1.阅读(4-6篇经典文献的深入分析和阅读);2.工作经验(参与并完成6个具体的项目);3.课程(参加3个专门的课程));

    3、职业成长—大公司版本:

    • 有独立解决问题的能力;

    • 有领导完成项目的能力;

    • 具有一定的影响力(对于整个机构,甚至工业界);

    4、职业成长—自我评估

    三、技能的反面及总结

      大概的意思是要懂得它的原理,就好比盖楼房,“地基”打好了,上面也就好盖了。在团队的大流程中,是每一个具体的个人在做开发、测试、用户界面设计、管理、交流等工作。因此,个人在团队中也有独立的流程。作为学生,不能一口吃成个胖子,所以要先把“底层”的做好了,能力才能逐步提升。

  • 相关阅读:
    tomcat 部署项目的多种方式
    HttpServletRequestWrapper模拟实现分布式Session
    eclipse4.3 解决没有check out as maven project
    Mysql的Merge存储引擎实现分表查询
    ubuntu gcc低版本过低引起错误
    SpringMVC强大的数据绑定
    Reading Notes : 180212 冯诺依曼计算机
    Reading Notes : 180211 概述计算机
    Struts2 第六讲 -- Struts2的结果类型
    Struts2 第五讲 -- Struts2与Servlet的API解耦
  • 原文地址:https://www.cnblogs.com/wyz-1995/p/8421326.html
Copyright © 2011-2022 走看看