为什么有些公司的IT很乱?
——别问,问就是赛马,问就是KPI驱动
为什么很多公司甚至是闻名遐迩的资深IT公司,都被吐槽IT技术建设很烂呢?按惯例,问为什么之前,先问是不是。
▒壹·鹅厂▒
2018年一个名为“当下腾讯的技术建设是否处于落后同体量公司的状态?”的问答一石激起千层浪,一位网名叫toughguy的腾讯人写下一篇著名檄文,炮打香港帮,以至于有阿里人留言:“你的回答已在A厂里传阅过了,包括很高很高的老板们,我们看完这篇文章并没有幸灾乐祸的心情,而是对技术人的可惜。”
作为课代表,我总结一下当时各方人士对鹅厂IT技术建设的矛头所向:
(也许因为)CTO缺位:不是说鹅厂一直没有CTO,而是CTO缺位。表象之一是,此前没有人站出来“拉通”整个集团所有BU的技术和规范,各干各的。表象之二是,迟迟还没有集团层面的技术委员会(反观美团、58同城、蚂蚁金服等公司早早就设立了技术委员会,负责顶层设计),直到2018年第三次大规模重组中,由于内部争斗爆出几篇文章抨击鹅厂不重视技术,才在重组变革清单的最后加了一条要成立技术委员会。
(还可能因为)业务导向太严重:据说鹅厂可能是互联网Top巨头中技术地位最低的公司,毕竟是产品驱动的企业文化。
(其实最重要的原因是)内部赛马机制:鹅厂不同BU之间不敢说势如水火,至少是如同防火防盗,究其原因就是内部赛马文化,成也萧何败也萧何。“一个新点子,四五支队伍同时做,谁做得快谁就享受流量支援”,在这种情况下,谁会分享技术,谁敢采用其他BU的技术?!
(导致)技术债务沉重:以至于有人吐槽:“如果你来自于其他IT公司,那么你进入鹅厂之后会有极大的自由,自由到你无法意识到你是在一个庞大的市值世界前十的公司工作,自由到和十几个人的创业公司差不多。”

* 拉通:互联网高端大气术语,本文中特指由一名得到更高层授权、拥有一定决策权的人跨部门或跨公司沟通协调。
▒贰·其他大厂▒
2015年有一个著名的“为什么有些大公司技术弱爆了?”问答一箭穿心,虽然提问者说的是一家“卖机票的”大型互联网公司,但射中了IT人的脆弱,无数人将心比心、换位思考地为技术团队中的 Bad Smells 辩护。
比如雷军旗下的公司,各搞各的体系建设,感觉没有人抓总,小米集团技术委员会姗姗来迟,2019年4月成立的。但58同城就很明显有技术委员会在抓总,举个简单例子,集团以前名下有统一的配置管理和过程控制部门,把下面各个公司的版本控制、持续集成和持续发布牢牢地抓在手里,后来好像因为成本核算的原因才把配管打散了下放到每一个公司里。有人抓总和没有,确实不大一样。
再比如2015年我们就了解到蚂蚁集团有着庞大的产品研发支撑体系,可以浓缩为四个平台:ACP(阿里协作平台)、九州资源管控平台、AQC(蚂蚁质量基础设施平台)、Zpass(蚂蚁集团发布部署平台)。ACP是总驱动,九州、AQC、Zpass作为基础设施,整个形成一套CI/CD流水线,如下图所示,注意这只是2015年我画的快照。

