“好了,入职手续办完了。正式欢迎你加入!”

人事大姐从工位上站起来,和我握了握手。然后她接过另一位同事递过来的材料,抱歉地向我笑了笑说:“不好意思啊,你再稍等会儿。等我办完他的事儿,就带你去见你师傅杨工。”

那位同事听到这话,好奇地打量了我两眼:“哟,杨工的新徒弟啊?杨工可是我们信息部数一数二的技术大拿。你呀,好好学,绝对受益无穷。他上一个徒弟跳槽的时候,薪资翻了一番多呢……”

“哎哎哎,”大姐抬起头来,白了他一眼。“人才刚来你就劝他走,成心拆我台是吧?”

“哪有哪有,重点是好好学,好好学嘛!“见大姐又没答话,他向我凑过来一点,压低声音说:“不过杨工那脾气……啧啧……”

“停停停,越说越没谱了啊!你这还差张总签字,找张总签完字再回来找我。”人事大姐把一摞材料甩进他怀里,对我点点头,示意我跟她走。

“杨工的技术水平,那真是没人不服。他脾气臭什么的,那都老黄历了。再说,杨工就算发点脾气,那也都是技术上的争论,对事不对人的。你不用操心这个,专心学技术就好。”

在大姐的絮絮叨叨中,我们来到两块电脑屏幕前。

“我们到了。杨工,打扰一下。这是新入职的小李,以后就交给你来带了。小李,这就是你师傅,杨工。”

电脑屏幕后面,抬起一个半花的寸头,转过来一张发腮的脸,站起来一副敦厚的肩膀,挺出来一块肥大的肚腩,伸过来一只白嫩的手。

“你好。”

“你好。”


作为新人,我每天的工作就是看文档、看代码。除此之外,还要完成师傅的额外要求:看文档时,我要修复文档和现有代码不符的地方;看代码时,我要为代码增加业务注释。此外,每周二、周四他都会给我开小灶,全面地讲解系统相关的业务和技术。

从文档和代码里,可以清楚地看出团队成员的风格,尤其是我师傅的风格。例如,他的文档里不仅会写明“为什么这样做”,还会补充说明“为什么不那样做”——这意味着他要多写好几倍的对比分析文字。只要看到“这里还有另一种方案,两种方案的比较如下……”,就知道出自他的手笔。至于他的代码么,到处都是各种技术的高级特性、高级用法。用另一位前辈的话说,“看懂他的代码是需要门槛的”。显然,那时的我远远没跨过那道门槛。

随着“杨工又在给新人开小灶”的消息不胫而走,我的小灶逐渐变成项目团队的大锅饭。大家纷纷来听我师傅的技术分享,有时连其他团队也来旁听。小灶——哦不,现在叫分享——分享的内容也从我们团队的业务和技术扩展到各种常用中间件、架构模式、系统规划乃至大模型等等。在分享中,不断有提问、探讨、甚至争论。而无论面对什么局面——即使要耽误下班——我师傅都会淡定地、耐心地、认真细致地参与其中,从来没有因为被打断、被质疑而露出不耐烦的神情,直到聊清楚最后一个问题。当然,通常都是我一直追问到最后。

毕竟,有这样的师傅,我可不能一直看文档、看代码。

“杨工又在给新人开小灶”


很幸运,有这样的师傅,我没过多久就不用看文档、看代码了。

那天,师傅照例带我参加需求沟通会。产品经理讲完需求后,漫不经心地问道:“大家还有什么问题没有?没有咱们就……”

话没说完,坐在他旁边的业务同事立即接口道:“咱们能先给个排期么?李总很重视这个项目,要求我回去后立即汇报。”

产品经理露出一副临下班被领导叫去开会的神情,啪的一声合上笔记本,转头问我师傅:“杨工,你看……”

我师傅早已合上笔记本,拉出椅子正准备起身。听到产品的提问,他深深地吸了一口气,声音就像刚出锅的汤圆一样软糯:“按流程,做完设计才有排期。”

