曾在硅谷工作几年前进入华为,对华为的研发痛心...
笔者以前曾在美国硅谷工作,和世界上最顶尖的软件工程师和计算机领域的牛人一起共事过,也先后带领过不同的团队交付了一些业界领先的企业级软件产品。几年前进入华为,和几个做企业业务的产品线有些合作,在此过程中感到华为在软件产业的差距还比较大;和中国领先的互联网产品相比,在易用性、贴近用户和产品快速迭代等方面也落后不少。华为在软件研发领域的确存在不少问题,这些问题导致华为的IT软件产品质量比较差、开发效率低、产品交付周期长,很是让人痛心。
近年,在从CT到ICT的转型的过程中,华为研发如何能解放和发展生产力,大幅提升研发效率,是未来能否立足于强者之林的一个关键。因此笔者写下此文以引起思考。
组织
1、架构设计SE与开发分离,一些架构师与专家基本不懂开发
一般各个产品线都会设有架构设计部,主要成员也会以各个层次的SE为主。这些SE也都曾是程序员,但通常因为长期脱离开发部门,主要精力都放在会议、胶片和文档的编写上,以致编程的能力基本丢失,新技术学习的机会也有限。例如一个移动开发的SE,自己对怎么在Android、iOS上进行开发一点儿都不清楚。在这样的基础上,做好真正的架构简直是空谈。在硅谷成功的企业里,好的架构设计师一般是融入在产品团队中的,随时都能上手编程,而且编程能力非常强。
2、开发者多为低级别,比较难有技术积累
一般基层程序员在工作几年后,有能力的都被提升到PL、PM、SE等职位,员工也都想着被提拔,渐渐成为管理者。大家觉得,光做开发没有职业前途,永远都是在金字塔的底层。而在硅谷的企业,说话比较有分量、收入相对较高的有很多是在各层级中的技术佼佼者,他们备受尊重,干得也开心,不少人根本不愿意转做管理者。
编程其实是一门艺术,热爱和用心是非常重要的,也相应的容易出成绩。这就是为什么在计算机领域,如果做到顶尖程序员,一个人顶一百个很正常。如果程序员觉得没有前途,不思进取,而资质较好的很快又被提拔为管理者,那华为的软件开发将很难有技术和人才的积累。
3、多头管理
华为负责产品开发的部门有PDT、PDU等,相应的拥有PDT经理、PDU经理、架设部经理和SE、Project Manager、PO经理、RDPDT经理、Line Manager、Project Leader等多个角色。这种组织结构清晰地定义了每个Leader的角色,确保一个大的产品开发周期和质量有保证,同时保证开发的人力得到最合理的应用。
但它带来的问题也显而易见,就是各个角色在产品开发过程中有不同的想法和意见,可能出现多头指挥,让开发人员无所适从,沟通的成本也非常大。同时,这种复杂的管理结构对需要快速迭代的IT软件开发也会带来很大制约。大家看看微信的起家史,应该能感觉到,对于一些相对独立的、需要快速迭代的IT软件产品,往往在一个比较强的(产品)经理带领下的一个扁平化的团队效率会高很多。
4、沟通成本高
由于组织复杂,中间层较多,各种各样的任务从上面下来,落实的方法就是各种各样的会议,所以现在很多研发员工的不少时间都被各种各样的规划、研讨、问题回溯、客户支持等会议占用。员工笑称:白天是用来开会的,晚上加班才有时间编程序。针对于不同的组织和项目,能尽快找出相应的沟通节点并能有效地减少这些沟通节点,是一个项目和部门领导需要经常思考的问题。
流程
1、IPD流程不太适合需要快速迭代的软件
华为引入的IPD产品开发交付流程给公司带来了巨大的收益。但时代在发展,技术在演进,IPD流程更适合偏硬件的产品开发,为了保障产品质量,开发交付的周期较为漫长。从基层员工的角度,IPD流程节点的很多环节,如为完成CLINT减少Warning的数字、DTS值减少等僵化的指标,实际上反而可能会加大产品的风险,降低产品质量。
2、安全红线耗费资源巨大
安全红线的目的是防止产品出现安全漏洞,初衷是好的,但执行起来相对比较僵化,效率也低。试想一个互联网产品为了过安全红线一个版本等一两个月,根本无法生存。
建议参照一些先进企业的方法,把安全意识教育和SDLC(安全开发生命周期)融入到员工日常开发习惯中,在开发的同时进行测试和督促整改,对于一些红线达标比较好的部门,可以适当放松以加快交付,检查出问题,相应的问责机制要严格。把安全意识充分融入到开发者的血液中,让安全红线检查“形同虚设”。
环境
1、没有时间抬头看路
开发员工长期在上述流程、组织问题和客户支持的压力下加班加点,几乎没有时间“抬头看路”,只会用一些比较老旧的技术,也不太会站在巨人的肩膀上前进,走了不少弯路,消耗了更多的资源。
互联网时代,MOOC提供了大量实时、实用、先进的网上课程(包括免费的和收费的),如Coursera、Udemy、Pluralsight、Stanford Online、edX、YouTube相应的Channel等,想要学的课程几乎什么都有。
现在的计算机技术日新月异,新的思想、方法、工具等层出不穷,例如Java语言是2000年左右在企业软件领域崛起的,几乎成为很多平台、服务端软件的必选,但随着大规模分布式架构、云计算的兴起,它的短板,如内存管理/GC不可控性、多线程或是异步对IO的控制效率,过度依赖较为重载的OOP等问题,如果使用不当很容易造成灾难性问题。Google内部渐渐把它们有些后台软件都迁移到了他们自己发明的更为先进的Go语言环境下。Dropbox更是两年前开始使用了比Go还先进的Rust语言,无缝迁移了90%以上的云存储平台。试问,华为有几个人用过甚至是听说过这些语言?华为的研发员工如果不去不断地提升,怎么可能赶上时代的步伐?怎么能开发出质量好的产品?
2、技术任职资格效果不佳,传帮带困难
理论上,技术任职资格是用来给搞技术的人提供晋升通道的。但实际应用上,虽然有破格提拔机制,总体上还是按资排辈,评委也大多是由有较高级别技术任职资格,但对现在技术并不太了解的管理者担当。
同时,任职从申请、技能鉴定考试到做答辩胶片、答辩,消耗了员工不少时间和精力。硅谷的企业一般在这方面比较灵活,技术通道由360 Review和与其工作密切相关的主管直接评价、申请和授予,有些员工在28-33岁左右已经有了非常高的技术职级和地位。
因为技术晋升通道不顺畅,能力较强的员工渐渐离开了开发岗位,较多时间沉浸在文档、胶片和会议中,新来的年轻员工过几年又在走同一个循环。是否可以彻底打通技术升值通道,鼓励有能力的人带新人,同时完善奖励机制,在及时激励和长期激励上下功夫,让研发人员看到技术发展空间,乐于编码,留住人才。
工具
1、研发办公环境
在硅谷先进的软件公司里,MacBook Pro/Air是标准配置,方便携带,随时随地编程。很多软件及移动开发调试都在家里、公司、食堂随时可以进行,包括编程、编译、Review和提交;数据库、各种Library、工具和Docker等都可以在本地的OSX/Linux环境下运行。需要的话,也随时可以跟企业内部服务器通过命令行互联,进行文件、代码的传输和测试。
笔者在硅谷工作时认识一个美国小伙子,他基本都是深夜在家里写代码,白天几乎看不到人,但效率和质量都很高。而华为的大部分研发人员,都被局限在华为内部拥挤嘈杂的敏捷岛,用着桌面云进行着低效开发。
2、代码库管理、Review、Checkin和Bug Tracking工具
基于Web/Git的Review和Checkin的相应工具差距非常大。通过源程序的Review审批和Checkin的机制,可以很快传递能力和互相学习,提升代码质量。同时,在任何一个时间点,任何一个高级工程师或是领导都可以通过这些工具来了解员工真正在代码上的贡献和价值,审查进度和版本分支,进度和质量也好把握。以笔者的经验,这是最好的传递技能的工具之一,往往有一个能人,很快就能把一批年轻人的能力带起来。
华为一般用的是内部开发的DTS bug tracking的工具,比较死板,总体和上述提到的最新的Git源程序管理工具、Review工具、自动化和Nightly Build、敏捷管理工具无法无缝地连接在一起。
3、知识资源的获取
由于华为内网Proxy权限问题和受限于大家英语水平的原因,大部分员工还是习惯于使用百度进行程序、库、方法和问题的搜索。但由于共享性差,同时技术水平与美国相差比较大,所有能在百度上找到的好的资源非常有限,质量也较差。美国软件开发人员已经把诸如StackOverflow、GitHub和Google作为学习和资源分享不可分割的一部分。
华为内部吐槽
这是由华为两大基因决定的!
PPTV:
写得太好了,希望老板认真看看。每件事情都有同感。吐槽如下:
1、矩阵管理和多头管理问题。在一个200-300人左右的团队搞矩阵管理,又是业务线,又是资源线,有必要吗?资源主管不管下属的业务,那还管什么呢?
2、技术任职:每年浩浩荡荡,公司走成千上万人的电子流。有必要吗?绩效好,肯定是有能力,如果不是凭能力获得的绩效,就不应该给好绩效。实在是脱裤子放屁,多此一举。
这两周部门各级骨干都在搞任职,既要自己答辩,还要给别人做评委。不是在去答辩的路上,就是在做评委的路上。悲摧!
3、安全红线投入太大。对于公司安全体系和办公室的要求不能只是要求绝对安全和检查,而是要求他们提供能力,要以简单合理的投入,让产品线做出符合安全要求的产品。否则只是提要求和检查,这就太简单了。
Majic:
公司多出现这样的人才是好事,多看看外面的世界,多看看和业界其他公司相比有什么差距,不同,从而取他人之长。
但俗话说得好,适合的才是最好的。优秀的东西,未必适合自己。另外华为业务那么多,还要区别来看。适合运营商BG的作法,不一定适合企业BG。有些变革也需要时间来适应。
总之,讲的都挺有道理的,涨了见识,对公司也有很大参考意义,顶一个。
华为的奋斗者:
这是由华为公司两大基因决定的!
基因1: 基于不信任的管理
假定了一个团队或者一个员工个体,没有办法自动地按要求完成任务,一定要有外力的干预和指导,才能保证航行在正确的轨道上。
不信任的假定,造成了领导很焦虑,员工被干扰。领导焦虑哪一步没看住就要出问题,所以比如各种对齐,各种进展报告,各种回溯会。然后制定各种管控流程(包括IPD),设定各种管控角色,这些东西都需要员工参与,员工就写胶片开会,为各种流程上缴交付件,向各种管控角色汇报。
话分两头讲,这一点也不能说是领导完全不对,他其实触动了华为的另一个“传统”(这段可能有些人不爱听)。
我们设想一下,文中提到的那个白天不出现,晚上写代码的哥们,怎么保证他是按需求和设计在编码的呢?怎么审计?怎么考核?怎么跟踪?其实答案很简单,那个哥们必定是个极客,而极客是免运维的。而我司的研发定位,绝大部分基本就是程序员而已,这能不管理吗?
这就像手动挡和自动挡,既然选择了开手动,那为了适应不同速度的换挡干预就是必不可少的,否则起步后永远挂1挡就是快不了。
现状嘛,我司是需要大量手动挡的开发人员,只要按部就班做好自己的事情就行,这是批量化标准化作业的要求。
极客嘛,当然也是需要的,但很少,这些人单独管理就行。
我觉得公司推了这么多年的所谓敏捷开发流程,其实也是要建立在精英团队基础上, 几个人简单思想一碰撞,各自都能清楚的理解和心中有数,就能按时完成任务对接起来,这是很高技巧的,也不是2,3年能掌握的,如果一个团队大部分员工刚写了2年代码,工作还需要别人指导,早上像模像样的开个早会,会上各种问题从9点开到11点,这不叫早会,这叫罚站。这也不叫敏捷,这叫保姆式开发。
基因二:组织复杂,各自为政
华为缺少扁平化管理,层级多,通道多。这样复杂的组织机构,造成了信息沟通对齐非常困难,每个组织机构又有自己的考评,都要考虑自己的团队建设和发展,价值呈现。
人都有趋利的本性,必然会希望更多坚持对自己发展和价值有利的,而放弃那种不太出彩又要大体力投入的。
但活在那里,总要有人干,很多事情都不是一两个leader能确定的,小leader也不能什么事都升级给大leader,显得自己无能。于是就讨论划域定界再讨论争议升级开会对齐拉通再讨论裁决拍板……
甚至于,这种决策过程花费的人力和时间甚至超过真正做事情本身。这还是组织自上而下没太大分歧的情况。如果赶上不同通道的组织之间分歧很大,那决策和研讨时间又要再翻几倍了。我甚至见过有领导感叹自己指挥不动下面的人的情况,并不是因为指挥不动,而是多个通道的要求不同,下面不确定要怎么动。
其实话说回来,说难听点,这叫多头管理多通道管理,说好听一点,这不就是管理上的民主吗?因为民主,所以才争吵啊,所以才决策慢啊,要是一个老专家或者老领导一发话,大家都照办,那是效率高,是不是又要有人抱怨专政了?
这两个基因,在华为这种大公司,不太可能改变掉,局部试点是有可能的,比如搞搞精英团队,或者在某些项目上试点扁平化,都是有可能的,至于全面改变,不现实。而且真的改成那个样子,还指不定出什么更大篓子。
崔龙海:
总结的很好,也是都是实际的道理,导致现在这种情况最根本的原因,还是研发没有在公司得到应有的重视,研发人员地位比较低下。华为在外部的宣传,一向标榜为在技术上舍得投入的公司,但是实际情况是耗费了大量资金在合作,低端开发方便,把一个技术工种做成了劳动密集型工种。
安全红线的巨额投入基于中国特殊背景
Eh:
除了安全红线,其他的都同意。
安全红线的巨额、超高投入,实际上是为这个中国身份买单,E///等西方公司对于安全红线并没有这么小心翼翼,但是华为不一样,我们始终生生活在有色眼镜下面,必须小心谨慎、如履薄冰,必须投入比其他公司多得多的精力和成本,不能出任何问题,否则稍有不慎就会满盘皆输。
IPD的开发模式,确实需要改改了,这种20多年前业界的先进管理模式,早就被其他的模式取代了;美国硅谷各大公司,早就不采用这种模式。站在时代的节点,华为必须拿出当年推行IPD的改革的魄力,改革研发的组织体系和架构,用新的思维和流程进行重建,这样才能支撑未来CT向ICT的转移,同时能够支撑在人员不增长多少的情况下,收入翻番。
任职资格确实需要改改了,现在确实是一帮不懂(苹果评价梨)或者行政主管去评价,通过胶片的质量和胶片宣讲的效果来判断,这个使得任职资格完全向相反的方向去了。曾经有不少搞笑的案例,比如一个同事任职没有过,评委给出来的结论是:胶片写的偏题了;另外一个同事任职没有过:宣讲不太流利。“茶壶倒饺子”,倒出来才是真的。现在的任职不是看倒出来多少饺子,而是变成了看茶壶里面有多少饺子,更有甚者变成了看茶壶好看不好看了。完全脱离了任职的本真。任职应该很简单,几个刚性的条件(有没有到过前线、有没有流血过,有没有开过枪等等)一卡,然后让这个领域的专家去判断,结果就出来了,根本不需要员工花费大量的精力临时去“刷墙”。
华为浪费在“刷墙”上面的精力太多了。
达路朝天:
开发和设计分离,N年前随着慧通研发员工转华为而失败,现在来看其实阴魂不散,设计人员不写代码,不就是开发和设计分离的另外表达?
我司中高层领导都是血拼组织管理上去的,技术的底蕴也就那么点,你让他们深入理解新技术新知识并引导变革,且这个变革不是两三年就能成功的,且不说从最低层的PL组织普及接受新技术,产品版本至少得废两个才能成熟商用吧,哪个领导会无视自己的职业生涯,甘做这样的蓝血十杰?
近年来公司在研发领域研发汪都影响到的大变革有这两点:开发和设计分离(费)、敏捷(徐),认为是组织管理范畴,而非硅谷海归。这种事情非重量级的人不能搞。
收购新兴技术公司,也许是个出路。公司内部如此封闭的人治体系搞这种技术变革不对口味。
不过是小心思罢了!
x00368712:
不要太迷信新技术,通信行业对于交付必须零缺陷的,这种要求对新技术必须经过严格审视才行,不敢轻易用的。
通俗一点,互联网对于大部分功能还是推送型的,用户觉得还用就会继续用,不好用就放弃,但是最会有用户用的。可以允许失败;
通信行业,你做一个基站,对应客户不像互联网那样多如牛毛,这一家运营商不用,下一家运营商也不用,你的产品再好都卖不出去的,客户不信任你。我们不允许失败的。
稳当一点,没啥!
jazz32:
首先“标题”取“硅谷海归..”有什么意义?有崇拜的因素?结果还引起一片附和。可明天一句主管赞扬的话就让你感激涕零,换了想法。谈什么思想?不过是小心思罢了。这里面有好多人回复时自以为是,但都是拿自己的工作当成全部,进而去低估别人的工作,不是想着通力合作而只想着斗争。
请问:别人有没有对你的工作指手划脚?只不过是一个最初级的实用主义者的牢骚之主,谈什么格调。
各级主管信心爆棚,很难听取意见
西奔东走:
同感,尽管我是加拿大海归。以前还想着努力努力改变点什么,现在觉得,完全不可能。
首先,华为本身是很成功的企业。因此各部门主管都信心爆棚,很难听取意见。
其次,华为按照自己的模式已经发展了几十年了,很多套路已经根深蒂固,就算想改,也非常难。
最后,外来人员在华为会有一个很长的文化适应期。适应的,也习惯了。不适应的,离开了。
所以,除非是发生一次危机,华为从上到下都意识到不变革,就不能生存的时候,才有可能发生改变。在此之前,“哪里凉快到哪里歇着”——多么真切的关爱啊。
地中海南边:
作为一名市场人员,看得我心惊肉跳,胆颤心惊,无法想象我司研发居然这么落后!!!
怪不得,怪不得我们很多OR直接给拒绝掉,怪不得,怪不得动不动一个项目屁大点定制研发都要我们找客户要几十万美元定制费,因为我司计算“代码行”来计算工作量,不懂得先进的工具,高效率的方法,也没有外部的视野,和美国差太远了;我们自己内部说现在研发已经变成了皮包公司了,只知道外包!
文 | 蓝血研究•咔嚓
阅读原文,查看更多