华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

前言:

职场就像围城,我们每一个职场人总是以“墙外”的视角羡慕着“墙内”的世界,而也许你的生活也出现在别人的梦中。希望“互联网坊间八卦”能成为一个分享和了解不同生活的平台。

今天,笔者给大家分享一位已离职华为员工的“惯例”心声。让我们一起了解一下华为基层员工最原始的生活状态。希望这些“干货”能让你认识到不一样的华为。

华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

1. 概要

社招Q级入,C年C连C(半年粒度BBCCCX),Q级出,今年40+。无T无E无绩效工资,微量年终奖,唯一加薪乃普调伴降公积金。补偿较中庸,N+sqrt(4)。其中,Q=B^C+C^B,^为乘方,B、C、Q均为质数,C为勾股数。一直被否定,从未改初心,虽是白菜价,品质赛黄金。

2. 加入华为

三年前,面试某知名公司,技术面OK,被hr痛扁(听说hr来自华为),机缘巧合来到我司。尽管待遇很低,尽管早已知晓目标部门的名声,尽管天不时(年底)地不利(路远)人不合(原领导同事和家人坚决反对),尽管知道面试官(后来的领导)口头承诺的第一年xxW、第二年xxxW的收入不太可能实现(实际略小于承诺的一半),我还是来了。为何?缘也,信也。早在来华为之前,就已经为华为做出过贡献。面试时明显感到我司(之我部门)软件能力一般,有提高空间。一位面试官说过,华为是个大公司,但还算不上是伟大的公司。现在看来,这句话太对了,商业上很成功,技术上很领先,造福了全球百姓,提供了大量岗位,然而距离伟大还有些差距。

3. 核心价值观

看公司先看核心价值观。以客户为中心,以奋斗者为本,艰苦奋斗,批评与自我批评,狼性文化,屁股对领导,超强执行力,……三观很正,颇具特色,值得体验。今天是最后一次温习,最后一次运用了。

4. 新员工和三营培训

有三位培训老师给我留下深刻印象。一位老师说起他自己经常主动重构代码,并鼓励同学们也积极重构。我很欣赏、崇拜、佩服这位老师。另一位老师说,在华为要想获得好的绩效,就要学会利用别人的时间完成自己的事情。我不知道这个利用到底是怎么个意思,如果是善意借用、积极求助还好,否则,甩锅、干扰别人、把帮助自己的人当傻子,那就是教唆坏毛病了。还有一位老师说的很好:你们是新鲜血液,要努力改变华为!

华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

5. 工作琐事

说几个印象比较深的事件。对事不对人,绝对正能量,若有负能量,请知负负得正,请复习核心价值观之批评篇!不是全部事实,但全部是事实。

5. 1 失败的优化

初来乍到就被LLT之低效惊呆,同学们真能忍啊,每人每天浪费一小时。于是主动要求优化。改进了一个已有集群分布式方案,优化了10倍。然而并不好用。分析认为无需分布式就应提升百倍,因为CPU利用率仅1%。跟领导说了想法,然而经过多次优化,狂读代码,仅提升30%。悲剧,肯定被认为吹牛。然而我始终坚信分析是对的,因为如此小的用例不可能这么慢,也许是因为日志,也许是其它。不过后来放弃了,因为用的人越来越少。这事做的不好,自我批评。

5. 2 无论怎样都是错

参加某项目,因我负责的部分非常复杂,经过系统分析设计了一个调试计划。首先按照分析出的依赖关系先把自己移植的大量老代码一行一行仔细调试两天,晨会时领导就说了:你应该先调和某部门的接口!几天后找兄弟部门很快打通了一个公共通信通道(对我和对项目组多人都有用,此任务属无主灰色地带),并帮助多人适配,这位领导又说了,你应该先把你自己的代码调好再说!真是欲加之罪何患无辞啊,不去了解实际情况,只管一味否定。另一个任务,因工作量很大,安排一个月完成,我写了一系列脚本,只用半个月就完成了。还是这位领导说,你完成这么快,一定是忽略了什么!每次无原则的批评,我一直保持了最大程度的隐忍,只是嗯一下,什么也没说。

5. 3 主动背锅也不行

和另一个较近的部门联调时,因接口有变,我说我能不能看看你们的代码?对方同意了,下载代码(我是有下载权限的),用了三个小时通读一遍,发现了七个多线程或内存bug,整理了详细文档发给对方,对方表示感谢,很快修改,并发来一句话:你说的都是正确的。再例会上汇报工作时,还是那位领导,当着很多人的面说了这样一句话:你做这些,功劳也不会算到你的头上。我不知道他当时是善意提醒还是威胁,不过从语气上感觉威胁的成分大一些。当时心里憋了一句话:我很敬重你的技术能力和贡献,如果你的格局能再提高一点,必将前途无量。不过还是忍住了没有说出来。

