中国老板意识不到的效率

2019年,最近打算认真的谈一谈我对软件开发行业效率的理解。 小弟不才,并非高材生,也非BAT大厂出身,算是热爱编程,学习至今,从2006年学摩托罗拉编程之道,2007年学诺基亚塞班编程,到2008年依次每年学习斯坦福iPhone编程教程至今。工作也换过一些,见识倒是涨了不少。很多时候英语很重要,可以看到业界一流的技术,跟高手沟通。

嗯,跑题了,上面的意思是,哥还算是业界积极工作的一线的员工,下面谈谈作为程序员这一生的职业发展中效率的问题。

首先,继续搬出来我的老言论https://www.zhihu.com/question/31986162/answer/54512703 ,90年代程序猿之间流行的谎言忽悠了大家很多年:『程序猿这职业只能干到30岁,之后要么转行当PM,要么就要换行当了,因为代码写不过刚毕业的大学生了』

现在我已经35岁了,还在积极写代码,上面的谣言不攻自破。新来的90后程序员虽然很有干劲,但是离80后还差了好一大截子,公司的业务逻辑,知识面,肯吃苦的精神,都差了好多。总而言之,90后新生一代效率还是极低的,需要一些时间成长。

但是35岁之后的程序员生涯,在中国,是没有多少人走过这条路的,我们85后作为第一代,该走往何处?

首先看美国吧,那里大把大把的40,50的老程序员,人家可好好的。一生的乐趣就在于写那段代码,也没遇到什么困境。

但是反观国内,普遍遇到了瓶颈,这个瓶颈是什么呢?

我们仔细看看问题,软件项目如何开展?

可能一个项目经理,一个产品经理,一个研发经理,一个设计主管,带着一群下属在干活,可能分别指挥者5-20人,大的团队可能上百人,但是了不得了。

那么这些人总有个经验丰富,沟通能力强的人做中层管理,上承接老板的意志,下带动团队积极成长。

这个人,往往现在都是80后程序员在承担着。

这些人承担了很大的责任,却往往被中国领导者忽视了重要性,这是阻碍了中国的软件程序员行业继续往前发展的很大的原因。

  1. 他们往往要花费更多的时间去做沟通工作,传达老板的指示和要求,矫正员工的工作内容方向,保证团队凝聚力。想一想,每天花10分钟跟20个人的团队沟通一下每个人具体做什么,怎么做,可能就是3个小时。
  2. 他们也要承担很大的解决风险的责任,真正出了问题,第一时间还是找这位管理者,第一时间扑到代码上一起修bug是很容易的场景
  3. 他们往往因为熟悉,所以不做重复劳动,让下属去做。但是随着时间变化,那份代码的写法可能也在变化,他们往往错失了代码最前沿的写法。
  4. 公司的管理层部门也可能占据这位中层管理者很大的时间比例,很多大公司应该不可避免的会有专门的HR规则要走,publicity,activity,月度/季度/年度的回顾,总要写点PPT吧?调薪,年终奖发多少,总要计算,定级定岗吧?

所有的以上的责任,都慢慢导致领导者,渐渐变成职业领导者,他们成了渐渐脱离底层技术的架空中层。 于是每当公司裁员的时候,第一时间就想到了的中层管理。

我们再回顾一下,什么人可以成为中层管理?往往是技术最好,沟通能力最强的那位。

人家好好的程序员升职加薪的路线,怎么走着走着,就成了陷阱般的职位呢?

说来说去,就是老板没意识到这位中层管理有多能干!团队效率可以好多少!脑力活动行业,永远是一个狼抵上三头羊。以至于老板一直愚蠢的觉得第一线最基层的工作最能干!联想一下某些大会,总喜欢邀请石油工人~~~

用西方的词语来说,这就是productivity,efficiency。我们中国的老板,甚至国外的很多老板,都看不到一个中层管理的好坏多么影响团队效率!

举个简单的例子,同样是一份任务,A经理火速召集相关人员开会,甚至把大家拉倒会议室里一起搞开发,B经理慢吞吞的发邮件,安排下属自由组织干活。 A经理一周内做完了,B花了一个月,老板火急火燎的催B的下属在最后一天加班,最后员工苦不堪言的做完了。