我可以把大家的辩护解读为“从熵增到熵死”:熵增:这是热力学第二定律所描述的原理,在孤立系统中,体系与环境没有能量交换,体系总是自发地向混乱度增大的方向变化,使整个系统的熵值越来越大。熵死:熵达到极大值,系统达到最无序的平衡态,整个系统最终慢慢地退化成毫无生气的、死气沉沉的一团物质——这是一种持久不变的状态。
但我不愿意承认“熵增”是根本原因,也不愿意承认“熵死”是必然结局,因为菊厂一直致力于“熵减”,此病虽积重难返但并非无药可解。
虽然2016年一位名叫“泥瓦匠”的海归程序员写下了那篇《华为到该炸掉研发金字塔的时候了》,从组织、流程、环境、工具等四方面阐述在菊厂做研发之不易,但2017年菊厂总裁办发布了一封《华为之熵,光明之矢》的学习邮件,试图从企业宏观层面论述如何解决企业发展过程中出现的组织惰怠、流程僵化、技术创新乏力、业务固化守成等问题。此处不再赘述,感兴趣的同学可自行搜索。* Bad Smells:坏味道。Martin Fowler在其名著《重构:改善既有代码的设计》中生动形象地使用“代码坏味道(Bad Code Smells)”来比喻低质量的代码设计和实现所显现的“症状”。
▒▓三·问题出在哪儿呢?▓▒
我跟一些大厂的人深入聊过,我们自己人也有不少人去了大厂,确实有不少声名显赫的大厂虽然业务高歌猛进,新闻高潮迭起,但IT缺少顶层设计,各自为战,高高砌起部门墙和公司墙,缺乏自发革新和革命。
我试图从组织行为逻辑上解释这个问题,首先我把它归因为“缺少德才兼备的长期主义者”。
其次,我从组织管理上描述一下表象,看看你是到哪一行心有戚戚焉,感慨这不就是我们公司嘛:
A.一开始有CTO的:
A.1.业务发展太快,CTO跟不上
A.1.1.CTO德不配位,水平不够,大家不服
A.2.公司押中赛道,巨量资金进入,同时引入了阿里腾讯百度等内企、微软谷歌等外企的风格迥异的技术大咖,这些势力互不买账,纠缠掣肘,公有公理,婆有婆理,做业务都一个头九个大,更别提顶层设计高举高打了
B.一直没有CTO的:
B.1.始终缺一票拉通抓总的人(比如技术委员会),BU们各自为政,自然而然,必然结果
B.1.1.技术选择太多了,光是Apache基金会里顶级项目就一大堆,每一个聪明人都想引入更好的,结果谁也不听谁的,你一个,我一个,慢慢地,集团里就脑裂成不同技术路线,各自演化
B.2.换人如换刀:现实中还有一种常见情况是,外行指挥内行,不解决问题专门解决人,工作达不成就换人,再达不成就再换。很容易在产研团队里导致这样一种后果,刚要有所起色就换了一拨人,又刚要有所起色又换了一拨人,最后搞得一团糟,满地全是无主的“焦油坑”。