有一篇文章《黑白色的华为》说的很好,主动背锅可以降低公司的成本。我也不是闲着没事见锅就背,一定是这个锅会影响到我负责的产品,或者影响到我的开发效率我才会背的。而且,优先背影响多人的锅,例如曾经阅读了大量的脚本、日志,详细记录了构建过程的时间分布,并提出了一些改进意见。然而由于换部门,未能实施。

5. 4 有人帮忙有人拆台

我的这个任务涉及多个兄弟部门。等到调试差不多进行实测时,发现性能比预期慢一百多倍(预期半分钟,实际80分钟)。A部门的一位女同学和她的PL一直以来给予了极大的支持,这次又花费很多精力帮我快速确定了问题在B部门。我还特地给他们发了一封感谢信。当我和一位前辈(相当于子项目组长)说起定位进展时,这位前辈说了一句很难听的话,此处省略十余字。总之就是说:“你分析的不对”。怎么自己部门的老员工都这种做派啊!反而是外部门从未谋面的人在积极的帮助我。而一些领导跟兄弟部门打交道总是拿腔拿调,拉通对齐。有时确实存在不太配合的人和部门,但很多时候对方是很友好的。拉通拉通,路本来就是通的,还拉什么拉!

5.5 这种帮忙不要也罢

随后,B部门进行性能问题定位,虽不像A部门那么积极,总体上还过得去。这里我部门的另一位PL进行的拉通催促还是有效果的,B部门提高了优先级,因此有时拉通也是必要的。由于任务较紧急,不能被动等待对方分析。由于这差不多是最后的困难问题了,我就向对方了解了相关的进程部署情况,在自己的环境上进行了分析,意外的先于对方确定了问题的根源,竟然又是日志!对方修改后,立竿见影,6分钟搞定。虽然和预期目标还有不少差距,但已从不可用变为可用。一位同事曾对我说:我觉得(与另外两位SE相比)你更适合做SE。当我在群里宣布进展,准备提交代码(还包括另一重要修改)时,说话带脏字的那位前辈立即回复:这两个问题我早解决了,我正在测试,在我测试期间不许提交!纳尼?解决问题的过程都是我和A、B两个部门沟通的,你啥也不知道怎么就解决了?可是我哪敢违抗前辈旨意啊,随他去吧。然而,半个月后,测试发现了问题,找来了。经过激烈的分析和争论,并找了高一级的领导,最终确认,前辈所谓的解决,乃是为了及时转测试采用的临时规避手段!没有我的代码,还是不能解决问题。因这件事情,本来基本准时完成的,结果推迟了半个月。这件事情我本身也没有处理好,没有及时扼制这种不好的苗头,并且天真的以为权威人士会已经帮我把责任承担起来。还有另外一次前辈自以为是的“帮助”我,造成长达一个月的延期。

5.6下水道是城市的良心

三年里,进行了很多改进,提出了很多建议。例如,帮助工程组解决了若干问题,包括脚本的缺陷、makefile的问题、修改编译选项以便更早发现错误等,有些相关人员也对我表示了感谢,有些权威人士则采取拖延、忽视、直接否定等各种方法进行干扰或拒绝。有一次,我用了整整一天的时间加强编译选项,并修改了一百多处错误。一位同学提醒我:你做这些,领导也看不见呀!我忘了是怎么回复他的,但我心里清楚,这件事情非常重要,不能不做。我不能因为他反对就不做。为什么要解决这些“不属于我”的问题?为什么有多人多次“提醒”我:你做好自己的事情就行了,我仍然要坚持?原因很简单:没有一件事情是与我无关的。编译那么慢,提交一次代码要扒一层皮,要一遍又一遍的催促committer。如果问题不解决,我自己的代码无法通过测试,怎么合入主线?这难道不是我自己的事情吗?多线程的问题不解决,怎么做性能优化?老代码移植,我若不坚持做重构,以前那些频繁出问题的模块、那些晦涩的代码会不会被后入唾骂?挨骂的人不还是我吗?即使这样,在人为制造的紧张气氛下,在每天都是紧急又重要的没有思考时间的高强度劳动下,我对自己的代码还是十分担心。

华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

6. 一些观点

6. 1 什么是狼性

关于狼性,可能一些人还存在错误的认识,错误的表现。狼性是指狼作为一个群体群体合作、密切配合,胜则举杯相庆,败则拼死相救。是不答目的不罢休的精神。狼性决不是像狼一样残暴无情,自私残忍,吞噬同伴,损人利己。

6. 2 流程流程,要流才能成

