1             术语、概念、假设

标准工时:假定有一个三年工作经验的人,1小时的能完成的工作量。主要用于衡量模块的粒度。

2             规划

2.1     不同阶段核心要素不同

一              项目管理核心三要素

项目管理核心三要素:时间、成本、质量三要素。三者是鱼和熊掌的关系,不可兼得。不同阶段,不同的侧重点不同。

二              竞争策略

基本竞争策略有三种:成本领先战略、差异化战略、集中化战略。要么把成本控制到比竞争对手更低的程度;要么在企业产品和服务中形成与众不同的特色,让顾客感觉到你提供了比其他竞争者更多的价值;要么企业致力于服务某一特定的市场细分、某一特定的产品种类或某一特定的地理范围。这三种战略架构上差异很大,成功实施需要不同资源和技能。以公司的实力,只会“涿鹿中原”,不会“偏安一隅”,所以集中化策略任何阶段不会选择。

三              增量市场阶段

此阶段核心因素:快(时间),早一天就可以多圈一批用户。质量是相对,要评价一个产品的质量,必须有一个参照物。而大部分潜在用户没接触过同类产品(如果有同类产品的话),所以无参照物参考。自然对质量没概念。这个阶段,有很多故事可讲,所以融资相对容易,公司确实也融到资了。由于目前处于存量市场阶段,所以本规划以增量市场阶段为主。

四              存量市场前期

此阶段的核心要素:好(质量)。竞争已经开始了,但软柿子多,提高质量可以更好地捏软柿子。已经没有多少故事可讲,融资变得困难,但此时用户较多,利润也高,所以还是钱还是好赚。在保证质量碾压软柿子的情况下,尽可能的快,这样能多捏几个软柿子。

“好”引申一下,变成差异化战略。差异化战略的五种基本途径:1,产品差异化。主要体现在:形式、特色、性能质量、一致性、耐用性、可靠性、可维护性、风格和设计。2,服务差异化。3,人员差异化。4,营销渠道的差异化,5,形象的差异化。

五              存量市场后期

此阶段的核心因素:省(成本)。软柿子被清光了,寡头垄断形成了。品牌已经建立,快会损害品牌,且没好处,所以放弃。在各自的优势领域,质量已经相对完美,通过质量很难有所突破。万一有个疯子打价格战,大家只能奉陪;寡头垄断下几乎必定出疯子。

成本领先战略是企业要在提供的产品的功能、质量差别不大的前提下,努力降低成本来取得竞争优势。如果上一阶段,质量不过关,则需要继续关注质量,直到质量令人满意。

六              成熟期

大势已定,什么都不重要。要么已经形成垄断,要么寡头已经达成默契。

2.2     研发部组织架构

一              工种

开发工程师职责:

l  详细设计。

l  编码。

高级开发工程师职责:

l  负责核心复杂功能的实现方案详细设计、编码实现。

l  负责疑难BUG分析诊断、攻关解决。

l  新人指导,帮新人详细设计。

开发组长

l  团队任务管理:开发工作量评估、开发任务分配。

l  团队生产质量提升:代码审核、开发风险识别/报告/协调解决。

l  团队生产力提升:代码模板研发与推广、最佳实践规范总结与推广、自动化研发生产工具研发与推广。

l  团队专业力提升:招聘面试、领导复盘总结改进。

部门值日官:

l  行政管理:请假、报销、值日之类。

l  进度汇总给部门上级。

l  调解各组矛盾,如果不服调解,上报部门上级。

l  配合各组组长完成任务。

部门经理:

l  行政管理。

l  确保进度按时完成。如果不能完成,尽快上报给部门上级。

l  解决部门矛盾。如果不能解决,尽快上报给部门上级。

l  指导各组长完成任务。

l  原则上不再编码,但要会代码审查,防止员工欺骗。

l  如果没有公共组,则临时抽调人员完成公共内容。

二              关于招聘

开发组长考虑技术,部门经理考虑薪资,技术经理(总监)考虑已有人员技能分布,年龄分布等。开发组缺人,向部门经理申请。如果部门经费充足,则向技术经理(总监)申请招人,否则申请借人。

三              两级架构

研发部由若干部门组成,部门又由若干工作组组成。正式部门由经理负责,如果工作繁杂,可设值日官;部门太小,也设值日官,不设经理;临时部门设一名值日官。工作组人员不限,设组长一名,如果超过10人,设副组长一名;超过15人,设副组长两人,依次类推。如果组员3人(或更少)设置值日生,不设组长。值日官、值日生完全是临时的,副组长有部分临时性。

