一个程序员在智能手机行业的这十年,专访 Flyme 核心技术开发周详

Chage |

端午节前的一个周末,我见到了周详。

在我采访周详之前,他的名字我就已有所耳闻。

在魅族公司内部周详是个名人,他的出名并不是因为曾经搞过的什么大事件,而是因为这位技术专家一直管理着整个魅族技术的心脏 —— Flyme 系统研发。

周详

年龄:37
出生:湖南湘潭
职位:Flyme 系统研发部负责人
毕业:中南大学
工作时间:10 年

「你知道程序员这种工作,它是需要兴趣的,如果你抱着混口饭吃赚点小钱来看待编程这份工作,那么你这辈子会非常难熬。」

见面寒暄了几句,周详就和我聊起了他的编程理念。

1979 年,周详生于湖南省湘潭市,是个地道的湖南满哥。周详的父亲是文化局的一名干部,母亲在少年儿童图书馆工作,用书香门第来形容周详的家庭背景并不为过,这种特殊环境直接导致了周详对于读书,有着不同于常人的喜好。

(儿童时期的周详)

从小学到高中,周详一直是一名尖子生,在高中三年的常规考试中,周详经常保持着全班第一的考试成绩,不偏科又身兼学习委员,周详可以说是顶着让儿时的我们羡慕的光环成长的,他既是学校眼中的好苗子,也是老师眼中的好学生。

「虽然成绩很好,但我和同学们并没有太多距离感,也经常会周末和朋友们出去瞎混,不过我从小体弱多病,所以玩的不疯,大学的时候,我也因为身体原因,选择了离家不远的长沙。」

1998 年,周详考入了现中南大学的前身,中南工业大学。
「刚入大学的时候觉着自己的化学成绩不错,学校的冶金专业也挺有名的,在没有什么人生方向的情况下,就选了冶金物理化学的专业,到了大学感觉到自己的自控力开始下降,原来在高中拔尖的我到了大学也变得非常的普通,所以心思并没有怎么放在学习上。」

周详第一次正儿八经的接触电脑是在大学的机房里。

(大学时期的周详)

「我对于新鲜事物很感兴趣,当时每个月班里都会固定的发一些'上机票',我就会把大部分课余时间都花在机房里。除了练练打字,玩玩小游戏,装装系统,我当时并没有做太深入的研究,第一次接触到编程已经是在半年后学校专业的 Visual Basic 课程上,那时才开始了解一些简单的计算机编程逻辑。」

2000 年,周详的父母花了一笔 7000 块的重金,给他配置了一台当时性能强劲的奔腾 3 台式机,对于周详而言,这台电脑承担着他人生导师的使命。

「有了自己的电脑之后,我把大部分的经历都放在了那台老古董上,参加编程的公选课,蹲在宿舍研究代码,整天做着未来开发 3D 游戏的美梦,那一年我完全沉迷其中。」

2003 年,周详考上了本校的研究生,并且正式转向了计算机相关的人工智能与模式识别专业。

「在研究生期间,我才开始正儿八经的用 VC 开发 C++ 软件,那时候最让我感觉兴奋的事情就是写代码能赚钱。」

「我的导师当时接了一家钢厂的分钢系统的开发,我在整个系统开发小组里负责了代码实现部分,之后我花了 1 个月的时间实现了机械组件的代码模拟过程,那时候我用这几千行代码赚到了第一笔钱。」

「2000 块,这对于当时的我来说不是个小数目,拿到这笔钱的时候是非常兴奋的,从那后我就下决心要靠代码发家。」

而真正改变周详整个人生轨迹的来自于一台手机。

「本来我认为我会像其他程序员一样,老老实实的在中控机和电脑上开发着大型程序,然后普通的过完这一生,然而由于一场婚礼,一切都发生了改变。」

「2004年,我姐姐结婚,我的姐夫想表达一下自己的诚意,于是送给了我一台当时市面上售价非常昂贵的 MOTO E680i。」

「嵌入式 Linux 系统,可以装软件,可以用 QT,可以用 C++开发应用,320*240 分辨率,有五位导航键,还有能玩游戏的 A B 键,当时这台手机就是我心目中的旗舰。」

