前一段时间,到上海一家创业公司历练,以下是感言。
当我来到这个团队,我是报很大期望的。我这样讲:公司两位老板都对我很客气。我是报着学习的目的来这里的。看看现在的年轻人,现在的创业公司,都是什么样子的。与年轻人呆在一起,也能保证我自己不落后。
我这样讲:不要把我只是当作一个python程序员。我希望,在各种事务的决策上,能让我旁听并发表个人意见。你们也表示,希望我能把整个技术团队带起来。
初期,我跟郭辉学 Django。这个东西内容很多,实话说我原来没怎么接触过,我也是乐于学习它的。我发现郭懂得真多,各种mac工具,Django中的几十个库,数据库等。在我参加过的唯一一次会议上,我赞他是『全栈程序员』
后来做了网页抓取,用到一个python库scrapy。这是个好东西。我也是很乐意学习,很快学会了它。并且成功地用它抓到了我们需要的东西。
到这个时候,还是一切都好,没什么问题。虽然我期望的『决策建议』一次也没出现过。
第一点,
如果要我自己评价自己,我最与众不同的地方,是看问题透彻。当然,不懂的东西我不会乱说。但只要我发表建议,那一定是有自己独到见解的。看看我的微信朋友圈就知道了。在发表自己见解的同时,我也可以有满足感,存在感。可惜这样的机会一次也没有出现过。
我认为,在公司的各项事务上,无论是团队建设还是产品决策,你们的商量过程没有让我旁听,没有听到我的建议,是最大的损失。很多大公司的倒闭,往往就是一个决策失误。你们可以不采纳我的建议,我的意见也不一定对,但你们甚至根本没有听到这个意见。
第二点,
后来终于出现了第一个问题:就是 Django的升级问题。我发现,Django的最新版已经是 1.9.x 而我们还是用的很老的版本 1.7.7. 我提议升级,被你否决了。你说,为什么呢?
我给你的解释是这样的:从1.7到1.9,很多概念都变了。如果程序员发现一个问题,网上搜到一个解决方案,结果却发现只适用于新版,这是不好的。我们不能逼着程序员去学习过时的技术。当然还有其它安全,兼容等,总之必须升级。
但还是没说服你。我只好退而求其次:这样,我先不升级版本,还是1.7.7,但代码尽量改用1.9也支持的写法。这样将来升级1.9的时候,就可以只做很少的改动。按你们的要求,我的改动提交到一个新的分支。后来还曾经部署到测试服务器。但到目前为止,我的改动没有一行反映到master分支。我给你讲过几次,你没有回复,我也就灰心了。
这么说吧,我的第一个commit,是删除代码中的一行:
{% load url from future %}
这一行代码在Django1.7中可有可无,在1.9中会出错。所以它是可以删除的。但从我提出这一点到现在,几个月过去了,这一行代码仍然没有删掉。
你高薪请过来一个专家,却不允许他修改任何一行代码。我的激情开始减退了。
第三点,
偶然地,我发现金桥(ios程序员)不知道’\n’是换行。发现Liqian(python程序员)不知道enumerate函数。我建议经常出一些测试题,让全公司程序员做一下。你说,为什么呢?
我发现承青(非程序员)不会基本的创建目录操作。我发了一个微信朋友圈并私信你:建议公司所有非战斗人员做一个测试:创建一个目录,qq接收一个文件并保存到那个目录,然后在那个目录运行指定命令。
你的反应是:你很生气!
我忘了你也不是程序员。但这是我给你的私信,你明白我的意思就可以了。你可以同意,也可以不同意。但你却生气了,这就不应该了。
我的观点:我们不能只在招聘时用测试题。测试应该是经常性的。每个人都应该不断学习,不断提高。测评题没做好,是发现了不足,努力学习补过来就行了。作为老板,应该了解每个员工的水平,应该乐于看到每个员工都在不断进步。
你给我的回答是:我不是程序员,我还『就(四声重读)不会创建目录』了,怎么的?
是的,事情就是这样。我微信私信给老板发了个建议。然后老板对我咆哮:『不是程序员就是非战斗人员了?我还就不是程序员了,我还就!不会创建目录了。怎么的?』全公司的人都瞪大了眼睛。
从此,我在公司里多了一个外号:非战斗人员。
我无话可说。我希望的结局应该是这样的:全公司培训,即使是非程序员也应该学会基本的目录文件操作。然后把这一项加到公司的招聘题里。提高全公司人员基本素质。
第四点,
我本来希望公司的事都能让我旁听,有人耐心听我建议,那怕是不采纳。但后来,我发现,即使是技术上的事,也没人给我讲。
有一次,你们在讨论时,因为声音大,被我听到了:liqian在爬amazon的数据,但屡屡被封,你在不断地为他买更多的服务器。
这不是我的事,但激情还在,我还是希望这公司好的。我就写了一个策略。我相信按照这个策略,是可以解决这个问题的,是不需要买更多服务器的。而且我还问过liqian,确实发现我想到的一些内容,他没有做到。他采用的celery架构,有些内容根本做不到。我把策略发给你和liqian。
我本来想你会让我负责把这个问题解决。没想到你的反应是,你很生气,是的,你居然很生气。你说我是『闭门造车』
我没有争论。当对方很生气的时候,争论已经不是对错,不是是非,而是面子。我不想让你没面子。
我知道,你不想让我操闲心,我也就不乱操心了。只是做好你交给我的那一点点事情。
老程序员的优势在于他懂得多,懂得广,能在大方向上不犯错误。如果让我做具体事情,我并不比年轻人有优势。这就好比是老虎拉车不如牛。
我经历的事情多了,这点儿事情还不足以打击我。于是我乐于看到,放着我这么一个技术大牛在这里,却没人过问。什么事情也不让我做,因为老板很生气。
第五点,
你说要做一个分布式爬虫。然后我与liqian就各自写了一个。最后你选择了他的,没有用我的。你很不满意。
其实你应该让我牵头,让liqian听我的,这件事情就可以完美解决了。我会与年轻人讨论,分析,应该用什么方案,应该怎么做。
你说本来希望我能把技术团队带起来,很失望我没有做到。
但这几个月,你从来没有让任何一个程序员听我的安排。不管是短期的,还是长期的。我的经验,全无用武之地。我不能指导他们干什么,也不能指导他们该怎么干,也不能批评他们的代码写得不好。因为没有你的授权。
本来应该听取我的建议,研究如何架构一个优秀的分布式爬虫。结果你用了liqian的方案。没有人质疑他这个方案是不是有问题,是不是可以改善。我用一个小时,写出一个函数,就解决了一个新网站的爬取。然后我要用一星期的时间,把这个函数改成他的那个要求。最后,他悄悄告诉你,我不肯按照他的方案来,你更不满意了。
第六点,
绝大多数公司员工,都是踏实做事的。在当前环境下,尽可能做好自己的事。比如坐我边上的huangxin,那真是从早干到晚,从来不会花一分钟刷微博换换脑子,真是让我佩服。但我也看到一些奇葩的员工,喜欢玩『规则』。
郭辉坚决反对Django升级。不知道是出于什么目的。也许是他看到你不支持,就坚定地与你站到一起吧。我本来与郭关系很好地,经常一起去吃饭。但当我一次一次提交代码,努力了几个月那删除一行的代码都没有提交成功以后,我就不爱理他了。
Liqian和承青很好玩。我给他们谈,这样行不行?行!这样好不好?好!有问题没有?没有。然后他们各种告状,悄悄地,给你讲我这也不对那也不对。
好吧,他们赢了。我走了。希望他们只是针对我,不会把这一套用到其他员工身上。
有些事情真的很奇怪。我从不怀疑自己的能力。没有搞不定的技术问题。可是有时候,有些环境,它不讲这个。它讲『规则』。呵呵
最后
写到这里,我忽然明白了!以上写的仅仅只是现象。那么在这个现象背后,是为什么呢?
老板少年得志。做决定都是灵机一动。根本就不存在我相像中的讨论。所以决策建议根本就不存在。
公司的管理是30对一。我来了以后变成31对一。所有员工都直接面向老板。由老板直接布置工作,直接向老板汇报工作。这个公司还没有准备好转化为树状管理或分级管理。
这时候,我只能做好老板分配给我的工作。任何其它建议都会被理解为是对老板能力的怀疑,或权威的挑战,老板当然要生气。要严厉打击。
所以,我不可能指导别的程序员,也不可能领导什么团队。大家都忙着呢,你是谁呀,你没事做吗
三人成虎。当三个人说我坏话时,我就出局了。
透过现象看到本质。我就是这么棒!
很高兴有这么一段人生经历。
下一次历练,去哪里呢