我感觉在中国,十有八九B的团队反而得到领导的赏识,千恩万谢,好不容易做完了。而A的得力干活,往往得到领导一句感谢,并且之后这就是标配速度,不能慢过于这个。

就算A,B的情商都一样高,A做得快而且也会秀功夫,可能也无力回天,会哭会闹的娃就是容易喝到奶。

所以在中国,项目管理、技术经理这类岗位,往往做着做着,大家都想回归程序员基础员工,至少还手里握着一个核心技术生产能力呐!

这也决定了中国现在的普遍程序员晋升之路越走越窄,甚至还有回流做一线开发。我这么说,当然不是以偏概全,我相信也有不少企业重视团队人才、效率,那样的团队往往中层管理都得到了很大的重视。说个简单的笑话,软件面试,你怎么看出来一个人效率高?无解。算法解题快不代表效率高~

那么中层管理该怎么做好自己的本职工作外,还能突出重围,跨入更高一层管理呢?

下面我就谈谈我的一些建议和经验

  1. 放眼未来,推动团队往前走,制定一线规格的标准,带一个永不落伍的团队。举个简单的例子来说,我们从第一年尝试了swift 2.2语言写iOS App,第二年就在swift3发布同日做到了项目整体升级,第三年做到了iOS11发布当天就升级app支持并用上了最新的iOS11 drag/drop科技,iPhone X的规格升级也是第一时间做到。就是永远推动团队往更好的地方去尝试,给一些试错时间
  2. 重视解决公司内部组织结构的建设。既然是程序员,那么数据结构、算法一定了然于心并实践到工作里,那个不是面试才用的东西。很多公司沟通效率之底下,往往是阻碍公司成长的绊脚石,很多利益交叉其中,甚至是阻碍了改革。同样一件事情,领导的意志需要5层才能达到一线的程序员,请问这个执行效率会有多底下?这中间来回的反馈,甚至还有执行层面的截然相反的命令。 如果不采用扁平化的管理,如何高效率解决问题?在公司成长到一定阶段,必然团队膨胀扩大,再也无法扁平化管理的时候,那么如何划分team?我认为划分team的第一大依据,就是他们责任清晰好划分,义务明确好执行。简单来说,client / server 从来没有人模糊过,这两拨人往往分为2个team。那么每家公司业务都不一样,找到那个清晰的划分界限,是管理层很重要的任务。
  3. 鼓励团队创新,刚刚提到了自己时间有限,必然无法得到业界第一手的信息,那么团队就成了你的眼睛和手,得让他们的声音传达到你耳朵里,真正得到评估和反馈。
  4. 多做对外的分享。其实做久了软件开发,大家都知道,开源有很多好用的东西,但是一旦自家用起来,往往有很多定制化的东西。有的是你需要的,有的是你不需要的,你要仔细甄别开。于是你就没有必要去害怕分享,生怕技术被别人占了。因为你的东西,源自于你的需求的理解。别人的公司,源自他们公司的理解。 微信团队常常分享自家的架构多牛逼,那是因为他们的需求就是要解决亿级的问题,他们每天的工作就是思考那些问题,他们得出来的结论,部分适用于所有人,大部分的还是属于自家需求。大家也不要以为他们上来就很牛逼。 其实大家都是程序员,一个人天天在想一个算法解决亿万人的并发,一个人天天在想100个人不同的业务需求,复杂度是完全不一样。指不定微信的程序员也是走了很多弯路,摸索出来的路子,然后面试的时候考考你,嘚瑟一下自己的高科技。那个天天在做100个人不同业务需求的人,还指不定一脸懵逼,我每天100个人并发,没啥问题啊?

最后,我感觉中国可能当下并不是最好的一个时代。 很多老板,还很热衷于“狼群战术”,加班996战术,认为一线员工最牛逼的状态。他们还没意识到去衡量、鼓励高效率的团队领导者。

这也阻碍了程序员职业发展继续往前走。

在2019年当下这个中美贸易战的背景下,国家尤其需要往高效率的企业转型。那么持有资金的老板们,还是带着老观念去管理企业,不放手80后,那么他们的命运将会是很惨的。