我无法忍受在如此低效的团队中工作,一直想通过技术和流程把他变成一个高效的团队。曾经有一个关键问题,我用了一个月优化,有了较明显提升(感谢一位很厉害的架构师提供了很好的思路)。然而各种折腾,用了六个月代码也合不进主线。commiter机制(不是committer)真是好啊!

6. 3 过度加班何时休

一些部门如此高强度的加班绝非必要。过度的加班、昼夜不分意味着管理能力的低下,意味着部分领导对效率的忽视,对自身和员工身心健康的视而不见。

有一年的时间加班很多,很无能,很无奈。然而加班并不能带来好绩效。几乎所有的任务都是费时费力的,所有的任务都是依赖于某几个关键环节(审批、版本构建、运行环境等),而被依赖的环节总是不停的出状况,产生阻塞。有一句话,如果很多人感觉到工作吃力,一定是有的环节没有做好,一定是有人没有尽到责任。一次,新增一个组件,需要进行27处不同的配置,很多配置是重复的,费尽周折。愤怒之下,在群里发了个消息:这样的设计,不及格!霍金在时间简史的序里说过,每增加一个公式,这本书的价值就降低一半。我们做软件、做设计,不管给直接客户使用,还是给下游研发使用,一定要考虑到对别人的影响,有没有可能给很多人带来很多额外的工作量。

6. 3 善用人才

华为从不缺少人才,但是缺少人才成长的土壤。周围有很多软件能力不错的人、工作认真的人,可是我们有些部门的软件怎么就那么差呢?

6.4 软件质量等级

我想定义一个软件质量等级(不同于cmmi),分为三级:第一级是消极的质量意识,有bug也不改。有些内部使用的软件在这一级上。试想,自己用的软件都不好好做,你相信自己是以客户为中心的吗?第二级是积极被动的质量意识,先实现功能,有bug就改,让DI等各种数据好看。很多业务软件在这一级上。第三级是积极主动的质量意识,从设计上保证正确,积极重构。目前鸿蒙内核和IC等使用形式化验证的比较重视这些。

6.5 缺陷是设计出来的,质量是管理出来的

十几年的软件开发,始终牢记一句话:There are two ways of constructing a software design. One way is to make it so simple that there is obviously no deficiency. Another way is to make it so complex that there is no obvious deficiency. 是故,要想优化,必先简化。持续重构,并非费力不讨好:你很快就能体会到重构的好处。

对技术含量低的工作,适合采用非人性化管理,犯错惩罚。对技术含量高的工作,适合采用人性化管理,员工要有足够的自由决定权,进步应有表扬或奖励。放眼望去,我司哪个软件硬件产品不是高科技产品?哪个不复杂?然而等级森严、官本位、听话的才是好孩子,善于表现、八面玲珑、会拉通的才是好同志。硬件不硬,软件不软,没完没了的联调、定位,确始终没见一个好用的版本(espace还凑和,其它的呵呵)。广大工程师被当作低等劳动力拼命使唤,技术无长进,身心受煎熬。为什么华为的软件不行?你把员工当成低档次的人,员工必然回报你低档次的软件!

6.6 华为需要空杯心态

一位培训老师说,新员工要有空杯心态。这没错,我同意。而且我也认识到自己说过的一些话有些不妥,显得过于骄傲。一次师傅给我介绍一个算法,我说了一句,不就是个算法吗?师傅应该很生气。实际上,我心里并不是蔑视,只是想更多的了解业务逻辑,只是表达方式太不妥了(很难过)。以前做的是算法密集型的软件,到处都是算法,自然而然觉得算法只是一个大型软件的很小一部分。算法嘛,只要知道输入输出是啥就好了,具体实现有问题或者效率低的话重新写一个不就完了吗?没想到这个算法竟然是最核心的算法之一,也是后来花费了大量心思重新设计确始终未能亲手实现的一个最大的遗憾。也没想到这块业务用到的算法是很少的,大部分都是非常朴素的实现,大多数工程师并不考虑性能,不考虑扩展性。

长期以来,感觉到部分土著有一种特别强烈的不可一世的优越感。或许是觉得自己有地位、懂业务、做出过贡献就是高人一等。我虽是新员工,确是个老古董,知识陈旧,多么希望听新员工讲讲新知识!多么希望把自己的一点经验跟新老员工分享一下!

亲们,无论新老,一定要谦虚啊!知识有局限,信息不对称。如果你学过相对论,或者哪怕只知道有多个惯性坐标系,就知道没有谁比别人的处境更优越。

6.7 帮助别人最快乐