业务同事并不买账,身体向我师傅前倾过来,追问道:“李总期望xx日开始展业,咱们就按这个时间倒排,没问题吧?”

产品经理向椅背上一靠,冲我师傅挑了挑眉毛。我把头转向另一边,假装咳嗽两声,偷偷地翻了个白眼。

用我师傅的话说,确定需求只能知道“我想去桂林”。至于出行方式是乘飞机、坐高铁还是自驾?如果自驾,是老司机带队还是新司机上路?路上全是已建成的道路,还是需要重新架桥挖洞?只有在行程规划中——也就是设计阶段中——解决这些问题,才能知道要花多少时间。所以,“做完设计才有排期”不仅仅是流程规定,也是项目管理的规律。而且,无论流程规定还是管理规律,信息部每一个人都不厌其烦地向产品、业务传达过许多次。可是……

“我们会尽量满足你们对工期的要求。但是工作量要等设计评审完才能知道。何况,最终排期还要结合各团队资源来定。”

“那就是说xx日可以开始展业,对吧?”

“我可没说。我的排期要等设计评审完才能定。”

“那这个期限咱们是可以满足的对吧?”

“要不你就跟李总说,按公司流程规定,做完设计评审才能给排期。”师傅轻轻地啧了一声,仿佛被汤圆里的热馅烫到舌头一样:“我会尽快完成设计给你排期。小李,走了。”说完,他就拿起笔记本,向门口走去。

“按流程,做完设计才有排期。”

我赶紧收拾东西。走到会议室门口时,我仿佛听到“又不是他背指标……”“杨工已经很客气了……”回头看时,产品和业务却都闭着嘴,大眼瞪小眼地瞪着我。我老老实实关上门,一个箭步追上慢腾腾的师傅。

师傅见我跟上来,回头看看会议室,恢复了正常步速。走出几步,他仰起头,若有所思地说:“这个需求交给你的话,你估计要多久?”

“嗯……要改的是不是xx业务线的xx、xx和xx模块?下周四、周五左右应该能开发完。”

“嗯。xx和xx模块是公共模块,要注意兼容其它业务线。xx业务线的存量数据也要处理下。你回去再好好梳理下需求,我明天写完设计给你再讲一遍。不过,按xx日来倒排的话,你还得提前两天写完代码。怎么样,有信心没有?”

这是我第一次正式参与项目工作,当然有、也必须有信心!拍着胸脯保证完成任务的同时,我也没忘记提问:

“这个排期要现在同步给产品吗?”

“不用,等写完设计再说。”师傅瞥了我一眼,哼了一声:“不能惯着他们。”

“那……咱们确定要按业务的时间来倒排吗?”

师傅又瞥了我一眼,深深地吸了一口气:“除非咱们排个更早的时间,否则他们一定会找领导……这种非技术因素,暂时不用你考虑。”


非技术因素。那个时候的我并不知道这五个字的意味。

我后来知道这一点,是在那次需求评审会上。产品坚持要照抄某竞品的交互界面,而我们提出了一个新方案。那次,非技术因素没有站在我们这边。

还有那次,开发工作行将过半,业务突然提出需求变更,并且要求工期不变。我们拿出“范围-工期-成本-质量”的项目管理模型提出抗议。最后,非技术因素让我们牺牲成本和质量,满足业务对范围和工期的要求。

还有那次,我们已经完成所有工作,业务却在上线前一天通知项目终止;还有那次,我们早早完成上线,业务却迟迟没有展业,项目就此无疾而终;还有那次,项目上线时,业务错配参数导致数据出错,我们忙到后半夜才全部修复;还有那次,产品需求里写错规则,导致客户收益计算出错,我们却因“评审不严谨”担了次责……那么多次,非技术因素都没有站在我们这边。

甚至在信息部内部,也遍布着非技术因素的阴影。