四              增量阶段架构

按产品线划分部分部门,此阶段的部门具有临时性,故主管是:值日官,如果产品经理,需求分析能力达到良好,业务能力及格,则由产品经理担任。否则:由愿意当值日官的组长轮流担任。这样架构的目的:快,所有任务(包括借过来的售前、售后)都可以在部门内解决。

 

五              存量前期架构

按开发语言划分部门,再按产品划分组。方便代码走查、培训、总结以提高产品质量。此阶段:归还售前、售后人员,稍稍减少产品经理,大幅增加测试员。

 

六              存量后期架构

提取各语言的公共开发组,建立培训机构组建研发中心部,以降低成本。研发中心增加架构师:评估所有任务所需的标注工时。

2.3     规范

每条规范都是一个从坑里爬起来的人总结的,遵守规范可以大幅降低掉坑的几率。遵守一条规范的成本可以忽略,遵守全部规范的成本是巨大的,以至必定亏损。较好的做法:统计掉各种坑的几率,然后针对性的建立规范。

一              规范建议

代码走查发现的问题,不影响软件工程师的考核。影响考核的因素:完成的任务量(标注工时),测试员或用户发现的缺陷数量。

二              规范

目前规范维持原状,如果没规范,就暂时没有规范。我收集用户和测试人员反馈的缺陷,对产生的根源进行分类,优先针对缺陷最多或影响最大的地方建立规范。

三              规范节选

 

增量阶段

存量前期

存量后期

性质

案例为主(类似英美法系)

规则为主(类似大陆法系)

规则为主,案例为辅

软件开发人员能否直接和客户沟通

可以

不可以

不可以

能否加班

可以

不可以

随便

用户、客户反映的问题

尽量修改

转给产品经理决定

请用户、客户提交给产品经理

文档

尽可能少

CMM3 本地化

CMM3简化版

坏代码(暂时没问题,但高几率引发问题)

容许

不容许

容许出错率低的坏代码

对软件外包态度

提倡

尽量少,除非外包公司有我们正好需要的稀缺人才。这种几率太小。

质量过得去,便宜就行。

 

 

 

 

2.4     关注点

增量阶段:重点关注需求分析人员,砍掉鸡肋需求,暂缓次要需求、后期需求,工作量会减少一半到三分之二;要懂得克制,有所为有所不为,紧跟需求、找准题眼。存量前期,重点关注各组长,尤其是测试组长,他们是提高质量的关键,对降低成本也有好处。存量后期,重点关注各部门经理,尤其是研发中心部经理,分析、设计、公共库、培训是可以跨语言的。

一              增量阶段

l  深入了解顾客需求,减少开发过程中的需求变更与返工。根据国际最佳实践,改进型的项目在正式开发前应该有80%的需求确定性,突破性的新产品在开发前也至少应有50%的需求确定性。

l  市场与技术人员一起进行产品定义,减少信息传递过程中的失真,减少开发过程中的返工。

l  采用跨职能团队进行工作,以节省开发、测试、制造和上市等的周期时间。

l  对新产品项目进行开发优先顺序排列和资源分配,确保重要的项目得到优先开发。大需求的子需求如果优先级不同,则分开。

l  采用适当的IT工具提升开发效率。比如:基与AutoCAD(或中望CAD)比直接开发好;基于引擎比从头开发好。

l  代码走查。

l  采用有效的项目管理进行开发项目管理。

l  外包。

二              存量前期

l  代码走查,以提前发现问题。

l  增加评审力度,以提前发现问题。

l  培训。

l  采用适当的IT工具提升开发效率。

l  采用有效的项目管理进行开发项目管理。

l  建立技术平台和共用模块。有研究发现,一个新产品开发项目中平均有40%以上的重复劳动。由于是通过以前产品测试的,所以质量高的多。

l  专业性极强的工作,外包出去。

三              存量后期

l  软件开发人力成本是大头。培训,使得员工的技能匹配度高,这可降低平均工资。

l  建立技术平台和共用模块,缩短开发周期。缩短的不仅仅是开发,还是测试、售后。

l  代码走查。

l  采用适当的IT工具提升开发效率。

l  采用有效的项目管理进行开发项目管理。

l  多使用质量过得去,便宜的外包。

posted on 2019-01-08 14:55  软件架构师何志丹  阅读(279)  评论(0编辑  收藏