程序员那些事儿:转基因码农

Posted hzcya1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员那些事儿:转基因码农相关的知识,希望对你有一定的参考价值。

(一)我要当程序员

我是一个码农,但是我把我这种码农称为“转基因码农”。什么叫转基因码农?我的定义是:通过他人帮助而非本身作为成为的码农,俗称“关系户码农”。我叫程多芬,绝对的男性。我母亲是音乐教师,她特希望我成为像贝多芬那样伟大的人物,可是我亲爱的妈妈,人家贝多芬的名字是咱翻译过来的,人家真的不叫多芬而且真的不姓贝。我在学校的时候一直被误认为女性,这也就算了,还有人把我当成洗发水。

说到这,大家可能认为我是很爱吐槽的“风湿”青年(愤青),我不敢苟同。我从小到大就被家里包办了一切,以至于大学填志愿时,都被母亲大人强迫填报音乐专业。五音全得很委婉的我实在不想如此潦草地成为一个我不愿意成为的人,于是我想了一个办法,把学校下发的志愿表复印了一份,在父母大人的监督下脸带憧憬地填写了某高校音乐专业,真实上缴学校的是我用颤抖的手写下的另外一份志愿表——填报了计算机专业。接到某高校计算机系录取通知书时,父亲在母亲的“指示”下被迫暴打了我一顿,问我是否愿意复读,我答不愿意,于是母亲亲自动了手。说真的,第一顿暴打不疼,我的父亲绝对是动作派影帝。第二顿暴打还真的挺疼,不过我认为值!

我年年是一等奖学金的得主,大学毕业后,我很自信,带着满腔热血决定献身给我国IT事业,“鞠躬尽瘁,死而后已”来形容我当时的心情绝对不为过,我一定要大干一番事业,成为像比尔·盖茨那样的人物,这里请原谅我那时没有浮现出马云的面庞,因为那个时代他真的还不是太出名。我有个同学叫夏什么鼎,具体名字我已经忘了,这厮竟然被他导师“卖”到了一个小软件公司做OA——他的导师有个亲戚是做猎头的。我笑了很久,我们这些C++精英根本不屑去做玩具似的Web页面,我认为那才是码“农”干的活。

连续几周下来,我顶着大学生的光环面试了无数软件公司,都被天使般地婉拒了。我差点懵了,我有这么差吗?难道是缘分还没到?我又尝试了投简历,虽然立马有了回应,可就是没有一家是通过面试的,眼看我的同学——叫夏什么鼎的都已经通过了试用期,我依然还是剩男,我于是找了学长们进行指点,果然过来人就是不一样,一眼就看出我简历的最大问题。我在他们的指点下略微修改了我的“看起来不是很切实际”的年薪要求和岗位要求。我始终认为既然是程序员这个职业,这么热门并且还是传说中的高薪行位,薪水起点怎么地也要比其他行业高吧,何况我又是计算机专业的大学生,不要说一上来就是在微软、IBM这样的国际大公司,在国内总也得找个知名企业吧。

糟糕的情况依然继续着,很多用人单位询问我是否愿意再降低“期望”,一开始我坚定地表示那绝对不可能,到后来我只能降了又降,不过我依然认为我们科班出身的码农应该有节操,宁无业也要坚持底线。我当时在学兄学弟眼里的外号从“面霸”变成了“双层特惠套餐”,也许是我运气不好,我自裁期望薪水到接近无底线时依然没有找到工作,当然我这里再次申明少于50人的公司我是不会去面试的。贝多芬的隐性传人——我母亲得意了,她说我当时要听她的话今天就不会落到如此地步。我摔门而去,夹着手了,这回真有点疼,而且不值。

(二)关系户码农

人生的转折点往往就在那几秒钟的时光,终于有个300人以上的半国企半民营性质的软件公司看中了我。后来我才知道这个看中不是主动的,纯粹缘于我的好舅舅,他老人家实在看不下去我的惨状,一慈悲给他在部队的原下属挂了电话。经过后来舅舅的陈述,他真费老大力了。该“原来的下属”真的非常的“原来”,一直说“在出差”“等回来就办”,几次搪塞过后舅舅憋不住了,吼了大嗓门,于是此事终于被我舅舅用“暴力”解决了。而这个“原来的下属”就是我现在的公司老板——郑总。

到了公司的第一感觉就是规模大、员工多、办公室敞亮。因为公司的主要业务是为很多重要政府机关或少量企事业单位做软件定制,政府机关的软件定制工作大家都懂的,大部分属于保姆式的服务,作为程序员驻点开发、加班(有时甚至要通宵)修改功能、绝对虔诚的客户服务态度属于家常便饭,我第一次走进公司办公室看到好多面黄肌瘦的前辈们从我身边飘过,我产生了一种莫名的同情之感,我想这就是为什么程序员被称作“码农”吧。

