You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
11 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 07 | 对程序员来说,自由价更高
**极客时间:**饿了么的技术文化是什么?
**张雪峰:**用一个词来总结就是自由。自由到就是同学不爽,我可以让他换岗之类。但后面我很难做到了,因为没有那么多岗位可以让你随便调,要么就是让另一个岗位挪,要么就是我造出岗位,但这其实是一个很大的风险,因人设岗是可以的,要看什么人,你也不能经常用这种招数,绝大部分情况下,你还是要守正。
刚开始我可以让同学们吐槽,因为你迁就了这个同学,让他做了自己感兴趣的,有可能他到一个新团队,别人可能跟他配合不好,所以这个也需要平衡。刚开始我基本上尽可能满足同学们的诉求。
对程序员来说,自由真的是价更高,你要给他一定自由度。
**极客时间:**除了“技术自由度”,还有别的关键词吗?
**张雪峰:**饿了么以前其实是有六个字来代表企业精神的叫极致、激情、创新。因为我们本身推崇的就是极客文化刚开始完全按这个来的因为我们CEO Mark他特别Geek他特别推崇扎克伯格特别推崇键盘改变世界这种理念所以我们都受他的影响。
技术团队我们当时也总结过一些词,我印象最深的就是开放、自由,我认为开放、自由,这就是我给程序员最大的两个词。
**极客时间:**前面我们聊收购百度外卖的时候有说过工程师的技术素养问题,工程师的基础能力是基本的,除此之外,大家肯定也要有一些其他的软技能,你觉得比较重要的软技能都有哪些?比如沟通能力算不算?
**张雪峰:**沟通这个词比较泛举个例子比如说最简单的Presentation的能力不管你晋升述职还是跟老板汇报PPT是绕不过去的虽然很多人讨厌这种方式但你绕不过去因为你要让别人知道你的想法不可能上来都是Demo、代码这不行的。一是写PPT二是把它讲出来。
大部分的工程师都是受Linus Torvalds林纳斯·托瓦兹Linux之父的影响在不想沟通或者自己不擅长沟通、表达、分享的时候就扔出来那句话“Talk is cheap,Show me the code”。其实这句话有他的语境你看Linus的表达能力是很好的。所以我和团队说“Talk is important”。
加入阿里后我也参加过几场晋升述职去担任评委人家PPT几乎没有写得烂的水准都很高但是讲得有差异。演讲的技巧非常重要而且其实这项能力在外企是特别重要因为在外企还要用不同的语言跟别人去沟通。
另外写Email也是个技能我有时候写Email都要反复措辞的要发给谁抄送给谁还有密抄给谁这种都需要小心的这方面我统称为Presentation。你说的人与人沟通那属于情商Presentation Skill是你要让对方明白同时你要看懂对方要表达的意思。
但也有些人走火入魔比如PPT一搞就搞100页那个也不行还是需要抽象能力。一般来说程序员抽象能力都还可以的。
我再讲个小故事饿了么曾经有一个小伙子那哥们特别神奇我很看好他他晋升述职不用PPT一上来就说我本来准备了一个PPT后来想想没必要我就跟大家讲一讲然后就开始脱稿讲。
当时上海的评委只有一票投反对因为他确实讲得不错不需要PPT他能讲清楚。但这次晋升答辩北京团队清一色全部投否决票因为这是百度体系不能容忍的方式你这是对评委的不尊重。最后结果是我求情让他过了这个其实不太好但因为我对他有些偏爱。我只是举个例子说做演讲这个事情。
**极客时间:**对一个人偏爱,会不会让其他人觉得不公平呢?你怎么看这事呢?
**张雪峰:**肯定会有不公平议论,说实话,饿了么让我偏爱的同学比较多,有我一直在孜孜不倦准备的 CTO backup接班人还有就是让很多同学有“苦”说不出的我最偏爱团队 CICore Infrastructure
没办法,人都有自己偏好,纯上帝视角、无利益相关几乎没人能做到,更不要说持续做到,对我来说,尽量在偏好和公平之间取得一定平衡。比如:我虽然偏爱 CI 团队,但出了故障或 CI 被吐槽、投诉,我一般也是先追杀 CI兰建刚/徐盎/刘焱等同学苦张雪峰久矣),被我挑战最严厉的一般也是 CI 团队,即使主责或 Root cause 不在 CI 团队。
又比如:我虽然偏爱石佳宁(中台技术团队负责人,二代 CTO 首选)、黄晓路(全局架构组负责人)、许红涛(商户开放平台技术负责人,三代 CTO 首选)等同学,但佳宁、晓路他们也是我在部门例会或各种群里 Challenge 最多的几位同学。
**极客时间:**你觉得技术团队的价值体现在哪里?
**张雪峰:**我后来到阿里行癫阿里云总裁、前阿里巴巴集团CTO跟我们开会说过几次他说技术团队的价值是什么我们脱口而出驱动业务他说不可能我今天明确跟你们说不可能。
在他看来技术只有两个核心价值。第一就是对于验证成功或接近成熟的业务你要帮它做Scale快速做规模化不要线性。比如从1-10用了10天那你从10-100应该只用两天或一天。
线性就是用工程师堆业务逻辑嘛业务逻辑就是需要人的虽然很多人说讨厌CRUD但也没办法业务逻辑人工智能是搞不定的。反而中间件是很容易做规模化非线性的东西是难度高但一本万利。中间件一开始投入很大比如投入100多人这些人都很贵公司可能说凭什么要投资他们又看不出交付了多少业务需求。但这样考虑是不对的一旦上线价值非常大。
第二就是技术团队要帮业务团队快速试错。这个我是在饿了么深有体会的Mark就总是说你要上线了我才知道公司这个业务行不行能不能活下来哪有时间让你搞什么架构。饿了么2009年第一版快速上线绝对归功于 No Architecture汪渊Raymond居功至伟。我曾和他聊过这事如果当初饿了么找我做第一版我绝对迅速搞垮公司最简产品、唯快不破 vs. 完美架构、技术洁癖之间很难调和。饿了么那时候最重要的是速度,你也不要管什么战略不战略的,你就给我最快速度上线、试错。
饿了么创业就是靠试错试出来的,快速创新完全是基于快速试错的,现在对这个理念我是绝对的拥趸。那种瞬间虎躯一震、如有神助、不用试错就一炮打响的成功业务,用凤毛麟角来描述都算夸张了。
**极客时间:**“技术驱动业务”这句话在技术圈太常说了,很多人也是这么认知的,你现在对这个观点的看法呢?
**张雪峰:**就像我刚才说的行癫的视野是非常开阔的我很佩服他他说你今后不要再跟我说妄图去驱动业务只有一种情况像Google这样靠技术驱动纯线上业务的才有资格去说驱动业务今后如果无人车实现商业规模化或许也算一种。阿里又不是纯线上的我们还有很多销售人员要去谈合作的技术主要还是推进业务实现。
所以现在一看到技术驱动业务的文章,我确实也不怎么会去看,除非你做的就是技术产品,比如数据库之类的基础软件产品。所以他总结的这两条技术团队的核心价值还是很淳朴的。
**极客时间:**前面聊了很多,能感觉到你很在意同学们的职业成长,希望给大家自由度,或者说希望大家都能好好思考自己的职业生涯。
**张雪峰:**肯定,我希望大家尽可能喜欢自己做的事,在这个层面,我也有挺多反思。比如说,其实我们前端团队经历过动荡的。
有一段时间我们所有的前端都是归Sofish原饿了么前端负责人一个人管的C端、B端、物流都要做但是后来出了问题。有人就说这些做前端的家伙整天去搞开源其实有失偏颇搞最新的那些东西搞他们自己喜欢的那些东西。但对业务来说我们希望进度再快一点也希望他们能和我们一起加班哪怕你在那磨洋工呢人就是这个心理不患寡而患不均。
因为我跟你一个团队都是搞技术的你说产品经理不加班还可以理解咱们都搞技术你不加班是不是你工作量不饱和Leader会去质疑你的成员平级Peer也会质疑的。
但Sofish他不管这些后来我说你面儿上也得过得去让同学们在那边加加班。其实联调几乎都是后端的锅前端他们做的质量确实非常好。Sofish就说我干嘛要让他们非要待到8点以后后来他这个团队是被我摁着加班的。
后来摁不住了我就跟他说算了你把你做物流的前端切出去切到了物流的研发团队就汇报给那边。我们早期其实除了C端都是这样的就是每一个产品的研发包括前端和后端都是在一个团队。后来是因为Sofish做得真的很棒所以我希望他把所有前端都管起来。这个事儿可能我当时也有点认知偏差其实这里面是有矛盾的。
比如对前端来说,你汇报给业务的研发团队,这样做业务交付,效率是最高的。但是对于个人成长,对自身的技术追求来说,其实是比较糟糕的,因为你没有同道中人啊,你跟后端没法交流。
如果前端大家都坐在一起,就会很有共同语言。平时还能搞一些技术分享会,那如果你去了业务团队,你位子要搬,就可能缺少这样的条件。当然这不是绝对,只是我的看法,有些团队前端跟后端在一起也非常好,他们内部也会搞一些小技术创新什么的。
但有些团队他们就感觉很失落,尤其物流团队的前端切出去之后,他们业务的交付速度是快了,但同学的职业生涯可能会有遗憾。就是我认为技术的职业生涯和你做交付的效率其实是有天然的冲突的。你很难做到让他技术有很大收获,又让他交付速度很快,因为交付速度很快证明你很难有时间学习,更何况大家不坐在一起。所以在这件事上我们走了一些弯路。
另外Sofish他其实是比较纯粹的技术人他的主要精力还是放在对前端技术的不断追求上面比如说性能、框架、工具。因为前端有很多的东西需要做比如他们用的框架、工具很多是他们自己做的。反过来他们对业务的关注可能就有点不够。
有时候我感觉,“拔苗”是可以拔的,但有些“拔苗”其实非常违背同学们本意。虽然没出什么大事,但下面大家的冲突并不少、吐槽更多,后来我就做了调整。所以,组织架构调整很难的,像阿里这么成熟的组织体系还经常调组织架构呢。