那次,领导急急忙忙找到我们,拿出一份网信办的整改通知,要求当晚完成整改并上线。几位Leader匆匆商讨之后,提出一个存在明显问题的方案:我们团队的系统需要改很多代码,范围、工期、成本和质量都有极大的不确定性。可是,如果与另一个团队协作,改动量可以降低至少三分之二。无论从哪个角度考虑,第二个方案都是更优解。为什么还要选定现在这个方案呢?

我向师傅提出疑问,得到的答案依然是这五个字:非技术因素。

“不是……如果最后都由非技术因素来决定的话,那咱们还写设计文档干嘛?设计文档里还写什么方案对比分析干嘛?”

不知道师傅眼里,我脸上是什么表情。我眼里的师傅,带着满脸的无奈,只是长长地吸了一口气。

“我眼里的师傅,带着满脸的无奈,只是长长地吸了一口气。”


据说,我师傅曾经是信息部怼人最狠、怼人“金句”最多的一个。

“信息部里有一个算一个,哪一个不比你懂系统设计?”

“你认为你的交互方案更符合用户习惯,那说明你思维方式就有问题。”

“你又不懂技术你又不听我的,你不是蠢而不自知你是什么?”

“你觉得这个需求要不了这么多天是吧?那你水平高,你来做设计你来写代码吧。让我见识见识你的水平。”

据说,他甚至怼过领导。

“x总,我脑子笨,您说的我记不清。要不您发个邮件给我,详细说一下改什么、怎么改,行吗?只要邮件里写清楚,您怎么说我怎么改。”

“需求变更是他的权利。但是,他行使权利的时候,不用承担任何责任吗?我们加班熬夜的时候他会到场吗?线上出bug会扣他绩效吗?凭什么他们行使权利,我们承担责任?”

“业务指标没完成,是信息部的问题吗?是我们没完成需求导致的,还是我们线上出bug导致的?信息部已经百分百地完成了工作,凭什么让我们给业务背锅?我考一百,他考六十,凭什么让我陪着他罚站?”

“您可是信息部的领导啊!要是连你都觉得技术只是业务的工具,那我们这帮人成什么了?”

“据说,他甚至怼过领导。”

我实在想象不出这个头白手白、脸圆肚圆的中年男人发脾气是什么样子,就如我想象不出枪药馅儿的汤圆是什么味道一样。我听他说过的最硬气的话,也不过是“必须按流程来”——只有在说出这句话时,非技术因素才是我们的防火墙,而非监狱墙。

我很好奇他为什么会变成现在这样。虽然说温吞水里煮太久,再烈的枪药也会变成另一种尿性;但是从烈马变成……不经历铁鞭、铁锤或匕首,恐怕也难以驯服。何况,从某种角度来看,我师傅的那些话并不全是发泄情绪或人身攻击,而是有理有据地从技术角度展开争辩。即使如此雄辩,他仍然要一次一次向非技术因素低头,最终被磋磨成一个软糯的汤圆,就算馅儿再烫嘴,也只能深深吸一口气,把它窝进肚子里。

更令我恐惧的是,如果连大家公认的技术大牛都不能用技术因素战胜非技术因素,那我这样的菜鸟又该何去何从呢?我没有师傅那样的技术实力,也就没有他那样的底气,更不会有他那样的脾气。如果非技术因素直接砸到我头上,我该怎么办呢?退一万步讲,即使我学到师傅的十成十功力,不还是要任由非技术因素拿捏吗?那我跟着师傅学技术是图什么呢?不如……

恐怕之前的那位,不只是因为薪资翻倍才跳槽吧?


一番周折,我加到了那位师姐的微信。寒暄、熟悉后,我开口问道:

“呃……冒昧问一下,听说师姐你跳槽后,薪资直接翻倍了,是真的吗?你也太牛了吧!”

“可别埋汰我了,都是师傅教得好。出来之后技术为王,技术好当然啥都好。你好好跟着师傅学,翻个两倍也不是梦呀!”

“嚯,技术为王啊!那更羡慕了啊!我现在就感觉咱这边技术啥也不是呢。”

