· 公众号内回复「IT」,送你一张脑洞图 ·
2017年8月1日,周二晚上8点30分。
前亚马逊高级研发经理,阿里巴巴资深架构师,路透金融数据中心研发经理。
19 年软件开发相关工作经验,10 年团队管理经验,MegaEase 创始人陈皓,带来了主题为《做正确的事,等着被开除》 的交流。
以下是志愿者哈比整理的问答实录,记录了作者和读者问答的精彩时刻。
Q1:您当时选择去 Amazon 的时候,是本身就预想了会获得 「更广阔的眼界和更为厉害的思维方式」还是去了之后才发现这一点大收获。请问在没有办法确认哪个选择更好的情况下,您做选择有什么考虑吗?
A1:我从路透去亚马逊的时候纠结了几个月,因为要降职降薪,但最终我还是决定去了。做这个决定主要有三个原因:
亚马逊这家卖书的公司做出了世界上第一个推荐算法和世界上第一个云平台,这让我觉得这家公司太神奇了,而且你几乎在互联网上查不到这家公司的分享,所以我非常好奇,我心时想,这应该是一家技术公司。
2000 年从工行出来的时候,我就想去互联网公司了,但是遇到了互联网泡沫。10 年后全部互联网公司全部重来,我觉得我不能再错过。
我在入职亚马逊前,问过美国老板他是不是把中国员工当外包来用?老板说并不是,他说亚马逊是因为重视中国市场才来到中国的,并不是为了外包。而且也说,我们要做的这个项目是创新项目,风险非常大,做不好就砍掉。基于这三点,我决定来亚马逊。
总结一下我做决定的依据:
这段经历是不是我想要的?比如说有技术含量的、最刺激的、最前沿的、最有挑战的,能不能为我开启更多的可能性。
另外,我也不能保证我的选择做得对,但是选错了公司也没事,因为这个世界上有好多公司可以去。做错选择么可以换的。
Q2:对于连续两次不达标而被开了的员工,是否也意味着他无法再次进入这家公司了?对曾经的员工,是否会有区别对待?
A2:是也不是。这里有一个真实的案例。
国内某大厂的员工,相当于阿里的 P6,因为绩效不好被劝退。之后在家里努力学习了一年,哪也没去,就不停地钻研技术。
后来他面试过了微软,然后在微软升了两级,四年后又被原厂挖了回去,不过他没有回原厂。
如果他回去的话,他那时候的级别已经相当于阿里的总监级别。国内某些公司对于这种有案底的员工是会区别对待的,我个人觉得这点挺不好的。
Q3:有些公司会自己设置淘汰机制,逼迫主管和员工去思考这个最末 10% 的问题,也算是一种鞭笞。请问在中小型公司的话,在什么时间选择终止掉一份劳动关系,是最优或相对较优的时机?
A3:我不太清楚,这个问题是中小型公司想终止员工的劳动关系,还是员工在中小型公司想终止自己和公司的劳动关系,到底谁是主体?
如果主体是公司的话,我个人觉得任何一家公司都有权利终止劳动关系,只要提前一个月告知就行。这是劳动法规定的,不过需要 N+1 的补偿。
如果主体是个人的话,我个人觉得无论是公司是大是小,在一家公司呆 3-4 年就差不多了,除非你对这个公司和老板有非常强的认同感。为什么是 3-4 年,因为 3-4 年的时间,基本上可以让你了解这个公司的所有事情了。我个人觉得,人生还是应该多体验一下不同的公司,因为这样你就会有比较,有比较你才知道什么是好,什么是不好。我觉得有比较,有更多的不同的经历会是一个更好的人生经历。
Q4:「良禽择木而栖,找到和自己对味的领导或公司」,这句话如何实践?很多人是面试几轮直至正式上班的时候,才对自己的领导和同事有真正意义上的了解。在面试之前都很难有一个清晰的主观印象。您有过这方面的问题吗?有什么好招?
A4:首先,你得知道自己的口味。我们每个人都要认识到自己的长处、兴趣和自己的一些特点。比如说自己是属于加班老黄牛型的,还是想把技术做好的或想把代码写漂亮的?到底是哪一种类型,自己得有个定位。如果是前者,加班老黄牛型的,可能去一些创业公司或那种需要这样努力的员工的公司,有很多公司就是需要这样的人;如果是后者,想把技术做好的,那就得要去技术型的公司,或是对技术有很高要求的公司。
除此之外,也要明白自己到底是适合做产品型的软件还是技术性的软件?是业务层的还是底层的?更适合做抒情的产品还是做商业化的产品?不同的公司有不同的 DNA。找到和自己相似 DNA 的公司和团队,才能如鱼得水。
关于面试,我觉得多多少少也是可以问出来的,这要看你怎么问问题。一般面试官都会给应聘者留一些时间去询问公司的一些情况。
比如说我喜欢问面试官,你觉得你在这家公司里最开心的事,和让你最难受的事是什么?我想听听你个人的故事。
我也会问:你们一线技术经理里面,目前还有多少人在写代码?我两年前面试某国外大公司的时候,我对所有的面试官都问这两个问题,他们给了我五花八门的答案。后来我大概知道这家公司有很大部分的一线经理或者技术主管是不写代码的。
我问他们为什么不写代码?你不写代码,你管什么?他说管人。我又问,那么你们招的人那么厉害,这些人还需要你管吗?我追问下去后才明白,他们其实有 KPI。
比如他们做一个小功能,上线三个月,如果效果不好就得砍掉,而且还有这些跨团队的协作这种各式各样的问题,所以经理门都忙这些事去了。我虽然面过了,但我觉得这家公司不太适合我。
不过,话又说回来,你很难找到一家完全没有问题,完全适合你的公司。所以,你需要更多的关注自己的得到的,而不是自己失去的(也就是说,要学会抓主要矛盾)。
Q5:请问这句话怎么理解?「如果你是一个技术公司,你就会更多的相信技术而不是管理。相信技术会用技术来解决问题;相信管理,那就只会有制度、流程和价值观来解决问题。(注意:这里我并没有隔离技术和管理,只是更为倾向于用技术解决问题)你是要建一个 “高可用的技术系统”,还是一个“高用的管理系统”?」
A5:我相信你是从《AWSS3故障回顾和思考》这篇文章中看到这句话的。这句话可以这样理解:如果你相信技术,那你就会用技术来弥补人的短板和不足,或者说是用技术来取代人。
于是你会做出各种各样自动化的工具,甚至设计出一种高可用的系统集群。但是很多公司发生故障以后,它不是不相信技术,它是不相信人。于是它会用各种各样的方式来管理人。
比如一些权限系统、审批系统、惩罚制度……。其实我们都知道,不管有没有这些东西,人还是都是会犯错的,这就是人不如技术的地方。
Q6:一般公司都有几个核心部门,而在非核心部门或者岗位工作不容易出成绩,请问找工作的时候可以选择这种部门吗?选择这种部门有什么利弊?
A6:当然是要削尖脑袋去核心部门的,因为核心部门的价值更大。分享我的两个故事,我以前也不是开始就在核心部门的。
第一个故事,我刚入行的时候在某公司做一些外围的东西,但是外围那些东西很简单,所以我就有时间去看一些书。
比如我在看《TCP/IP 详解》这本书。一次,公司的软件在网络通讯出了些问题。用户交了费以后要到调用一个第三方的系统,结果用户的钱倒是扣了,可是和第三方系统的连接有很大概率网络出问题,造成事务不一致。
于是,公司里最厉害的人到用户那边看了一星期都没找到原因,这时有个人就说,我看陈皓在看《TCP/IP 详解》的书,要不让他来试试?
老实说,我才刚刚开始看这本书,也没什么经验,被叫过去的时候很紧张,但是我就记得 TCP 的那些状态机。
然后这个问题重现的时候,我就用 netstat
一看,连接的状态是 CLOSE_WAIT
,意思是对方断连接,说明是是对方系统的问题。
然后我就去了对方系统那边帮他们看了一下代码,后来发现是他们的 if 语句写错了。这个 if 语句本来是 AND,结果他写成了 OR,然后条件满足了,下面就是断开连接。
因为 OR 的条件更宽泛。这件事我花了两个小时就解决了,公司就觉得我好厉害,后来就让我加入了核心团队。
第二个故事,我去一家中型公司做业务,用 Powerbuilder。我入职的第一天,他们告诉我这里有个内网论坛,你有些什么技术问题可以到里面问。
然后我看到里面 C++ 板块里有 20 多个未解决问题,我就用了一下午时间,把这些未解决问题全部回答掉了,而且我还给出了很多的代码。
临下班的时候来了一个人就问谁是陈皓,我说我是,他说收拾一下,搬到核心项目组,就把我调过去了。其实回答这些问题没什么,就是那个年代是 2001 年。
我就是多看文档,很多文档都在英文社区。Windows 下面就是 MSDN。我就把 MSDN 读一读,然后谷歌搜一搜,基本上就这样把那些问题解决了,其实也没什么。
说白了,我牛吗?我根本不牛,我无非就是学习了一些基础知识,基本原理,这样解决问题的时候容易找到问题原因。另外,对于不懂的东西,知道到哪里去寻找知识。仅此而已。
最后,我想说一下,其实,任何事情都是有挑战的,不要以为做业务就没有挑战,其实我反而觉得做业务,解决业务问题的一些技术点更有挑点。
比如,业务上需要分布式一致性,业务上的分库分表,业务上的模块分析和设计……
Q7:请问您对生涯规划有什么建议吗?有哪些可以学习的资料?
A7:人生的规划,首先是提高自己的竞争力。你有了竞争力以后,你的可能性和选择才会多,你有了选择以后才谈得上个人规划。
如果你没有选择,没有可能性的话,去谈个人规划其实是没有意义的。那要怎么去提高自己竞争力?我给大家一点建议:去学习基础技术。
有很多东西到了基础,基本上都是一样的。比如到了操作系统的调用,无论是 Java 虚拟机、Python 解释器还是 Node.js,最终都跑不掉操作系统的调用。
一些编程上的网络通讯技术到了 TCP/IP 的甚至更底层的网络原理也是同理。所以学好这些东西后其实一通百通。
如果你学了一些表面的技术,你就会觉得技术很多,但如果你学到了一些本质,你会觉得也就这么点东西。
关于学习资料,其实我在博客里推荐过好多书,有的可能有点过时了,但是很多都是一些比较经典的基础的书。
比如像《算法》、《计算机原理》、《Unix高级环境编程》等等,还有《TCP/IP 详解》、《C 语言编程》这样的书……
Q8:什么是领导力?领导力如何去实践?请问 OKR 如何正确使用?
A8:关于领导力,我在《技术人员的发展之路》这篇文章里说过。关于如何实现自己的领导力,接着前面那个话题说,一个是注重基础,另一个是你需要找到你自己的信息渠道。
如果你现在的信息渠道是微信朋友圈、微博、知乎或是今日头条,那你完蛋了。我倒不是说这里面没有有价值的东西,我想说这里面有价值的东西很少,99% 都是垃圾,只有 1% 的有价值。
但你为了要找到那 1% 的有价值信息,必须要看完那 99%,这其实挺浪费时间的。
另外,如果你用百度或中文搜索,或者在中文社区里能够找得到你想要的东西,那你已经远远落后这个时代了;
如果你用英文才能找得到你想要的东西,那说明你能跟得上这个时代;
如果你没办法,只能到 Github 或去那些开源社区里找里面的人去问,或是去看代码才能找到你想要的这个答案,甚至找作者去询问才能找到你的答案的话,那么你已经基本上是跟着时代的前沿了。
所以领导力首先是获取有价值信息的能力已经超过了绝大多数人,你先拥有这样的实践能力,你才能拥有后面的一些领导力,所以英文是非常非常重要的,翻墙也是非常非常重要的。
Youtube 上有很多非常有价值的视频,我不知道这个群里有多少人会去看。
Q9:对于很多并不擅长或者并不具备领导力的人,怎么达到自己的真正绩效,怎么在快速变化中自处?
A9:我觉得每个人都有自己的领导力。如果你在目前的圈子里面,你觉得你不具备领导力,你可以试试降维。
比如说我在程序员圈子里面一般,但是我要是到了一些非程序员的圈子里面,我岂不就是有领导力的。
现在的社会是多元的,也是分很多层次的,我相信每个人都能找到自己的长处,找到自己的这个长处在某个位置或某个地方是有价值的。
Q10:如何把员工的个人目标和团队目标有效结合起来?
A10:这一般是要跟你的主管去聊的。我个人认为,任何团队都会需要提高生产力或提高效率的,这是毫无疑问的。
就是说只要你去做提高生产力的事,我觉得这家公司和团队应该是不会反对的,就是无论做什么事情都是会走到这条路上来的,就是要提高人效、降低成本、产生效益。
另外,我的经历中,现实情况是,公司目标和个人目标是无法做到100%的匹配的,有60%都不错了,有时候,我感觉这就像利益交换似的,公司和员工在互相交换着双方的利益,这可能就是这个社会的本质。
所以,要有一个好的交换的心态。老古人说的好,欲先取之,必先与之。交换——这可能就是最有效的把不同利益的人给结合起来的本质。
当然,这里面有很多情况,对一些具体的东西,我们可以私下聊聊,你可以给我一些更为具体的案例。比如说你觉得无法匹配的一些案例,我可以帮你看一看,Case by Case 地看一看。
Q11:每个人都希望自己越来越好,也希望自己的绩效及薪酬越来越好,但小公司的资源有限,特别是当组织绩效一般的情况下;面对这样情况,作为部门级中层领导,怎么处理好组织利益与个人利益的关系?特别是让老板与员工间满意,且双方都亲密无间该怎么办?
A11:团队的绩效是可以量化的。团队成立了以后,这个团队必然是有它成立的目的的。成立一个团队或者说成立一个部门,它肯定是要有一定的业务或问题需要让它来解决的,这应该是没有问题的吧。
对第一个问题,我个人认为,因为小公司资源有限,困难也比较多。作为领导层或者老板应该群策群力的,不要光自己看,所有的问题应该要让大家一起来,能够让下面的人理解上面出现的一些困难,希望能得到大家的一些支持:一方面是感情上的支持,另外一方面也希望大家的利益和目标在一块。
对于小公司来说,不能是老板有老板的目标,员工有员工的目标,员工想自己发展自己,老板想把公司业务做好。
如果两方的目标不在一块,这事就难办。所以统一整个公司的目标,其实这就是 OKR 要说的事情。让大家心在一块,力往一处使,你就不需要去做协调的这些事儿。
怎么样让大家的目标都在一块?其实一家小公司里面的员工和老板就像谈恋爱一样,双方一定要有共同语言。而大公司有冗余的资源,可以让一部分员工去追逐自己想要的东西。
在小公司肯定就像夫妻一样,必须要有共同语言才能在一块,所以招聘过程或管理员工的过程中怎么找到共同语言,也非常重要。这也就是老外说的 Culture Fit。
Q12:作为小型公司的绩效考核到底是明晰量化考核还是个人绩效干系人一起开会评估比较好,请问您是怎么看待这个问题的?
A12:无论是小公司还是大公司,我经历过的绩效考核都是全员看齐的,也就是说,经理们在一起开会讨论,这样会相对公平一些。但同时也会考虑到一定的市场和业务因素的。
国内的公司可能不考虑这些东西。我在亚马逊和路透的时候都会考虑这些,它所有的部门一起拉平来看这件事情,而且会考虑到当前的经济形势、行业形势是怎样的,做出一个客观评价。
在文章里我也提到了,亚马逊是有三个维度来衡量一个员工的。除了绩效,还有领导力和潜力。所谓领导力就是他的竞争力。
可能绩效没做好,但这个小伙子有潜力也是可以的。用三个维度共同考量。
Q13:我已经工作三年,在产品设计,研发,还有运维方面都有一些积累,但是总觉得差一口气,想问问您对这样的职业状态有什么建议吗,或者说能讲讲您个人职业生涯的发展历程以供参考吗?
A13:我先尝试理解一下这个问题。差一口气?你可能觉得这些事情都能做出来的,但是觉得还差那么一点;或者说是遇到自己的一个瓶颈;也可能觉得我能做出来,但是心里面可能觉得应该还有更好更漂亮的解决方法。
对这件事情,我个人觉得你需要去开阔眼界。一方面去跟一些更有经验的人接触,去问他们是怎么做的,回来做一些调整;或者换一家更好的公司,因为有的公司是不开源的,你不进去就完全不知道它是怎么做的。
举个例子,我以前在一家公司流程相当重,还玩 CMMi 这东西,我心里觉得这些东西并不好,但我并不知道什么东西是更好的。没有见过好的东西,你就不知道什么东西是好的。
比如,有专职测试的团队,出了问题后总是互联推诿。但我真是不知道还有没有更好的方式。
后来换工作换到了 amazon 发现根本没有测试,也没有运维,开发人员干所有的事,虽然很累,但是前面的很多问题都没有了,总体上来说,效能更高。但是对招聘的要求也比较高。
总之,出现这样的问题,一方面是视野上的问题,另一方面是思维方式的问题。这个时候,说明你需要开拓视野,或是换个思路。
Q14:从行业和团队的角度,如何衡量一家创业公司是否靠谱?
A14:你可以想象创业公司就像反政府武装或者反政府团体,我们想象大清朝有好多的农民起义军、革命党、反清复明、扶清灭洋等各式各样的组织。
有一个东西,我觉得是关键。对这些组织来说,它能不能成事,关键是看它有没有纲领。
如果一个组织有纲领,那这个组织是很恐怖的。比如当年孙中山的同盟会,他们是有纲领的。清政府就说同盟会不是一般的小毛贼,因为他们是有纲领的。
以此类比创业公司。首先创业公司要有使命感。它的使命是什么?
你看豆瓣还有阿里这些公司,公司的使命从公司开始建立的时候到今天都没有变过,这个是非常重要的,我把这个就理解为这家公司的纲领。
如果这家公司是有纲领的话,那我觉得你可以去试一试。另一个是你看他里面的团队,这波人是不是相信这个纲领,还是只是为了利益在一块。利益是不长久的,梦想是长久的。
但是你可能会说跟这些有情怀的公司做事可能挣不到钱,这是混淆了两个事,挣钱是另外一件事。
但是我觉得你既然都创业了,而创业是件挺苦逼的事。所以你跟着这群有梦想的人,或是有纲领的人在一块。
即便失败了,你也不会觉得后悔。我觉得要去创业的话,你一定要找到这种感觉,就是即便失败了也不会后悔的这种感觉,我觉得你才能去。因为创业是九死一生的事。
Q15:出身前端,之前管理一个 12 人的前端团队,现跳槽到一家创业公司,请问您从个人技术和团队管理上如何带好一个 1 前端、2 PHP、2 IOS、2 安卓的研发队伍?
A15:管理其实挺简单。主要就三点:
第一点叫 Lead By Examples。好的管理者不是靠说教的,是靠身教的。用你的实例去带领别人,而不是用你的语言去带领别人。
第二点是相信他,如果你懂就一起来,如果不懂,那就相信别人,用人不疑,疑人不用也是这个道理。
第三点,你需要给团队一个目标。因为我看你有一个前端,两个 PHP,还有两个 IOS 和安卓。因为这些按技能分工如果过细的话,可能他们就不会关心其他团队了。
我个人并不觉得按技能分工是一件好事情(参看《我们来谈谈分工》)。有时候他们如果能够跨界,我觉得会是一件比较好的事情。因为跨界之后,你会有被队友支援的感觉。
如果大家在这种互相帮助,就像一个踢后卫的也能到前锋去助攻,前锋有时候也要回来防守。如果大家能够跨界一下,我觉得你的团队氛围会更好。
Q16:在外企的工作氛围跟国内大厂的有什么不一样?遇到负责的业务出现故障如何问责?
A16:在外企工作的好处。第一,不加班;第二,工作语言是英语,所以你的英语会成长得比较快;第三,外企里有非常规范的流程,而且也是比较科学的方法论。
在外企里工作,你能感觉到他们是在用方法,而不是在使蛮力。在外企工作也有不好的地方。
因为很多外企来中国就是为了用中国的廉价劳动力或者把中国人当成外包,这是一件非常不好的事情。
另外还有很多在外企里工作的中国员工,我个人觉得有点装的过度了。他们就仗着自己的英文好,然后天天 talk and talk,或者说 work and talk。
而不是 work and work, 也不是 talk the work。有点儿人浮于事,这在外企里面也挺严重的,挺不好。
不过我觉得有机会还是去外企看一看,还是那句话,你只有有了比较之后,你才知道什么是好,什么是不好。
另外,外企的大公司其实跟国内大公司也很类似。就是出现了故障或者出现了一些失误以后也是互相推诿,互相找借口,公说公有理,婆说婆有理,就比谁的这个理由充分,所以其实外企里面的办公室政治也挺多的。
对于故障来说,国外的公司更多的不是对人的问责,因为对人的问责只会让人越来越不敢干事,并且对于改善没有太多的帮助。
国外公司的问责更多的是问管理和技术方面的责任,也就是说,通过问责故障,达到更科学的做事的方式,达到更好的技术能力,而不是惩罚人。
Q17:国内互联网行业普遍产品主导,技术配合,怎么看待这个现状?对业务导向的工程师发展有什么建议?
A17:我个人觉得这个世界上有三种公司,一种是运营驱动型的,一种是产品驱动型的,还有一种是技术驱动型的。
老实说,运营驱动型的就是销售,很挣钱,喜欢营销,但没有什么安全感。产品驱动型的,主要是专注一些用户体验,会比技术容易一些。
技术驱动型其实最难,因为技术的水很深。所以我觉得国内目前这个阶段,可能是运营和产品驱动型主导的。
因为国内的教育制度包括一些基础的教育,其实都跟不上,而且国内的现状是就是野蛮生长,不是精耕细作,所以很难出现这种技术主导型的公司。
对于业务导向的工程师的发展建议,我个人觉得不妨跨界。因为技术本身是工具,我并不是说工具不好,因为人类的发展史就是通过工具,人比动物牛就是因为人会使用工具,这个民族比那个民族牛,也是因为这个民族的工具会比那个民族的工具要强大得多。
所以我们用这些工具到底可以解决什么样的问题,还是那句话,就是解放生产力。说得好听点,解放生产力,提高效率。说得难听点就是让人失业,自动化一些人做的事情。其实自动化也可以解决很多的业务问题,提高用户的体验。
跨界去了解业务,并不是让你去变成业务的专家。它山之石可以攻玉,这叫一专多能。就像那种学得好物理的人,一定是要学得好数学。
所以你多了解一些外围的东西,和业务上的一些东西,其实对你的专业技能是有很好的提高的。你会更能抓住重点,你会更能明白这些技术是用来干什么的。
所以并不会存在你说的这个跨界之后就都平庸了,不是这样的。去了解一些外围的东西,其实对你的专业是非常非常有帮助的。
多了解一下业务,没有什么不好的。我以前都是在做纯技术的东西。做了十年,我也做烦了。
因为我感觉我是在解决电脑的问题,我没有解决人类的问题。所以到后期我就转去做一些业务,包括亚马逊一些电商,还有一些仓库管理供应链,包括阿里和我现在创业,我也了解了很多很多的业务。
国内这些业务我觉得挺有意思的,因为我觉得解决人类的问题会比解决技术的问题更有趣一些。
Q18:往高薪发展,虚岁 30,一个 7 年 Phper 如何突破自我?
A18:先学 C 语言,然后再学 Java。先放弃 PHP ,虽然 PHP 是最好的语言。恕我在这边比较偏激地说一下,PHP 其实并不是最好的语言。
如果学 C 语言比较难的话,我还是建议你学一下 Java。之所以选择这两门语言,因为 C 是经典,而 Java 是目前来说,我觉得是最具工业标准的语言。
如果你能从编程语言上突破自我,我相信,你以后就再也不会有这样的问题了。
Q19:公司的绩效考核是按照做出来相关产品活动的效果(比如,带来多少用户,多少收益等),身为技术,做了很多活动相关的开发,但是效果并不好,因而每次绩效都很低,这个身为技术有什么办法吗?
A19:这个问题好像是在说——公司的绩效是做出来的产品活动的效果,但是身为技术,其实我们并没有太多的控制权,等于说是我们把自己的命运交给了别人的手里,交给了产品和运营。他们没做好,导致我们自己也跟着差。
这个对于技术有什么好办法?我觉得虽然我们做技术的需要支持这些运营或产品,但是切记,不要被他们牵着鼻子走。什么意思?
就是我肯定是要做一名有技术竞争力的技术人员,或者说我肯定要有技术的积累。
也许今天跟着这拨人没有做好,没有发挥出技术的优势,但这并不代表我就破罐子破摔了。
你要的不是绩效,要的是自己的成长。我还是要去研究我的一些好的技术上的东西。
另外,不想把自己的命运交给别人,要掌握自己的命运,那就去挑战一下产品呗。亚马逊里挑战产品和运营的方法论是 T-shirt Size Estimation。就是用 T 恤的尺寸来做评估。
你要做这个东西可以,但是产品和运营必须得拿出证据说明你要做的这个东西是什么样尺寸的。
比如说 XXL 可以带来一百万人民币或一百万用户受益的,XL 就是 50 万,L 是 25 万,这样砍下去,然后这些需求给到技术团队,这边技术团队也会做个评估。
XXL 是要六个月做完,XL 是三个月,L 是一个月,M 是两周,S 是一周。这样两边一对。
如果说业务影响力比较高,而且技术实施比较轻,这就是小而美,那就是最高优先级;如果是反过来,技术这边要花好大的力气,业务影响力又不是特别高,那就坚定不移地把它砍掉;如果两个都是中等,那就是自由行事;如果两个都是 XXL 的话,那能不能需求这边降低一个维度。
比如将 XXL 降到 XL,我这边可以降好几个档次,两三个星期就可以实现出来,这样可能会是一个比较好的方式。
当然,运营和产品可以信口开河,但我技术做出来后,达不到,我一定要用结果打打他们的脸,让他看看当年他吹过的牛逼是多么不靠谱。这样,他们以后可能会更严谨一些。
Q20: KPI考核时,对同一职位的考核环境不同,从而造成考核结果不公平,这种由于非员工原因造成考核结果不同的情况,有何看法,并对员工有何建议?
A20:我觉得 KPI 考核里都是会有些特例的,这个特例是可以 Argue 的,可以去跟公司去争取的,甚至管理层之间可以把这些特例拿出来做深度讨论。
比如说因为考核环境不同造成这种不公平,我其实并不太知道细节是什么样子,但是我所知道的是在做考核的过程当中,经理们是会开个会的。
那在开会的过程中,针对一些特别案例是可以拿出来进行争论的,我不知道你们有没有过争论,争论充不充分?而且作为这个员工的主管,是要主动去为员工争取一些权益的。
如果说是最终争论的一个结果,其实在经理会上或者说考评会上,应该是整个管理层需要形成一个给员工的答复。
我觉得这家公司的管理层应该有能力可以做出一个给员工的官方答复,而不是让主管经理自己去想这件事情。
因为开经理会也是这些主管互相学习互相成长的过程,所以一般好的公司做这种绩效考核都是大家在一起做的。我不知道你们公司是不是这样子,如果不是的话,建议这样尝试一下。
Q21:作为一名工程师,很多时候我知道“正确的做法”是该怎么样,但我同时也是一名创业者,权衡到成本和效率,就很难用一种工程师理想化的方式来管理开发和进度,长期来看是对的,但公司目前未必能按那种方式存活下去。最近被这个矛盾困扰着。如果站在老板的角度,如何来平衡好这个矛盾?
A21:这是一个好问题。因为我现在也是一名创业者,有时候我需要快,但是快就要欠债。我到底是走理想的路,还是走现实的路?我会告诉你,我是坚定不移走理想的路。
我有两个理由,第一个理由是这样的,我一定要用正确的方式去做事。因为我不确定我能不能成功,成功可能有一定的运气成分在里面,但是如果我不用正确的去做事情,如果未来失败了,那我真是什么都没有了。
但是如果我是用正确的方式去做事,即便我失败了,我的过程还是在的。所谓过程在的意思,就是如果我下次再起航的时候,我就会有积累,所以我是一定会用正确的方式去做事。
但是话又说回来,一个公司在不同的阶段有不同的重点。如果是在商业阶段,可能需要做一些妥协,欠一些债,不然公司就死亡了。这里需要创始人做一个计算,我欠的债和我挣的钱是否匹配的上。
如果匹配不上,其实,这是加速让自己的公司死亡。我们不是常听一句话,做的越多,死的越快。就是这个道理。饮鸩止渴的事最坚决不能干的。
另外,创业是件很苦的事情,所以我们都要问自己一下:做这个事情,我的目的是什么,挣钱吗?挣钱,也没有问题,但是我们要的是长期的可持续的挣钱,而不是不可持续的挣钱。
而可持续的挣钱一定是要用正确的方式做事的。因为这会让你有很多副产品。也许我的主业最终失败了,但是我的副产品反而还在卖钱,我目前就是这么一个情况。
我有那么两个副产品,其实都不是我的主业,但是这两个副产品都在卖钱,虽然目前卖得副产品还不多,就那么一两个。
再多给几个例子,一个例子是 Docker,前身是 Dotcloud,这个公司差不多快挂了,于是开源了 Docker,结果 DotCloud这个公司挂掉了,但是因为用正确的方式做了 Docker,反而成了最火的公司 Docker Inc. 。
还有一个示例是 37signals,为了做个项目管理软件,先去为 Ruby 开发了一个 MVC 框架,结果项目管理软件 Basecamp 不愠不火,而 Ruby on Rails 火得不行,每年收 Rails 的维护费都能收几百万美金。
照片分享软件 Flicr 本来是家游戏公司,为了分享游戏图片才做了一个分享图片的网站,结果火了。
Q22:每次有 Deadline 而且感觉心里没底的时候,心里难受,怎么办?
A22:其实我也有过这样的一些朋友,面对 Deadline 觉得心里没底,而且也觉得可能超出了自己的能力,或者说是时间或资源给的太少。那面对这个东西我怎么办?
我会毫不犹豫地忽略 Deadline,我会去追逐我的成长,因为我要非常严肃地对待我的成长。如果这里面有些技术问题我搞不定,我就要去学习并搞定它。
如果没有资源,时间不够,要拼命的长期的加班,我是不会干这个事的。如果我觉得要延期,那就延呗,如果质效有影响就有呗。关键是,在这个地方我可以失去绩效,但是在别的地方,我要收割绩效。
忽略 Deadline 并不是逃避,而是代表要努力。就像很多名人缀学,并不是不学习,而是要更好的学习。
你想想你个人的发展重要还是 Deadline 到了重要?反正个人发展不上去,你也难受。Deadline 达不到被经理骂,你也难受。
同样都是难受,你觉得是被经理骂难受,还是自己的成长上不去难受?这两种难受,两害相权取其轻。
Q23:我发现我这里无论测试还是开发人员,做复习模块的人并不一定熟悉业务,但晋升都比熟悉业务的人要容易,这是晋升制度有偏差还是人员问题?
A23:我讲个故事你可能就明白了。这个故事是这样的,我有个同学在给银行做项目,大概做了 20 年。
在那种企业里晋升是这样的,你不需要技术有多强,但是你需要跟银行的那些领导保持好的关系(这个关系只是会做人,说白了就是要听话,要会捧人)。
然后你需要去做项目经理,因为给银行做的都是外包团队,就是包人头的项目,所以你需要去管一下这些项目进度。
我这个同学在这家公司里做得很成功,成长得也很快。因为这家公司给出的加薪升职的条件是你要跟银行的领导相处好,而且你要对项目管得很好,所以他提拔上来的人基本上都是情商比较高的,或者说是能左右逢源的人,但是他的技术是非常糟糕的。
然后我走了另外一条路,我不知道怎么跟银行里面的那些领导说话,又不听话,但是我喜欢技术,我喜欢做出更 cool 更牛的东西。所以我在银行那种氛围里的发展是非常糟糕的,完全不能晋升。
后来,我跟我那个同学一起创业,然后他就会发现,他的项目管理能力,他的「听话」和「捧人」的能力,在创业时一点用处都没有,因为你一开始是要做产品、做技术的,然而他完全没有这样的能力。
而我是靠自己的技能去生活,而不是靠人际关系去生活的,我自己算是一个手艺人。所以我在创业过程中,一开始我可以很快把产品做出来。
大概是这样,所以回答你这个问题就是,在不同的环境里面,会有不同的升职路径和不同的文化,相应地,你会需要不同的技能。
但是我们要回头问问自己,哪种技能是对自己最有用的?我觉得不需要依赖别人的技能最有用,你可以靠这个技能养活自己,可以打造自己的一片天地,这种技能是最有用的。
Q24:「良禽择木而栖」,请问怎么样去识别真正的方向和适合自己的木?
A24:这个问题我前面已经回答过了,但是怎么去识别真正的方向还有适合自己?
这个首先还是要对自己有个评价,我觉得如果自己都无法对自己做出评价,自己都不知道自己对什么地方感兴趣,或者自己也不知道在什么地方有长处,就无法知道什么适合自己。
我觉得现在很多人并不知道什么是自己想要的,就是从众地什么都想要,但并不真正知道自己到底适合走哪条路。
我觉得,这个事,没人能帮你,就像我讲这么一大堆,我说这个东西有营养,那个东西不错,但我没办法替你吃饭。
我告诉你锻炼身体很好,要去跑步,但我没办法替你锻炼身体,所以这个主要还是靠自己。
如果你明确的知道自己要什么,你就一定会明确的知道自己不要什么。如果你明确的知道自己合适什么,你就能明确的知道自己不合适什么。
当你看清楚自己,那边你就会很容易找到适合自己的位置。
人们之所以为“错位”,或是找不到适合自己的,通常来说,很多情况下都是高估了自己,错误的混淆了自己的目标和自己当前的能力!
Q25:很多技术实质上就是工具,会用了感觉能力上并没有很大的提升。作为程序员,在个人提高上,是去研究算法还是专注于更熟练地使用工具解决业务问题?
A25:几个建议:
去探究为什么要有这个工具?这个工具解决什么样的问题?为什么不是别的?
这个工具里的核心关键技术是什么,设计原理是什么?
这个技术的短板是什么?适合什么样的场景,不适合什么样的场景?
如果这个技术或工具是开源的,就到他的社区里,看看那帮开发者们整天在讨论什么?