MOTO E680 是摩托罗拉在 2004 年推出的一款智能手机,采用了 312MHz 的 Intel XScaleCPU,运行 Embedded Linux 系统,在当时诺基亚主推的机型还是 7610 的时代,E680 的配置显得非常超前。

「入手几天后,我感觉到有些失望,它定制的 linux 系统并没有什么软件,游戏应用也非常稀少,比起功能机,E680的智能程度相当有限的。」

「由于应用太少,我开始下决心自己给这台当时性能强悍的手机开发软件。」

「我给它开发的第一款软件是一个屏幕保护程序,可以简单更换壁纸,显示时间,我把这样一个简单的软件放到了早年很知名的移动天使论坛上,结果它的受欢迎程度远超我的想象,很多 E680 的用户莫名而来,他们在帖子下面留言,给我提各种各样的改进需求。」

从这一发不可收拾。

「这款软件我不断的增加功能,包括字体样式大小等等,前前后后我一共更新了 10 几个版本,在这之后我开始不满于这种简单的系统软件开发,开始朝更有难度的播放型软件进行探索。」

「我花了半年的时间,仿照 Winamp 做出了一款 E680 的第三方音乐播放器,它扩充了 E680 所支持的音乐格式,并支持换肤功能,我在软件代码中约定了格式,可以由网友们自己开发兼容的皮肤,这款软件的受欢迎程度超过了之前我做的第一款应用,给了我极大的鼓舞。」

「之后我又做了类似的视频播放器,由于我只擅长编程而 UI 设计很薄弱,大部分的素材资源都是我在网上寻找的。1 年后我又开发出了一款功能非常完善的 SNES 模拟器,这款模拟器能够模拟当时任天堂 SFC 的大部分游戏作品,这在当时引起了一部分玩家的强烈支持。」 「我热衷于干这些事情,并且很长一段时间都沉浸其中,这一定程度上影响了我的学业,却也打开了我的另一条道路。」

「当时我热心的向我同实验室的伙伴们分享我在手机上的软件开发经历,然而他们却并没有太多兴趣,因为对于他们而言,当时在中控机和电脑上开发的才叫程序,我做的这些在他们眼里只能算是玩具。」

2005 年,嗅到商机的第三方固件开发团队花了 1 万块钱,买走了周详所有给 MOTO E680 开发的软件的使用权,这是周详在为 E680 无偿开发 2 年后,获得的最大一笔收入。

「那个时候我只是一个很朴实的码农,并没有意识到这中间所蕴含的商业价值,我以很低的价钱卖给了开发团队之后,他们又以固件打包收费的形式再卖给用户,从中大赚了一笔,那时我才理解到光有软件代码是不行的,你还需要学会去如何挖掘它的价值。」

2006 年初,周详硕士毕业,南下进入了当时中国市场里唯一开发智能手机操作系统的公司,全智达。

全智达是 2005 年在深圳创建的一家智能手机系统开发企业,周详进入全智达后,就是开发基于 Linux 底层的国产手机操作系统,在当时国内还是功能机的时代,全智达的思维理念显得有些超前,他们所研发的智能系统当时被用于自己生产的机型,联通的沃 Phone ,以及国内厂商的合作机型中。

「基于我之前多媒体开发方面的经验,我南下到深圳进入全智达后,我就负责了多媒体应用和框架的开发。」 (全智达系统演变)

「那时觉得很酷,毕竟我们开发的是国内极其稀有的手机操作系统。」

「早年开发的时候,困难重重,由于并没有现成的机器给你用,我们都是在模拟器上进行开发,经常在导入到实机时会遇到一些不可预知的问题,而我们也缺少资料借鉴,所有的问题都需要自己去摸索解决,这也造成了开发进度的缓慢。」 在全智达的两年,周详成了名副其实的码农,每天起早贪黑,抱着开发国产自主系统的信念,进行着大量的代码编写工作。

