软件架构师何志丹
某个总经理电话面试我问的问题, 我整理成文档, 以提高自己. 欢迎大家指教.
如果我当上技术经理如何展开工作... 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
来源: https://www.cnblogs.com/he-zhidan/p/10229883.html