* 焦油坑,参见软件工程经典著作《人月神话》。
▓█四·小结█▓
最后我总结一下:因为“缺少德才兼备的长期主义者”,面对企业不期而至的“熵增”,既不敢像马云支持阿里云王坚一样去寻求管理层的理解、信任和支持,也做不到“日拱一卒,功不唐捐”,更无法像王坚一样“所有理想主义都是用命来填”,最后变得像印度一样大而不强。
资源链接:
1,2018年著名问答,https://www.zhihu.com/question/278473776
2,2015年著名问答,https://www.zhihu.com/question/32039226
3,2016年,《华为到该炸掉研发金字塔的时候了》
4,2017年,《华为之熵,光明之矢》
昀哥 写作于2021年6月18日
关键词:IT建设,基础设施,长期主义,熵增,熵减,熵死
-全文完,如果觉得有收获,记得点推荐或“收藏”-
为什么有些公司的IT很乱?的更多相关文章
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用 今早上接到一个电话,自已多年前写的一个ASP.NET网站管理系统,一个公司在用,出了点问题, 第一点是惊奇,5,6年前的东东,手机号码换了 ...
- 怎么用MathType解决Word公式排版很乱的问题
现在办公室起草文件,期刊论文投稿.学校试着编辑都要先在Word中编辑好后再打印出来.在Word中编辑这些文本内容时,如果遇到公式就要使用专门的MathType公式编辑器.而有很多人在用MathType ...
- Jmeter日记,很乱很随意
这个笔记是写给自己看的,很乱很随意,可能以后自己都看不懂.哈哈 Jmeter两种录制方式: 1使用badboy 2.使用代理 浏览器设置代理 参数化 随机参数化 插件的使用 官网下载和说明https: ...
- 安装storm的一些很乱的笔记
下面是自己安装和测试storm的一些笔记,比较乱,后续有时间在整理一篇. storm jar all-my-code.jar com.storm.MyTopology arg1 arg2这个命令会运行 ...
- angular学习笔记,很乱哈哈。
1.鼠标悬浮出现的信息v-bind:title="message" 2.对该便签进行结果判断显示隐藏v-if=''控制台设置 app3.seen = false(消失).控制台设置 ...
- sqlplus 打印很乱,而且很短就换行
set linesize 可以解决 设置行打印的字符长度,set linesize 400解决
- 手提wifi双卡配置+window7同时多用户远程+有些公司限制网络环境方案
该公司只提供几台机器,同时限制并连接到内部办公网络的机, 我们更多的临时工作人员,项目紧张,而另一种是太麻烦了申请, 当被问及其他网络管理,说没有变通方法. 在我的尝试,最后,找到一个解决方案; 解决 ...
- 移动端目标识别(3)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之Running on mobile with TensorFlow Lite (写的很乱,回头更新一个简洁的版本)
承接移动端目标识别(2) 使用TensorFlow Lite在移动设备上运行 在本节中,我们将向您展示如何使用TensorFlow Lite获得更小的模型,并允许您利用针对移动设备优化 ...
- centos 7.0 lnmp成功安装过程(很乱)
下载nginx [root@localhost src]# wget http://nginx.org/download/nginx-1.7.9.tar.gz --2015-01-24 12:55:2 ...
随机推荐
- 1 cmd
打开cmd 在终端打开指定文件 按住alt+e打开我的电脑 补充: 1.windows和+组合快捷键 放大镜,(同理windows -) 然后在地址栏输入cmd,回车即可 常用命令 #盘符切换 ...
- 痞子衡嵌入式:可通过USB Device Path来唯一指定i.MXRT设备进行ROM/Flashloader通信
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是通过USB Device Path来唯一指定i.MXRT设备进行ROM/Flashloader通信. i.MXRT系列高性能微控制器从2 ...
- java学习路线分析
- 教你用SQL实现统计排名
前言: 在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名.排名也有多种排名方式,如直接排名.分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题. 创 ...
- makefile的include用法
include 使用方法 : include filename.mk 作用: 暂停当前的makefile执行,去执行指定的makefile,执行完毕后继续执行当前的makefile -include ...
- python类内部方法__setattr__ __getattr_ __delattr__ hasattr __getattribute__ __getitem__(),__setitem__(), __delitem__()
主要讲类的内部方法 __setattr__ __getattr_ __delattr__ hasattr __getattribute__ __getitem__(),__setitem__ ...
- Docker——JVM 感知容器的 CPU 和 Memory 资源限制
前言 对于那些在Java应用程序中使用Docker的CPU和内存限制的人来说,可能会遇到一些挑战.特别是CPU限制,因为JVM在内部透明地设置GC线程和JIT编译器线程的数量. 这些可以通过命令行选项 ...
- Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的性能稳定的操作系统,可免费使用并自由传播。
Linux是一个基于POSIX和Unix的多用户.多任务.支持多线程和多CPU的性能稳定的操作系统,可免费使用并自由传播. Linux是众多操作系统之一 , 目前流行的服务器和 PC 端操作系统有 L ...
- IT菜鸟之BIOS和VT
一.虚拟化:VT(Virtualization Technology) 二.BIOS (basic input output system基本输入输出系统) 主板优先启动--bios启动--bios开 ...
- Nginx下配置Https 配置文件(vue)
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...