2007 年 12 月 想自己独当一面的周详,受到几个跳槽同事的引荐,接触到了魅族,当时魅族正在开发 M8 的关键期,白永祥迫切的需要一些多媒体方面的技术人才,而当周详了解到当时 M8 的硬件配置后,他决定赌一把,虽然离开深圳对于周详而言,是一件非常巨大的事,但是周详难以抵挡 M8 强烈的诱惑力,于是,周详放弃了深圳的发展前景,来到了珠海。

Q&A:

1.刚来魅族的时候 M8 正值开发的什么阶段?

「才刚刚开始,我当时入职的时候就负责了魅族 M8 多媒体框架的方面的开发工作,整个音乐应用的开发都是我在负责。」

「M8 当时的硬件配置很超前,720*480 的分辨率,三星的高主频 CPU,有图形加速能力和重力传感器,这些在当时都是难以想象的,我就像一批野马一样找到了属于自己的草原,在M8上,我可以肆意驰骋。」

「我之前很少在 WINDOWS 的平台上开发,尤其是 Wince 这种非常陌生的系统,所以我在开发的过程中需要大量的补充学习 WINDOWS 开发的一些规则,像 DirectShow、过滤器等对于我来说都是全新的,一边学一边做让我不得不耗费更多的空闲时间。」 「另一个问题在于,我们的开发人员太少,算上硬件研发,当时的开发工程师还不到 20 个人,所以即使我只是负责多媒体这一块的开发,但我不得不全盘的了解并吃透整个 M8 的系统,因为我们随时可能出现各种系统问题,只有当你对编解码、框架、界面、都有所了解,整个团队的开发效率才能有足够的保障。」 (周详在微软的 Workshop 上)

「在 M8 后期,我在业余时间还会自己再开发一些第三方应用,比如和知名魅友‘自来也大人’合作的一款叫《轻吻一刻》(英文:GentleKiss)的炫机软件,他负责设计工作,我负责开发。之后我还开发了一款任天堂的 MiniSnes 模拟器,在 09 年的时候把它更新到了 2.0 版,当时这款模拟器的功能已经非常健全了。」

(轻吻一刻与 MiniSnes 模拟器)

「M8 整个过程的艰难程度是超出想象的,我现在回想起来觉得不可思议,在最困难的时候,我们不得不卖工程机来周转资金,但 M8 最终还是做出来了,完成 M8 其实和技术实力的无关,靠的全是一群年轻人的那份执念。」

2.你当程序员的乐趣在哪?

「用户的认同。」

「当你通过代码把系统中的功能实现的时候,会有很多用户从中受益,他们会通过用户反馈,论坛等各种渠道对你的成果表示肯定,你会从这当中获得极大的成就感和满足感。」

「当用户在论坛说你产品的好或者坏的时候,我都特别乐于去向他们解答,那种用户与开发者的沟通让我非常享受。」

「而在魅族,当程序员实际上还有另一大乐趣,那就是你的劳动成果你的 BOSS 是看的到的。」

「M8 系统开发的时候,我曾尝试过在音乐的列表分隔线上加上了一些渐变动画,然后有一天,黄章突然兴冲冲的跑到办公室里,问系统里面的动画特效是谁改的?我当时很诧异,等我站起来的时候,他突然很激动的说,对啊,这就是我想要的效果。」

「这件在当时看上去微不足道的事情,对我的内心造成了巨大的影响,我不曾奢望我做好的每一件事情 BOSS 都会看到。」

「但是黄章会,因为他也是你的用户。」

3.开发曾经有多疯狂?

「5 年前,和我最熟的是公司保安。」

「开发 Flyme 前几个版本的阶段,我都是在消耗青春。」
「经常加班到半夜,保安要上来关门了,我都会说再等等,久而久之,保安们也不管我了,直接让我自己把门锁好,所以我和很多保安都很熟。」

「Flyme 3 的开发阶段,当时正值端午节,我们在尝试流媒体播放的新技术时遇到了一些技术难题。」

「我当时也没什么闲心过节,就一个人在公司呆了整整三天,白天在办公室里钻研代码,饿了就跑到小卖部吃碗泡面,上来又继续研究。晚上困了就在办公室里搭了个窝睡下,早上起床就去洗手间洗把脸,胡子邋遢的又继续开工,那个时候我觉得自己对于代码有种痴迷,痴迷于功能设计,痴迷于解决问题。」

