时隔一年半,再次来到深圳,再次看华强北,感觉完全不同了。不禁感慨,这两年自己真是变了太多。晚上恰好又和合肥 MTK 的同事 QQ 上聊了会,回忆起当年苦不堪言的日子,觉得还是记下点什么,省得老了忘记了。
被上海的高房价压迫着,寻思落根二线城市,离家近、朋友多。最后因为加班太多,压力太大而离开联发科,自己都觉得有点出乎意料。作为一个工作狂,居然真的摸到了精神承受的极限。反思一下,公司整体的架构,不管是人事上还是技术上,都有很大的问题。
- 自负的”执行力”
首先一点,MTK 整体的执行力绝对是世界一流的,身在其中,绝大部分人都有一个坚定的信念:没有什么事情是做不成的。不管是什么样的功能,只要真的决定做,可以立即跨组调动所有所需资源,达成目标,就行一辆无坚不摧的战车。但是正所谓成也萧何败也萧何,什么事都能做成的结果,就是什么事都想自己做。
明明有 make,却要自己用脚本另写一套。明明有 Qt,却要自己写一套 Widget。不断的重复发明轮子,而新发明轮子的质量通常和开源版本相差甚远,不停地冒出 bug,许多人都疲于应对。拿我当时分管的文件系统和设备管理来说,如果使用标准的 glibc 文件操作接口,不另外包一层。如果使用 udev 而不是自己解析 uevent,那么工作量至少减半。
- Nucleus 的包袱太重
到 MTK 的时候,数字电视部门正在从 nucleus 系统转向 Linux 系统。转化采用了平滑切换方式,应用层接口不变,中间件做平台适配。这样做有其合理性,因为风险较小。但是事实却证明,一失足成千古恨,错误的演进路径几乎成了万恶之源。
为了适配 nucleus 系统,中间件只能按照原来的 API 进行移植。但是 Nucleus 和 Linux 差别太大了,Nucleus 中是没有内核空间和用户空间之分的,所以原有的 API 中上层可以直接调用下层的任意程序。单单为了满足这一点,无数的丑陋接口产生了,目的就是穿透内核空间。用 Linux 适配 Nucleus 程序的后果就是 Linux 上的通用接口被隐藏,人为包上原有接口。比如文件系统操作, 所有调用都有包裹程序,每个文件操作都要进过多个调用才能完成,效率低下。
本来,使用 Linux 的目的应该是更好的利用上面的接口和已有程序,到最后还是用那么丑陋的一套,没有很好的利用 Linux 的优势。
- 软件分支过多,版本发布过于频繁
MTK 是以周为单位拉分支的,可谓是前无古人、后无来者。每周四晚上都会打 Tag,冠以 2011_WEEKLY_78 之类的名字,客户分支会从周版本中再拉子分支。我一直怀疑,能想出这种脑残方式的人到底有没有开发过大程序:一周时间根本就不够稳定版本的,唯一能想到的理由就是,每周打一个版本,周一就可以给 QA 发测试版本, QA 就不会干等着吃闲饭。这种极短开发周期的后果就是:
A. 每个周版本都不稳定
周分支就像一个流水线,不停地往外冒版本,通常是这个版本的 Bug 还没解,下个版本的 Bug 已经出现在 CR 上。而且在周版本 Bug 解完之前客户版本可能已经拉出来了。
B. 每天都在下版本、编译、下载
许多 Bug 都必须在给定的版本上复现,下代码很耗时间,编译也耗时间。尤其是因为 Nucleus 和 Linux 为了代码复用,使用了无数的宏进行控制,根本不可能所有宏都编译一遍,代码编不过非常常见。持续整合的重要性在大程序中显露无余。
C. 许多 Bug 有 N 多的分支需要发布
因为在解 Bug 的过程中已经拉出了许多分支,理论上说,所有中间的周分支都需要发布修改。遇到死机等严重问题,一下发布到 70 个分支也是有可能的…
重点也就这么多了,那段时间真的很累。归根到底,还是公司根本不关心员工的身体,好多老员工都谢顶,工作压力大是最主要的,还有估计就是一个人周围 N 多大电视、显示器,辐射太严重了吧。最近听说开始搞 Android TV 了,希望老同事们的日子会好过一些。
============================================================================================
突然间发现访问量激增,从留言中也看到有人因为我的一篇文章而决定不去联发科。突然觉得言论有些偏颇,缺陷说得比较突出,可能是因为处女座的本性吧。就留言中决定不去报到的同学,还请再三考虑。
太多的东西要另起文章展开了,先简要说下:
总结在合肥半年多的时光,虽然很苦、很累,但是我还是觉得是值得的,并没有后悔当初的决定。加班和来自量产的压力,其实也是动力,软件水平上的提升确实是之前工作的好几倍。
并不是每一个公司都能给员工接触世界性产品的机会。上海有许多外企,但是核心技术都在国外。而如合肥这样的二线城市,像 MTK 这样对员工开放核心技术得真的不多。
同事和主管对我都很好,帮助也很大。印象最深的就是有天小组长为了帮我解一个超变态 CR 一直到 3 点。
最后决定离开,除了加班的压力之外,还有很大一部分来自在上海的老婆,那么长时间没在一起,到现在还觉得有所亏欠。