软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此个人在团队中也有独立的流程。把每个人的工作有序的组织起来,就是团队的流程,单个成员称为Individual Contributor(IC),IC在团队中的流程有如下几样:
通过交流,实验,快速原型等方法,理解问题,任务和需求
提出多种解决办法并评估工作量,其中包括寻找以前的解决方案,因为很多工作是重复性的
与相关角色交流解决问题提案,决定一个可行的方案
执行,把想法变成实际中能工作的代码,同时验证方案的可行性(例如程序的效能等)
和团队的其他角色合作,在测试环境中测试实现方案,修复缺陷。如果此方案有严重的问题,那么就考虑其他方案。
在解决方案发布出去之后,对结果负责。
初级软件工程师如何成长,对此我们应着重研究,丰富作为一个初级软件工程师应总结的经验和技能,第一,积累软件开发相关的知识,提升技术技能,例如对像是Java,C\C++,C#等高级语言的掌握,诊断提高效能的技术,掌握驱动程序,内核调试器,对一个开发平台的熟练操作。第二,积累问题领域的知识,对客户需求充分了解。第三要加深软件设计思想,软件工程思想和职业技能,对实际成果做深入的评估和市场研究。
初级软件工程师在职业规划方面要了解多项认证机构,了解大公司版本的职业成长,借此给自己设计合适的提升方式。
软件项目的两人合作也是提升个人能力的表现,如何结队编程我们需注意以下几点:
1.处于探索阶段的项目,需要深入的研究,在这种情况下,一个人长时间的独立钻研是有必要的。
2.在做后期维护的时候,如果维护的技术含量不高,只需要做有效的复审即可,不必拘泥于形式,硬拉一个人来结队唱二人转。
3.如果验证测试需要运行很长时间,那么两个人在那里等待结果是有点浪费时间的。
4.如果团队的人员要在多个项目中工作,不能充分保证足够的结队编程时间,那么成员要经常处于等待的状态,反而影响效率。
5.关键是如何最大限度的发挥“领航员”的作用,如果用处不大,也就无需结队。
最后的团队流程是一个大概念,需要加深学习,这里我们根据《构建之法》的内容做一些名词的陈列:
软件团队的模式:主治医师模式,明星模式,社区模式,业余剧团模式,秘密团队,特工团队,交响乐团模式,爵士乐模式,功能团队模式,官僚模式。
Rational Unified Process 统一流程(RUP):业务建模,需求,分析和设计,实现,测试,部署,配置和变更管理,项目管理,环境。
RUP四阶段:初始阶段,细化阶段,构造阶段,交付阶段