软件架构师何志丹        

某个总经理电话面试我问的问题,我整理成文档,以提高自己。欢迎大家指教。

 

如果我当上技术经理如何展开工作... 1

1       总括... 1

1.1        引子... 2

1.2        技术经理(总监)的任务... 2

1.3        此职位和我高度匹配... 2

2       术语、概念、假设... 4

3       规划... 5

3.1        不同阶段核心要素不同... 5

3.2        研发部组织架构... 6

3.3        规范... 8

3.4        关注点... 9

4       计划... 10

5       培训与考核... 11

5.1        培训... 11

5.2        考核... 11

5.3        对我的考核... 12

5.4        晋升... 12

6       需求与测试... 12

6.1        不同性格在不同阶段的优劣... 12

6.2        关于需求人员... 13

6.3        关于测试人员... 14

6.4        需求确认或整理... 14

6.5        需求分解、任务跟踪... 14

7       单人代码走查... 14

7.1        代码走查员发展阶段... 15

7.2        代码走查好处... 15

7.3        我代码走查需要的时间... 15

8       专业化分工及组建公司公共库... 16

8.1        专业化分工... 16

8.2        组建公司公共库... 16

8.3        关于技术攻关... 16

 

 

1             总括

公司成立以来,一直处于高速发展状态,未来几年也将高速发展。高速发展意味着:容易摔倒。摔倒了,运气好,继续跑,抢点残羹冷汁;运气不好,直接出局。又不能不跑,等修整好了,发现无路可跑:增量市场已被抢光。

1.1     引子

电脑游戏《双点医院》的经典情节:“赚钱的医院突然巨额亏损,症状是:各科室人满为患” 。新人的解决方法是:建立更多的科室,招更多的医生、护士。新招的医生和护士是新手,效率低,于是堵塞更严重。根本原因是:那些难治的病占用工作人员太多的时间,将那些难治疗的病人(不到总病人的10%)请回去,很快就扭亏为盈。对应到软件开发中,就是不到10%的需求,让整个团队疲于奔命,还亏钱。

     放到现实中,这个问题各科室主任和各工种主任都无法解决。如果医院有技术总监的话,归技术总监解决。绝大部分医院没技术总监,所以只能正副院长解决,如果院长们是技术性、管理型、市场型,没有财务型,那就无解。

 

1.2     技术经理(总监)的任务

核心任务:产品研发全过程进度与质量把控,包括:

l  根据不同产品、不同阶段的核心诉求,调整部门结构。

l  在各部门、产品、工种之间调配资源(主要是人力),从上级申请资源。

l  协调各产品定位,以服务不同层次的用户,分析是否存在断层。

l  针对高发的问题,建立够用的制度和规范。

l  处理部门间矛盾,协调部门间合作。

日常任务

l  对上沟通,了解公司的业务、战略方向、制定相应的计划。熟悉管理知识,以方便与上级沟通。

l  和友方部门沟通,以相互配合。了解市场知识,以提高沟通效率。

l  查看代码、需求文档、测试结果,以保持对相关员工的了解。继续补充需求知识,熟悉主要产品业务知识,了解次要产品业务知识。

l  检查各部门的成果(部门自查往往是不彻底的),发现瓶颈。和需求分析人员、售前、售后(甚至客户、用户)沟通,以估算需求的效果。根据缺陷产生原因分类统计或汇总缺陷,以发现开发团队甚至个人瓶颈。比对代码走查发现的缺陷和测试员发现的缺陷,以估算两者的瓶颈。

l  处理下级部门的申请。

1.3     此职位和我高度匹配

“产品研发全过程进度与质量把控”的关键是:看文档、写文档。会看文档,才能正确决策;会写文档,才能方便上级和其它利益相关人决策。这刚好是我的特长,一般架构师都有这个特长。

一              我是理论与实践的完美结合

大二是就考过了软考的高级程序员(今软件设计师),2014年过了软件架构师,理论联系实际至今。创业的那段经历,让我体会到渠道的重要;广州顶丰让我体会到沟通的重要;上一份工作让我体会到“少即是多”:鸡肋需求(作用很小的需求)砍掉,后期需求(前期没有,后期有用的功能)暂缓。