「在同事们都过完端午回公司工作时,我才感觉到自己从原始森林里面走了出来,那种重新呼吸到新鲜空气的感觉我想这辈子也就这么一次了。」

4.Flyme 的开发过程中最大的收获是什么?

「我们曾经开放过 SDK 给许多的第三方应用开发者,同时我们会有魅族手机的开发者的 QQ 群,在 M8、M9 时期,我作为主导系统的开发成员之一,会经常解答许多第三方开发者的疑惑,就在那个时候,我结识到了许多志同道合的朋友。」

「比如 LBE 的创始人小饽、拉面、黑雾,他们给M8移植过安卓系统,曾经给 M8 开发出过许多插件的曾半仙,以及和我一起完成了 GentleKiss 的自来也大人,他们在魅族手机上开发了许多非常好的应用,而我也从他们那学到了很多,包括现在在 Flyme 系统的安全方面,我们和 LBE 也有过合作。」

「这几年我也一直在尝试转变职能,从一个单纯的程序员开始转为去做技术管理,现在我对于 Flyme 的思考不仅仅在于代码部分,更多的是整体规划和如何提高整个团队的运行效率,这当中收获的很多已经超出了代码本身的范畴。」

5. Flyme 4 出现的 bug 问题根源在哪?

「我们在开发 Flyme 4 时候,出现了稳定性和功能性上失衡。」

「我们添加毛玻璃算法,添加了全新的界面体系等新特性,在这大量的功能点添加的时候,Flyme 4 的稳定性开始有些刹不住车。」

「比如添加毛玻璃算法后系统资源消耗的增大,内部开发人员在内存使用的规范定义上不够严谨,导致内存消耗经常超出预期,这些问题都是根结所在。」

「我们在出现问题的 2 个月内,开始进行强制性调整。」
(Flyme 4)

「为了提高当时 Flyme 的性能和解决 BUG,我开始实施项目组 BUG 排行机制,我会按照每个项目组应用开发的 BUG 数量情况进行排名,把 BUG 前几的小组召在会议室里面进行反思。」

「我曾在研发内部多次下最后通牒,如果性能优化小组的应用问题在 1 个月内不能解决,那么整个小组我就会全员替换掉,我在那段时间整个人的神经一直都处于紧绷的状态,我们花了整整3个月对 Flyme 4 进行了再改造,在 Flyme 4.5 用户调查数据开始回暖时我才松了一口气。」

「在 Flyme 5 时,我们开始和竞品进行对标,进行内部应用排行。」

「我们需要比竞品快百分之 30,这是我当时下的一个硬指标,同时我对内部程序代码开发做了极其严格的要求,帧率、布局复杂度都需要遵循开发规范来,所有没达标的应用全部重新再来。」

「这是一个很高的要求,一个应用一个应用去比,去测,这种要求把我们的一些开发人员接近于逼疯的状态。」

「手机的性能优化是需要积累的,它需要开发人员不断的去压榨整个系统,这个过程漫长而枯燥,但又不可或缺。」

6.你觉得 Flyme 研发团队的作战能力如何?

「这些年我面试过很多国内其他研发企业的员工,最深的感受就是很多公司,尤其是一些大公司,他们的开发人员更多的专注于非常小的项目,他们的工作很细,每一个员工分配到的是很小很具体的一块,去考察的时候,会发现他们在研发专业技能上更擅长于自己所处的领域,而不太关心整体情况。」

「而我们在培养 Flyme 开发人员的时候,一直希望他们能有全局观念,对于Flyme系统的每一个部分都有了解,这样能极大的提高部门协同的工作效率。」

「我们在很多技术的软件实现上依然有着领先优势,比如 3D-PRESS、指纹识别等,我们的 Flyme 系统在国内也受到了非常多用户和行业内人士的认可。」

「这些年我出去参加过很多活动,也与谷歌、Facebook、亚马逊、LinkedIn、微软等公司做过技术交流,从中学到了很多研发及管理经验。」 (周详在 Google IO 大会上与 Colt )