“哈哈哈我懂你!那边确实是,业务太强势了。我刚去那会儿,信息部还要背业务指标呢!业务没完成指标,信息部绩效扣30%,你就说膈应不膈应吧。”

“啊?还有这种事?”

“你不知道?师傅为这事儿没少怼领导,还当着大领导的面来了个舌战群儒,那小嘴叭叭儿的,老霸气了!”

“这……完全无法想象。要是现在的话,师傅多半只会说:‘唉……非技术因素嘛……’也不知道他怎么会变成这个样子。”

“这个嘛……我还真能跟你唠唠。师傅的事儿,我可以算个见证者吧。那会儿不止是工作,他家庭上也掉链子了。他家里的事儿我不方便说。工作上么,其实你猜都能猜到,业务太强势嘛,技术完全成了工具。业务指标那事儿吧,师傅干那一仗算是扳回一城。谁成想业务后来变本加厉,稍微有点争执就是‘都不用你背指标了你还想干啥’,这不扯犊子么。结果,师傅明明办了个好事,反而更闹心了……”

“难怪。这换谁都受不了吧。”

“可不咋地。一个大老爷们,工作工作闹心,家庭家庭糟心,你让他咋整?后来,我自己个儿还在犹豫要不要跳槽呢,师傅就可劲儿劝我走。我现在都记得他的话:如果愿意躺平认命,或者愿意放弃技术,那我就可以留下;如果我对工作生活还有追求,如果我想走技术路线去实现目标,那我就应该跳槽。那边已经不再用技术来考量技术人员,技术路线也被非技术因素堵死了;在这种环境下搞技术,完全是无效内卷。”

“师傅就可劲儿劝我走。”

“唉……像你这样有追求有能力的人都走了,留下的都是躺平摆烂的……这什么劣币驱逐良币啊!”

“哈哈哈哈也不能这么说,师傅不是留下了么。咋样儿,你是打算走呢,还是打算留呢?”

“我啊……我还没想好呢。师姐你有什么建议吗?”

“你问我可不是白扯么。我也不知道你啥情况,也不知道现在那边啥情况,你问我?我就只有一个建议:你呀,去问问师傅。师傅指定能给你更好的建议。”


“好了,离职手续办完了。祝你前程似锦!”

人事大姐从工位上站起来,和我握了握手。然后她接过另一位同事递过来的材料,惊奇地说:

“咦,杨工?你出差回来啦?真巧啊!”

师傅拍一拍我的肩膀,示意我等一等他。等人事大姐确认材料没问题之后,他和我一起走进电梯。

“那边情况怎么样?”

“听内推的师兄讲,整体的技术水平和技术氛围都很不错。IT部的话语权也不小,互联网公司嘛,技术为王。技术序列的晋升路线也挺靠谱。”

“嗯,听上去挺不错啊。”

“都是师傅教得好。”

这不是恭维。在知道我准备跳槽之后,师傅给了我不少帮助:他给我重开小灶,给我讲解大厂面试题,帮我联系内推,还帮我做模拟面试。他还给了我一条非常重要的建议:“不要因为‘这边有这样那样的问题’而跳槽,而要因为‘那边有这样那样的优势’而跳槽”。如果没有这个建议,我很可能在拿到第一个offer后就心急火燎不顾一切地栽进去——后来得知,那家的坑比这边还大。

“薪资方便透露吗?或者,涨幅多少?”

“呃……没翻番,只涨了50%。”

“那还是我教得不够好啊!”

说话间,我们已经走到大门外。师傅停下脚步,拍着我的肩膀说:

“我只能送你到这里了,剩下的路你要自己走。祝你得偿所愿吧!”

“师傅停下脚步,拍着我的肩膀说……”

我用力点点头,看着师傅转身往回走,开口喊住了他:

“师傅,这么多人都走了,您为什么要留下呢?”

师傅似乎并不意外。他只是长长的吸一口气,自嘲地笑笑:

“非技术因素。”