二              全局观和技术积累

全局观和技术积累的完美结合,将风险消灭于萌芽状态。同一行业、同一公司待的久,容易积累技术;不同行业、不同大小的公司容易形成大局观。先积累技术,再培养大局观,显然比先大局观后技术合适。大型公司(武汉开目、南方数码)、中型公司(中山极点3维)、小型公司(广州顶丰)都待过,创业4年。大中公司方便学技术,小公司(往往无规章或规章不健全)容易发现引起项目失败的非技术问题。创业暴露自己几乎所有的缺陷(尤其是技术缺陷),后面的几年成功补充了相关知识。

三              公共库

直接使用我积累的组件,以降低成本、缩短工期、提高质量。在创业和业余时间封装了多个库(dll),主要3个:SN.dll通用功能,不依赖任何库(包括STL、MFC)和操作系统。SNMFC.dll,对mfc和Windows api进一步封装。SNStl.dll,对stl进一步封装。目前已经经过两个商业软件和若干小软件的验证。源代码可以我和公司共有。典型类:几行代码建立服务端、客户端通讯,如果不用类库,要几十行,几十行足以搞死新手了。而且自动处理拆包、粘包。

CAD二次开发库。2017到2018,广东XX开发CAD图纸大师时,封装一个CAD库,此库归广东XX。我现在一边找工作,一边重新封装库,相对于广东XX的库,应用范围广,但性能稍差。典型类:某个适配器类屏蔽CAD2010之后和CAD2010之前版本的细微区别。

四              开发高质量的软件

开发高质量的软件,以提高用户体验。比如:软件几乎没有崩溃,可维护性(新增功能或大改功能的难度,架构师与软件工程师的最大区别)高。

五              强大的学习能力

强大的学习能力,以解决新问题。这是适应工作环境的结果,以前的工作职位是:公共组软件工程师,架构师。出于工作需要:经常完成各类预研工作。曾于2003年3月出任CSDN专题开发大版主、2003年7月出任CSDN VC/MFC版的大版主多年。

六              培训能力

较强的培训能力,方便团队建设。网上培训6人,4人上班(至少2人拿高的工资),2人(初中学历)创业接活。

如果可行的话,培养一到多个公共程序员、代码走查员,一次只培养一个。熟练的公共程序员、代码走查员可以大幅提高开发效率:新手公共程序员、代码走查员会严重降低开发效率:公共模块有缺陷,意味这所有模块有缺陷。新手代码走查员,会发现大量次要缺陷,被走查左右为难:改,影响工期;不改,违反制度。

七              我的品德

敢于直言、不拉帮结派

重技术轻业务使得我在哪个公司工作的效率相差不大,所以敢于直言。

实践是检验理论的唯一标准

在方案选择上无偏好,根据实践情况调整。如果别人有更好的方案,则采纳别人的方案。

适可而止,方能全身而退

这和我最近工作经历有关。我的工资比中小公司的平均工资高很多,中小公司没有容错实力,如果搞砸了(或6个月无进展),就出局了。如果搞成(或基本完成)了,公司没有能赚回我工资的工作,也得离去。

一般而言,公司前期技术重要,后期技术相对次要,这是就形成后期技术部产出低于收益。这时,我愿意离去。其实许多技术人员,也是适合前期,他们在后期也愿意离去,很憋屈。

善于总结

重要内容书面总结,方便后面来的人查阅。

八              此职位不适合科班出身的技术经理

科班出身的人理论强,但很可能脱离实际(执着质量,忽视工时和成本)。就算按最低标准CMM3搞,理想状态也要3个月,这个3个月许多工作都要暂停。快速奔跑的团队,停3个月,不知道能否继续跑。就算搞成了,跑速大幅降低,不利于抢占市场。

九              此任务不适合自学成才的技术经理

自学成才的人实践能力强,勇于尝试。但高速发展时,尝试失败的代价太大。

   

 

全文下载:

https://pan.baidu.com/s/1CYZpocEWTnwyua7mWdxQ7A

 

posted on 2019-01-06 18:58  软件架构师何志丹  阅读(1303)  评论(6编辑  收藏