「 Flyme 的研发是我们最重视也是标准最高的部分,过去到现在都不曾变过。」

7.对于 Flyme 6 有什么样的目标?

「这是一个很宽泛的话题,我们在 Flyme 上想实现的有很多,但我觉得更重要的是我们应该克制。」

「我最近经常在思考的就是给用户增加新功能的度在哪里。」

「在开发 3D-PRESS 的时候,我们曾经开发和尝试过非常多不同的新功能。」 「比如可以在底部重按在两个应用之间进行切换,但我们在测试时发现了很多问题,当用户把握的力度不够好的时候,很容易出现误按,很多用户在用微信语音的时候也会刻意的重按语音按钮造成误触。再比如我们设计了重按下滑出现通知栏,但最后测试发现这种操作隐性不直观,学习成本太高。」

「所以对于 Flyme 6 的新功能我们在添加时需要常常进行更多的审核,它不能让用户不知所措,加功能对于用户能带来多大的价值?」

「还有一个系统未来发展趋势回避不了的话题,智能化。」

「 Flyme 6 应该要更懂用户在思考什么,并且在用户察觉不到的地方提前做出预备行为。」

「另外一点,在系统的设计上我们也会跳出系统本身,从更多第三方应用当中借鉴灵感。」 「比如在早期的 tweetboot 上实现的下拉刷新功能后来的被其他应用广泛使用,我们也在寻找一些更加有创造性的新交互方式。」

「设计上有很多通用设计的法则,Flyme 6 在这些方面都会更近一步。」

8.在智能手机行业干了这么多年,心态发生了什么变化?

「2004 年,当我在当时的摩托罗拉 E680 上开发软件的时候,他们会觉得这是不务正业,觉得这赚不到钱,但我没有理会。当我一头扎进全智达想做第一款中国智能手机操作系统的时候,这件事情在很多人眼里也觉得它不可理喻。」

「你知道在大环境的驱使下,人很难坚持在一件不被认同的事情上再坚持,我庆幸我坚持了下来。」

「如果我在研究生的时候转头做了电脑程序开发,如果我放弃了来魅族寻找新可能的机会,即使我过的比现在好,我也一定会后悔,因为我放弃了一个我觉得充满前景的行业。」

「我做智能手机系统这么多年,但我依然还是个程序员,在我刚开始不写代码转为管理的几个月,曾经有种罪恶感,一种放弃了吃饭行当的罪恶感,而如今当我站在整体的角度去思考技术开发管理的时候,我的压力不再来源于代码,而是责任,如果我不能为办公室里的程序员们的劳动成果负责,我会陷入深深的愧疚中。」

程序员的时代

程序员是理性的,程序员是枯燥无味的,程序员是没什么前途的。

程序员不应该有这么多的标签。

在周详身上,你看不到这些标签。

周详很喜欢笑,经常在聊到过去的丑事时容易笑场,他很注意形象,转为技术管理后,他经常会把自己装点的非常干练,从周详身上,你能看到一个程序员在10年的编程之路上所产生的蜕变。

「人生的幸福就是干自己想干的事,并顺便赚到钱。」

周详是第一批尝试在中国走出一条真正的智能手机操作系统之路的人,如今格局以变,而这批最早踏入智能手机行业的勇士们,依然在互联网的战场上敲击着他们手中的键盘。

我想这是程序员最好的时代。

——————————————

后记:

「2007 年,我扛着大包小包从深圳坐船到了珠海的九州港,当时天下着大雨,我拉着行李箱刚走到公交站台,身子已经湿透了半边,就在我经过公交站站牌的拐角处时,我看到老白打着雨伞,站在那四处张望着,他旁边停着一辆旧款的奥拓,手里举着一张已经被雨打湿了的纸板,上面写着两个字,周详。」

「我过去一直不理解千里马和伯乐,2007 年的那个雨天,我明白了很多。」

走不出国门的 — Chinajoy

走不出国门的 — Chinajoy

Chinajoy 从来都是一个娱乐话题。