华为之旅,得到了很多热心的帮助。有同学对我的不妥言语进行了提醒。有不少同学在我懵懂无知的时候进行了详细的业务讲解。特别的,一位测试师傅非常nice的多次讲解某测试系统的使用,解答我的low问题。一位资深架构师多次在业务、算法、绩效等方面给予技术和道义上的支持。一位测试PL在我四处求助无门的时候提供了一套关键的测试环境,组内几位测试同学也给予各方面的帮助。一位大领导在我持续低绩效即将被抛弃的时候帮忙安排了新的部门,新部门的领导和同事帮忙很多,很友好。千里之外从未谋面的同事给予了很赞的支持。

我也很高兴曾经帮助过很多人。被临时借调到曾经待过的项目组支持一战略紧急任务的开发。写了几个脚本帮助多个项目组快速完成了任务,后来又帮助十余人完成相关工作,价值得以放大。自己画蛇添眼的额外review了3万行代码,发现并修改原有代码的100处风险问题并总结了文档。遗憾的是,有两个已有问题未发现,被触发,被质疑引入了错误。因改动多、测试系统慢,committer响应缓慢,又有其他人加入导致git冲突,一周的任务拖了一个月才完成,两边领导都不满意。我始终坚信自己是认真帮助这一项目组的,没有给原项目组丢脸。

有一位女生在新员工答辩时还有些业务问题不清楚,又找不到合适的人,找我帮忙,我在所知的范围内很耐心的进行了讲解,包括周末在家通过电话介绍某标准协议(不涉密)。另一位曾经帮助过我的女生周末通过espace求助一个较复杂的问题。一位男生长期向我求助某领域的业务知识,有一次,竟因为帮助这位男生定位(需要和其他部门联调)一个问题惹恼了一位PL。而这位PL曾在我的工作几乎完成时把我赶到其它项目,一边在我疲惫不堪的时候多次半夜11点(入睡不久)打电话要求教他。另一方面我还要落一个工作未完成的名声。他的逻辑似乎是这样的:你不能帮助别人,但必须无条件的帮助我。

有一次民主生活会,要求大家说说什么时候最快乐(每个小组一人发言)。有说发工资的,有说找到bug的,等等。当时没有好好想,后来觉得,

帮助别人是最快乐的,被别人信任是最快乐的。

华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

7. 说声感谢,说声抱歉

感谢所有帮助过我的人和所有批评过我的人,感谢为我指路的人。你们是最美的,你们是最帅的。感谢所有因为信任而向我求助的人,你们代表的是美好的未来。一位领导曾经这样批评:提高30%又有什么用呢?还有一位:虽然你做了很多,但你终究还是引入了错误。虽然有些批评含有看人下菜碟的成分,含有吹毛求疵的成分,但批评总归的是对的。自己做的还是不够好,没有做到万无一失。

最最对不起的,是老婆和孩子。老婆为我和孩子付出很多,小孩一直对不称职的爹表现出最大的宽容。而我,既没有时间陪她们,也没有为她们提供好的经济上的支持。在公司遇到这么多不顺心的事从来没有哭过,但一想到家,总会内疚的流泪。

有时候没有按照领导的要求完成工作,领导有意见,这里也道个歉!有时是因为能力或客观原因,但更多时候是因为目标不同,对完成工作的理解不同。例如,你认为的完成是产品该呈现的功能特性都能呈现出来,该有的数据都有。而我所谓的完成,是要填平现有的坑、尽可能避免给后入留坑,还要考虑运行效率、可读性、扩展性、复用等等。所以我才会不停的重构,所以我要花大量的时间把存量代码全部弄清楚才能下手编码,所以我才会要求跨越接口边界阅读合作部门的代码。

华为员工感慨:为改变华为而来,因平庸三载被bye,三连C虽憾无悔

8. 离开了,留个印记(算法)

来一趟,不能白来,定要留下点什么。三年来,始终忘不了那个算法。当最初了解到那个算法的实现时,马上意识到:内存!这个算法的内存消耗是不可控的,规格大了定要爆炸。再仔细分析,不止内存,运行效率也会有问题。内存和时间复杂度都有问题。看这个算法的要解决的问题,感觉并不复杂,想重新设计一个。这并不是我的任务,只能是业余时间想一想。问题看似简单,细思极恐,有一两个关键点始终想不出好的解决方案。参考了a、b、c等开源软件一些感觉问题的处理,经过两年左右的考虑,才大概成型。集低内存、高效率、易理解于一身。这个算法的文档已经留在华为,算是抛砖引玉吧。遗憾的是没有亲自写出代码,实际验证。

算法的价值:当你不需要它时,一文不值。当你需要它时,不止亿文。

9. 华为明天更好

祝愿华为明天变得更好!祝任老板健康长寿!祝各位战友顺利、吉祥!


分享到:


相關文章: