zoukankan      html  css  js  c++  java
  • 如果我当上技术经理如何展开工作(一)

    软件架构师何志丹        

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

     

    如果我当上技术经理如何展开工作... 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

  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/he-zhidan/p/10229883.html
Copyright © 2011-2022 走看看