郑总把我安排在了公司最受关注和上升最有潜力的第一开发部,并亲自指派了一个资深项目经理龙经理作为我的指导老师。公司共有五个开发部门,听郑总说只有特有潜力、公司特重视的开发人员才能调往第一开发部,一般新手或者新员工刚进公司都是安排到第四、第五开发部;并且第一开发部着重于研发,根本不需要到客户那“纠缠不清”,很少会无理由加班。反正总结一下就是擦屁股挡子弹的事情其他部门上,领功劳拿奖状的事情第一开发部上。我兴奋了,欣慰了,没想到我没有好爸爸但有个好舅舅效果是一样的。

我一开始干劲十足,由于我还是新人,向前辈们学习也是十分重要的。由于在外人看来是郑总亲自安排的我,因此我有时反反复复地向龙经理问问题他就是再忙也会立马放下手中的活儿跟我讲解。而我本身,自认为天资很出色,加上大学学习的功底真的蛮扎实,更重要的是我被安排的岗位工作正好就是我擅长的C++,因此虽然一切很突然但是也很顺利,同时我很庆幸躲过了码农成长阶段中“面黄肌瘦”这一阶段直接升级了。我打算把第一个月工资全部上交给我母亲,用数据来证明我当时的选择是很有道理的。

(三)转基因码农

不过没多久我就发现了问题。我所在的第一开发部有32.5人。先不要急,我来解释一下这个数目:有15个人左右确实是从新手变成老手升到我们部门来的(龙经理包括在内),还有5个人是经理(一正四副,我认为老板想多了),然后还有12个人(其中也包括我)是关系户,还有一个人我只见过他一次,据说是某客户单位的一个姓朱的领导兼职的(传闻该领导的技术水平在当地是神级,当然仅仅是传闻大家也别太纠结),他的岗位全称是“第一开发部经理级高级资深项目总监兼公司产品顾问、技术顾问”,怎么称呼他呢,大家原来叫他朱总顾问,后来他嫌不好听,就改叫朱总。当我见到这个矮胖子总顾问时,我随口给他起了外号叫朱三胖,私下里全部门包括经理都举双手赞同。由于朱三胖很少现身公司,就算来也是在门口露半个身体观望一下就立刻走人,因此我把他当作了半个人。

第一开发部确实承担了公司最核心、最重要的项目研发工作,凡是超过五十万的项目都必须由第一开发部立项和技术监督,甚至直接把该项目归到第一部门开发,第一版开发完成后交付其他开发部,接下来的事情就死活与我们无关了,这在公司已经是一条潜规则了。可是我在公司工作了几个月后发现了一个小小的问题,那就是每当新项目开发时总是人手严重不足。其他四个部门平均人数只有18.25个人,虽然我的部门有32.5个大将,但是真正干事情的只有那原汁原味的15个人,而且年底还有两个项目姐姐要生宝宝了,即将变成13个人。大家也许会问干吗不招人,我只想说请返回上文自行体会。

我罗列了一下人手紧的原因:

部门经理包括副经理首先不可能干具体的事情。你见过有将军在前线打仗的吗?那是私企或100人以下的民企才会发生的事。说到我部门的副经理,其中有2个是负责项目架构的,1个是负责项目测试的,另外1个是负责与公司重要客户客户觥筹交错的。正职部门经理最辛苦,全面负责项目架构技术、督导项目测试、用户身心安抚觥筹交错,还要负责和我们这些关系户打交道,最重要的是平衡关系户和非关系户之间的关系,安慰他们心灵上的“创伤”。

关系户中的12个人,除了5个人是做测试的,只有我和另外一个小伙子是肯做事情的。另外5个人我实在不想描述,反正比经理还要大牌和脆弱。你见过男性程序员被项目经理稍微数落两句就蹲在桌子下面抽泣吗?反正我见识过了,害的我的导师也就是龙经理第二天就被郑总喊去办公室“教育”了很久,从此以后龙经理分配项目只敢问该“哭泣的码农”诸如此类的话:对于这次任务分配你怎么看啊?工作量是否过于大了?需要我们再分担点吗?每当此时我就想吐。

其他原因造成。引起人手突然骤减的原因实在太多了,“不可抗力的原因”如化身墙脚被其他其他公司挖了,生宝宝等国家强硬规定的原因,突然觉得前景一片黑暗不想干了等等。

