zoukankan      html  css  js  c++  java
  • 我理解的技术管理的核心工作----定战略

        很多程序员技术做的很好之后晋升为组长,又做的很好,晋升为了技术管理者,比如技术总监、技术VP等等。我和这些人接触之后,发现他们大部分有个共性,就是自认为只是个专门开会,然后根据会议精神给技术人员派活的人。事情很虚,谁来都能做,已经不是做技术的了。由此又引发了危机感,需要做出成绩,然后抓着一些技术优化、重构、翻新、造轮子不放。说起来主导了好多技术的事情,但是就是获得不了安全感,依然觉得自己飘在半空,落不到实处。

        其实我也是做技术管理的,而且现在依然在做技术管理,干这件事好多年了,但我一点都不觉得这件事虚,相反很实在,很有难度和挑战,需要深厚的技术实力才能胜任,同时为公司创造了大量有价值的东西,从而获得了职业安全感。既然如此自然也就没有什么危机感,工作本身就在促进我成长。知识、经验一直是积累状态,虽然累但也很开心,很满足,这种感觉相信所有程序员都能体会。

        这里分享一些我个人在技术管理岗位上做事的方法论和亲身经历的一些事例。

        技术管理到底要做什么?这个问题其实很简单。技术管理既然落在管理上,那就是个管理岗位。管理的对象有2个:技术、技术从业人员(也就是工程师)。既然要管理技术,那么自然需要技术管理者的技术实力是深厚的,否则无法管理技术这么复杂庞大的一摊子事情。要管理工程师,要求自己能把大家凝聚起来发挥超越单个人的力量。

        柳传志的9字真言:定战略、搭班子、带队伍,可以完全照搬到技术管理这项工作上来,而我也就是用这个方法管理技术和工程师的。

        首先是定战略。

        技术管理者定出来的战略自然是技术战略而不是其他什么战略(公司战略、产品战略),技术战略是什么,是技术管理者必须想清楚的问题,如果没有技术战略会产生2个严重的问题:

        1、打乱仗。做了很多新东西、造了很多新轮子、优化了很多架构,其实技术管理者心里门清:这么多人做了这么多事,对公司产生了多大收益,自己是解释不清的,更多的可能是几乎没有什么收益,即便不做这些优化产品也能正常开发,正常上线,也不比别家慢。做了这些事也没觉得开发速度更快,效率更高。所以这部分工作可能就白做了。团队奋斗了,付出了,收效甚微。这种团队里员工最常说的一句话是:这么累,做这些优化到底图什么。工程师也是人,需要投入有回报。没有战略打乱仗,投入产出比就是一件听天由命的事情了。最后仅仅只是变成了技术管理者的自我感动。

        2、会变成仅仅是接产品经理需求的纯执行团队。这样的技术团队是死气沉沉的一潭死水。这种团队里最常听到的话是这样的:这活干的没意思,工作没意思,事情没成长,以后出去没人要,在公司待久了就废了,领导除了派活还干了什么,等等。我相信大部分程序员看到这里就会心的笑了^-^。这是比第1种更糟糕的团队状态。这种技术团队里,技术管理者的安全感更差,因为这样做技术管理的话,那么这个岗位真的谁都能做,做的越久,越远离技术,越觉得不踏实,自己把自己干废了。

        好的技术战略需要满足以下特点:

        技术战略需要符合公司发展战略。在公司的大战略下做技术战略,达成的结果是可以明确讲清楚的,达成之后获得的成果要让公司兴奋。这样达成了战略才能让公司获益,才能给团队成员相应的回报,形成劳有所获的良性循环。同时在公司层面也知道,如果换了技术管理者,很难找到这样能为公司服务,做技术创新的人了。

        技术战略需要是先进的技术(比公司当前的技术先进),这样可以获得工程师的认可,工程师认为学到了东西(如果战略达成,实际上确实是会学到东西),技术管理者也强化了自身技术能力。

        技术战略是需要技术管理者自己发自内心的认可,想达成的。这很重要,如果仅仅是公司兴奋,技术管理者自己兴奋不起来,那么推动起来事情可能就变味了,8分的事情只能做到6分。最终效果打折扣,会陷入厌倦、讨厌自己的工作的状态中,这显然是不可长久的。

        技术战略是要能达成的。这一点最重要,否则就变成了年年吹牛,年年不能兑现的专业技术吹了。

        

        说下我过去定的一些战略吧。

        在某公司创业时,公司是金融向,找我过去的目的非常简单,把产品客户端做上线、做好。众所周知,互联网金融公司并不是一个以产品体验和技术实力为核心的领域(至少大部分如此),核心是业务、销售。所以技术要求并不高,能做到迭代快,不崩溃就OK。而且这种公司人员流动大,技术水平不怎么样的人多(也有水平很高的,几个技术核心可能水平很高)。针对这种既成事实,我制定的技术战略其实很简单:

        App核心框架用系统自带的,不引入任何市面上的框架。但功能组件等第三方包随便用。

        公司整体技术水平不行,而且互联网金融公司也不太好招聘到水平高的,所以不适合引入复杂框架。系统自带的工程简单改改就能满足基本产品需求,这种方式可以在高人员流动性的既成事实下,最低成本的进行工作交接。新人进来几乎不需要学习任何技术知识,仅学习产品和业务就能上手。整个工程也不需要高水平的人来做把控,中低级的工程师就能胜任。

        这个战略获得了领导们的一致认可。它是认清公司自身特点,结合实际制定的技术战略。看起来很low,但是公司获益,切实可行。之前公司有个App,这个方案比之前App的方案简单太多,成本低太多。互联网金融的App,尤其是在创业阶段,几乎不会有复杂人员组织结构,不会涉及到多团队开发,不会涉及到跨部门代码安全性,所以在公司层面这是往前走了一步,大道至简的一步。

        工程师层面,工程师抛弃了复杂老旧的框架,几乎无拘无束的开发,再也不用为了几乎无法理解的开源框架里深埋的bug,或者使用不当而熬夜加班。开发环境更好,效率更高。深受工程师好评。

        在我个人层面(也就是技术管理者层面),我对此方法深深的认可。我不认为这样的技术团队能驾驭或者开发出一套完善的系统框架出来,那么不用第三方框架,使用系统自带是最佳途径。

        事实证明在这个没有框架的框架下,这个App从0行代码开始,一个月就开发完毕,可以上线了。但是因为是金融领域,受外部制肘太多,最终也没能上线(甲方爸爸不授权,那就没法上线)。

        又服务于一家公司。一家美国上市互联网公司。有一年我定的技术战略是:

        把所有的人工管理的位置改为AI智能管理。

        这个技术战略抛出来的时候,领导和同僚们眼前一亮,一致认可。原因很简单,此时AI已经是大趋势,而且行业里已经有了多如牛毛的成功案例,公司里其他部门也有相关的成功案例。领导和同僚们几乎不需要我论证任何东西就能确信,只要AI能上线那么一定是有很大收益的,只是现在还不能精确计算出收益有多大。但是从兄弟部门、行业成功案例来看,至少是50%的效率提升是完全没问题的。

        工程师层面,现行团队里的工程师都是没有AI开发经验的,也都知道AI是以后的趋势,需要获得相关经验为以后的职业发展打下基础,而且AI工程师的薪资明显更高。此战略一出来,几乎就获得了所有人的支持(确实有个别人不支持,并不是他的发展方向,所以后来他离职时,我几乎没有挽留)。大家都为了能获得相关经验,把项目做成而努力。高数、统计、线性代数等教材都拿出来看,很少会有这么有冲劲的工程师团队为一个战略愿意付出这么大学习成本的。

        我个人层面,我对此战略深深认可。因为过去的经验、知识在新的技术环境下,已经显得不堪使用,急需新技术补充。AI已经被证明了是新趋势,且能力强大。我认为后续推动我的职业继续发展的技术就是AI,所以我需要获得这项技术。

        于是第1个AI技术项目在1行代码都没有的情况下,团队日夜奋斗,仅1个半月就上线了。上线之后当周转化率几乎翻倍,效果立竿见影,远超50%预期。这进一步证明了AI方向的正确性,领导、团队、我都更坚定的要把这项战略进一步落地。

        可见定战略这事,需要很强的技术积累才能定的对,定的好。一旦定了会影响至少未来一年的团队发展,十分重要。定战略的过程需要技术管理者花费大量心血去研究公司现状、行业现状、未来趋势,才能把战略定的为公司创造价值,让技术既能满足现在,又为未来打基础。

        定战略体现了技术管理者的核心价值。所带来的是一个技术管理者不可被轻易替代的直接证明,也是职业安全感的直接来源。

        搭班子和带团队就下次再说吧。

  • 相关阅读:
    利用JS实现的根据经纬度计算地球上两点之间的距离
    html中meta标签作用详解
    Jquery Highcharts 参数配置说明
    Properties类的使用示例
    利用数据库模版创建方便部署的.Net项目调试环境
    ASP.NET修改Web.Config文件(对xml的操作)
    创建动态数据输入用户界面
    DataGrid相关知识总结(收集自各位老大处)
    在C#.net中如何操作XML
    C#中使用反射的性能分析
  • 原文地址:https://www.cnblogs.com/caexiang/p/10012754.html
Copyright © 2011-2022 走看看