这两个月,人员,客户都有了很大的增长。
新入职的同事,张伟通过‘日清日结’‘日报’‘每周管理会议’‘EGb主脑掌控座舱’等管理工具,经常发现高速扩张带来的浮躁。
目前产品研发的人最多,张伟打算首先从这里开始挤泡沫。
现在用AI写代码很快,但是AI却无法知道张伟积累了多少个函数了。
目前张伟的函数商城也有几百个函数了。
绝大部分功能,不需要再专门去开发了。
现在自己的EGb产品已经达到了,SAp构建的结丹第6层的状态了。
各个函数就像积木的小模块,要搭建一个模型,就用这些小积木块进行快速组装就行了。
也就是EGb要新增一个功能,只需要用存量函数进行组装就能搞定新功能的开发了。
可是要去熟悉,查找这些函数,比起给AI描述下需求,就哗哗生成代码来说,查函数反而变慢了。
这种直接写代码的行为,是张伟不能允许的,任何一行代码都存在bug,函数被很多次调用后,绝大部分bUG都被碰到了,都已经被修复了。
而针对性写的代码,测试不充分,将会产生巨大的稳定性隐患。
这是必须杜绝的。
周三下午2点整,会议室人头攒动,没去现场项目的,还在公司的员工,张伟都召集了起来。
总共有50多名把会议室挤得满满当当,大屏幕投影仪上显示着本次要Review的代码片段,字体调大到连后排戴眼镜的都能看清楚。
这可不是普通的代码Review,这是张伟公司惯例的“代码公开处刑”大会,也是一场另类的全员培训。
今天,张伟亲自坐镇,这意味着事态绝非寻常,张伟已经有好几个月没参加这种Review了。
“小李,咱们今天Review哪个幸运儿的代码呀?”交付部的小胖打趣着。
“还能有谁?肯定是程序员啊,难道你们交付部写的交付文档也能被Review?”小李嘴角带着玩笑反击道。
此时,门口响起了敲门声,张伟端着一杯黑咖啡走了进来,穿着经典的程序员同款格子衬衫,脸上挂着令人捉摸不透的微笑。
“伟哥来了!”人群里有人低语。
张伟听见后故意提高音量,幽默地回应道:“对,伟哥今天来,专治各种‘代码不服’。不过大家别紧张,我今天不是来抓bug的,而是来看看大家可以拿到多少‘函数奖金’的。”
会议室里顿时传来轻松的笑声,但坐在角落的赵工脸色却微微一变,似乎隐隐嗅到了一丝危险的气息。
小李拿起麦克风,笑着宣布:“好,下面请我们的赵工上台,欣赏一下他的‘杰作’。”
赵工,28岁,入职公司已有5个月,之前在某大厂做外包自诩“老司机”,自认为深谙江湖之道。
但他的代码作风非常“豪迈”已经自成体系,就是copy、paste,改一改、跑一跑,if else随心所欲,极少封装成函数。
这种风格已经让很多人默默皱眉,但碍于面子不好说破。
毕竟很多人,都是小年轻,不知道深浅,他仗着资历总是会来点标新立异。
今天伟哥亲自要参加代码Review,直接就拿他来打头阵了,是骡子是马,当面锣对面鼓,干了就懂了。
赵工硬着头皮走到投影仪前,笑容里带着一丝勉强的自信:“嘿嘿,我这代码写得比较朴素,讲究效率至上,没什么花里胡哨的东西。”
张伟微微一笑:“是吗?那咱们就一起来‘欣赏’一下赵工最近编写的‘朴素’代码。”
屏幕上投影出赵工的代码,密密麻麻1500多行,整个功能从头到尾一个函数都没有,全靠if else,while,case...,等纯编码逻辑实现。
张伟面无表情地一行行滑动着鼠标:“赵工,你这是在写剧本吗?整整1500行,全靠这些来支撑,就不值得调用一个函数。这代码块的长度,估计连公司楼下卖煎饼果子师傅摊开饼皮,都比不上你这个长。”
众人忍俊不禁,赵工脸色微微泛红:“伟哥,这个功能比较急,客户催得紧,我这不是为了提高效率嘛……”
张伟停下了鼠标,突然严肃地说道:“效率?你这不叫效率,这叫赌运气。你这1500行代码,看似能跑,但如果后续需求变更怎么办?再复制一遍?如果中间出问题了怎么定位?靠灵感?”
“你这代码里,我看至少可以使用4个我们现成的函数。”
“而你这些代码,我估计只完成了一次性的功能测试,全方位的业务测试,行业数据测试,应该都没有。”
“我们那些封装后的函数,全部经过多轮,多项目的功能测试,业务测试,行业测试,还被无数条pRd的数据验证过的。”
“你这个是一次性的工作。”
赵工咬了咬牙:“伟哥,真的没出过bug啊,功能确实跑通了。”
张伟冷笑一声:“是,功能跑通了,可是跑通不是我们开发的终点,易维护、可扩展才是。”
说着,他点开另一个界面,一个新员工封装的同样功能的模块清晰地展示出来。
代码干净简洁,只有50行,函数调用清晰明确,注释、异常处理一应俱全。
“大家看看,大致相同的功能,新人小张写了50行代码,完全模块化,可复用性极高,未来扩展需求也不过是增加一个接口调用。”
赵工脸色瞬间涨红,咬牙低头不语。
张伟缓缓扫视全场:“你们要记住,写代码不封函数,你不是在提效,而是在毁未来。”
“当初我为什么要构建函数商城,还要额外给大家发一笔,函数构建奖金,和函数调用奖金?”
“那是因为:1、自己写的代码块,没有经过严格的测试,很多异常发现不了,比起调用函数会增加大量重复的测试工作量,同时增加了系统的不稳定性风险,埋藏bug给客户,造成极差的用户体验。”
“2、没有封装成函数,那么开发的小功能就是一次性的,不能复用,没法让开发的边界成本无限的减小的,这是做It产品最关键的。”
“我们是做产品的,我们不是外包,我们不是做项目,我们是做产品的公司!”
“我给大家看过的,SAp的代码,几十年前的前辈开发的,现在我们还能用,而且很丝滑。”
“赵工,你这1500行代码,20年后,你敢让后辈看么?”
这句话像一枚重磅炸弹,瞬间点燃了群聊。
小李赶紧截图,把赵工一脸震惊的表情配上张伟金句发到公司群,瞬间“666”“伟哥霸气”的弹幕刷满屏幕。
张伟平静地看了赵工一眼,语气平淡却透着一种不可质疑的决绝:
“函数商城、模块化封装,我在每月新人入职培训的时候,早就讲过,而且为了推行这个政策,还额外给大家,颁发了奖金。”
“居然还会有人,这样肆无忌惮的,破坏这个规则。”
“赵工,从现在开始,你的工位空出来,不用再打卡了。”
张伟转头给小玲说:
“小玲,你给他办理下,手续。”
会议室里的空气瞬间凝固了,所有人都屏住呼吸,难以相信张伟竟然当场下了如此狠手。
赵工慌忙辩解:“伟哥,我保证下次一定改,这次纯属赶时间,绝不是不听公司规定。”
张伟打断了他:“下一次?如果下一次,我们系统崩了,客户投诉了,你又如何保证?”
“你知道我们的客户是谁!”
“全是那种超大型公司的cEo,是一把手,我们的信誉在人家那里,最多只有几次可以出bUG的机会。”
“这点,我想交付,售前,和销售很有发言权。”
“确实啊,上次那个bug,我去客户那里赔罪了1整天,那感觉太难受了,绝不想经历第二次啊!”交付负责人,小赵,一脸的生无可恋,补充道。
张伟继续说:“我们这里不是外包工厂,不是堆砌代码的生产线。你如果坚持‘块状编程自由’,那你可以自由地离开这家公司——因为我们坚持的是‘函数即文明’。”
“我们是做产品的公司,不是做外包的,做项目的公司!我们的代码要像SAp代码一样,几十年后依然可以运行,可以发光,拥有这段代码的价值。”
“我们的代码不是一次性的代码。而是像SAp的代码那样,可以被无数功能重复使用的代码。”
“这也是我的SAp第6层结丹的核心产物!”
张伟站上了讲台,抬高了音量接着说:“我们要成为彼此的战友!我们要能放心的把后背交给我们的战友!”
“赵工,我可以明确的告诉你,你这1500行代码,你只经历了功能测试,你说的没有bug,全是假象,你是基于功能视角得出的没有bug的结论!”
“我可以立马用业务测试逻辑,和行业数据测试逻辑,和极端业务边缘情况测试逻辑,至少测出10个以上的bUG。”
于是张伟立马开始,数据输入,毕竟以张伟元婴加持下的六边形战力,瞬间就造出了8条数据。
老板是程序员,还是业务咨询顾问,还是cEo,张伟这8条数据,瞬间把赵工的1500行代码,攻击的溃不成军,完全就是‘屎山代码’。
开玩笑,当年张伟用29条数据,就打包走了“夏国能源”几个亿的项目走。
赵工这1500行代码,在张伟这个怪胎面前,简直弱爆了。
“赵工,你这1500行代码,我就用8条数据,产生了17个bug,平均100行一条bug!”
赵工斗大的汗珠,滴答滴答的掉,完全说不上话。
这也是程序员的弱项,他们更多是测试功能性,而忽略了,功能在业务情境下的使用情况。
就是那句“树上有十只鸟.......”。
此时交付负责人,小赵,完全震惊了:“伟哥,这代码质量,我简直要吐血啊,我们在客户攒下的人品,就这一下肯定被干的稀碎啊!”
张伟回到前台,接着说“小赵说的非常对,就这一下,我们的人品,就稀碎了。”
“在战争年代,我们的交付,就因为赵工这1500行代码,就全军覆灭了!”
“现在是和平年代,商战就是,战场,如果这些代码溜出去,我们的交付,一样被灭掉了,刽子手就是你赵工!”
“现在商场就是战场,我们在坐的各位,必须要成为对方,可以信赖,可以把后背交给你的战友!”
“销售的后背、战友,是售前,是交付;交付、售前的战友、后背,是我们的产品、研发。“
“我希望我们大家,都能成为彼此背靠背的战友!”
这句话掷地有声,全场鸦雀无声,众人瞬间明白张伟的决心,心里纷纷暗自提醒自己:这条红线不能再碰。
赵工见大势已去,只能尴尬地转身离开会议室,全场的人看着他背影,心中却是更加肃然。
杀鸡已经完毕,张伟的目光柔和了下来,话题一转:“当然,我们不能只批评不表扬,下面我们看看优秀的案例。”
张伟打开小林的代码。
小林是入职仅一个月的普通二本毕业生,一个女程序员,平时话不多,但工作特别勤奋认真。
屏幕上,小林封装的“通用上传模块”展现出来,代码整洁、注释清晰、异常完备。
张伟微笑着说:“看看人家小林的代码,都在微笑。函数封装、可复用、带单测。她这么写不是因为能力多么出众,而是因为她对代码有敬畏之心。你们要学习她的‘文明’。”
小林站起来,眼眶微红,感动地点点头,全场爆发出热烈的掌声。
张伟继续点开小张的代码,这位985高校毕业的年轻程序员,入职3个月,写了一个通用权限控制函数。
代码逻辑极其清晰,适配性极强。
“再看我们小张,985计算机系毕业,这权限模块3个业务场景、7个调用方,全部兼容。他比你们多的只是一句return,一句你们懒得写的return。”
张伟宣布:“授予小林、小张两位同学‘模块化编程先锋奖’,各自奖金1000元!”
“小玲,你专门,定制一批军功章,我到时亲自颁发给他们。”
公司群里再次沸腾,屏幕上各种“Nb”、“拳头”各种表情包刷屏,两位年轻人感动又兴奋。
张伟回到讲台前,神色认真而诚恳:“我不是在卷你们的效率,我是在保护我们公司的未来。你封装一次函数,就是在帮公司规避无数次未来的灾难。”
他语气坚定:“记住,我们写的每一行代码都要有传承价值。我们不是外包写手,不是临时工,我们是构建一个完整智能体系的工程师。”
张伟停下了说话,环顾四周,最后郑重的说:
“最重要的是,我们要成为彼此背靠背,可以放心把后背交给对方的战友!”
众人听完,纷纷点头,目光更加清亮而坚定。
会议室里再次响起雷鸣般的掌声,张伟端起黑咖啡,平静地一饮而尽。
今天,不仅仅Review了一段代码,更是重新塑造了一次企业文化。