反正我是觉得外表看来一片美好而且上升空间巨大的第一开发部其实并不是这样的。而我是迫切要成长,要融入大家队伍的。我很希望若干时间后,我变成那15个人中的一员,“关系户”在我们码农心里就是贬义词。

于是我拼了老命努力,主动问导师龙经理要任务做,做完后不断地进行测试,确保交付的模块是没有问题的。这期间我完成了部门一个大家值得称道的数据算法处理工作,这个工作的需求是这样的:用户在我们软件的后台会提交很多长文本信息,有时客户会对这些长文本信息进行修改,如果第二天客户突然想起前一天修改的内容貌似有些地方不对,却找不到昨天都修改了哪些地方。用术语来讲就是要实现历史文本比对,在Web页面上高亮修改过的内容。其实这个还不是最难的,最难的是要实现客户打开历次修改的文本后,系统自动展示修改得最为相似的两个文本。客户的要求其实是变态的,但是我们不能用变态的心理去看待客户,更不能用变态的心理去写程序,我说的对吗?

部门开会很久后,还是我提出了解决方案,首先逐字匹配是不合理的,太慢也太耗服务器性能。于是只能进行预处理,在客户提交修改文本后以此作为样本进行往期历史文本的相似指数计算,而这里我使用的是莱文史斯坦距离算法[1]。所谓的莱文斯坦距离就是一个矩阵算法,计算不同文档中需要通过几次变换才能完全一样。据说Lucene 4.x以上也是使用了这个算法进行关键字搜索,我很欣慰,也小小地吹嘘了一下。其实要我说,第一开发部高手还是很多的,但是大部分人都陷入了客户业务的复杂逻辑处理工作,忽略了算法的自身修养,因此当我拿出大学就能学到的这些知识后,立刻得到了部门很多同仁的显性赞许和以目光为主要媒介的认同表情。

我为此毫不掩饰地兴奋了一个晚上。我觉得未来的工作必将更加美好。也正因为这样一件不起眼的小事,导师龙经理一段时间后向大家宣宣称:“程多芬是合格的第一开发部程序员。”我当时把这句话用手机录音了,真的。并且我认为我已经摆脱了关系户的名号。

(四)合格的码农

不过我最近想辞职,实在太憋屈了。想辞职的理由在业务上真不算很复杂——公司中标了一个大型项目——一个CRM系统。龙经理是本次项目开发的项目经理,跨部门联合开发,很自然地龙经理指定我做该项目数据处理组的组长,并在全部门项目会议上通报了。大家可别小看这个组长的头衔,能管两个小兵呢,虽然都是第四和第五开发部的新手愣头兵,不过这足可以让你在今后的简历上写上“有项目管理经验”这条,我很满足,也很感谢龙经理。

当天下午,我有模有样地并且是迫不及待地召集了两个愣头兵开小组会议,两个愣头兵不谙世事,对第一开发部选拔出来的组长自然是恭敬有加,其中一个愣头兵拿着笔记本足足记了三页纸,我自己准备的会议稿子才一页,孺子可教啊!大家知道做所谓的领导最惬意最舒服的是什么时候吗?那就是开会的时候,当然你必须是作为会议的主角才行。

没想我惬意了还没多久,一天上午龙经理突然很沮丧地来找我,说很不好意思很不凑巧很对不起很意外很遗憾很难过,一连串的道歉让我吓了一跳,我赶紧倒了杯水给龙经理,说龙老师你不着急慢点说,是不是我的自行车被偷了啊?(龙经理经常借我自行车出去买肉包吃)

龙经理否认后说数据处理组的组长临时被上头换成了小刘。小刘何许人也,第一开发部最早降临的一批关系户,论技术,进公司一年了一个独立完成的成品模块都没做过;论管理经验,那是真的没有。不过小刘据说是朱三胖的亲戚,这是他的最大王牌。朱三胖的光辉事迹上文已经诠释过,他是公司的重要大客户,就因为他的“重要”,没人敢得罪他,包括大哥大——郑总。这次的项目他想把小刘提拔上来,为日后的升迁做好铺垫工作,更过分的是我从已经确定的组长变成了组员,也就是说昨天看到我还喊我程组长的小刘即将成为组长带领我和那两个愣头兵开会了。太过分了,当时我表示我真的火了。龙经理一再表示他已经在部门领导那尽力了。好吧,我懂的,龙经理其实也不敢得罪朱三胖。

话说码农年轻的时候火气都是很旺的,我当时做了一个很冲动的决定,那就是辞职,并且是立刻马上辞职。当天下午我突然把辞职报告交给龙经理时,毫无准备的他一口茶喷到了我脸上。我靠,脸上估是至少有八年陈的黑普洱。毕竟我也是所谓的关系户,此事立马引起不小的关注。公司立马传开了各种我辞职原因的小道消息,我收集了以下几个版本:

我和小刘因为组长职位之争在会议室大打出手,我因为没有“获得胜利”所以悲愤辞职。(这条消息大家认可的很多,我无语)

我的“后台有力人士”和小刘的“后台有力人士”扳手腕了,我是牺牲品。

龙经理喜欢小刘,对我一直不满意,因为我比小刘水平差很多。(这绝对是支持小刘的粉丝放出来的消息)

我辞职报告早就打了,已经和下家联系好了。所以突然换成了小刘做组长。(当我听到这条时,差点昏厥了过去)

两个都是关系户,爱走不走懒得理。

上述小道消息让我更加痛恨“关系户”这个头衔。可是更囧的还在后头。

晚上我舅舅突然给我打了电话:“小多啊(总不能叫我小芬吧),听说你要辞职,可要考虑好啊,毕竟是我介绍你进去的,为一件小事辞职可让我脸上无光啊。”我舅舅的消息灵通程度差点让我怀疑是否下午把辞职报告发错了人,直接发给了我舅舅。我只能敷衍我舅舅说再思考一下。

第二天去上班,这是最繁忙的一天,首先是龙经理找了我,问我是否再考虑一下,他说我是有潜力的人才,并偷偷告诉我:“这么突然一辞职,朱三胖很没面子哦。”

其次是部门副经理张经理找到我,先是夸奖了我一通,表示非常认可我的技术能力和工作业绩,然后从能屈能伸、男子汉拿得起放得下这个角度给我讲了一通大道理,并提到了存瑞炸碉堡的英勇事迹。我当时就蒙圈了,这哪跟哪啊?从张经理那出来没多久,又被部门里的大哥大——正职部门经理王经理喊去了办公室,这回更加语重心长,谈话期间甚至给我泡了杯浓茶,我一看——普洱茶,顿时胃里翻江倒海。我的沉默和不表态,其实给了他们最好的回复。

最后,本事件的中心人物朱三胖给我来了电话,不过这回唱的是“白脸”。意思是我要辞职他尊重我的想法,不过他很“侧面”地告诉我根据公司第N条条列和第M条规定,合同期内辞职的员工一年内不得从事相关行业的工作。吓得我赶紧翻查合同和员工手册,我的妈呀,合同后面还真贴了一张保密协议,当时看都没看就签了,我真被吓到了。我想去找郑总,结果他漂亮且非常有气质的秘书告诉我郑总又出差了,半个月后才能回来。看来,此事郑总已经置身事外了。

此时的我只能用六神无主来形容。其实解决这个矛盾也非常简单,一是我继续委屈就全干着,做组员就组员,干出成绩一样能吸引眼球;另外一个出路是我只能强硬离开,并且一年之内只能跟着母亲大人去完成“贝多芬未完成的心愿”。

我有时躺在床上就在想,我应该怎么办。然而这个答案没有人可以告诉我,因为这一切必须要靠自己来做选择,别人帮你选了迟早你要还给别人,就像当初如果我切实际踏踏实实地找个小公司从基本岗位干起,也许就不会碰到这些囧事,也不会顶着“关系户”这个头衔始终摆脱不了,你想啊你反正是关系户,那么更有后台的领导安排你干这干那,你顺着依着是理所当然的,所以大家不要羡慕关系户,关系户也有关系户的烦恼。

大家看到这估计很想知道后来的结果如何,其实结果不重要,因为我真的想通了:“我要摆脱关系户的头衔,我要堂堂正正地做一个码农。”我撤消了我的辞职报告,低调地完成了数据处理组所属模块的开发。次月,我向公司申请调离了第一开发部,进入了第五开发部,老老实实地从最最基本的开发岗位开始,在第五开发部我经历了客户驻点单位开发、通宵加班,甚至有那么几个月极度的“面黄肌瘦”,不过我发现码农真的需要这些从基础到高级的经历,否则那将是不完整的码农生涯,而且也只有这样我们的码农人生才能健康成长。

次年,我以公认优秀的项目业绩重新调入第一开发部,这回是朱三胖亲自点的名。

[1] 莱文斯坦距离(LD)用于衡量两个字符串之间的相似度。莱文斯坦距离越大,字符串的相似程度越低。——作者注

以上是关于程序员那些事儿:转基因码农的主要内容,如果未能解决你的问题,请参考以下文章

Scala/Golang/Java/Spring boot那些事儿 | 高可用架构日报第3期

无线接收信号强度(RSSI)那些事儿

程序员分享那些事儿

Android Handler那些事儿,消息屏障?IdelHandler?ANR?

setTimeout那些事儿

C的那些事儿