我曾是诺基亚员工,关于这家公司,我想告诉你这些
2009 年,N900 的发布曾给 Nokia 带来短暂的希望,虽然这个希望很快就随着 MeeGo 破裂了。Nokia 衰败前的最后时刻是什么样的呢?这篇文章以作者亲身经历反映出大厦将倾之前的芬兰科研界和工业界的状态。
序幕
06 年夏天,我从武汉大学软件工程专业本科毕业后,选择去芬兰的赫尔辛基理工大学留学。一是因为芬兰的教育免费,二是因为芬兰是诺基亚和 Linux 的发源地。
我给自己设定的目标很简单:硕士毕业后进诺基亚工作。但我那时对诺基亚所知甚少,对手机软件开发更是毫无概念。我当时最感兴趣的专业领域是 Linux 软件开发和互联网协议,但我并不明确这些知识如何能应用到手机行业。
幸运的是,我很快就找到了答案。06 年底的一个晚上,一个在诺基亚研究中心实习的学长给我展示了一款诺基亚的新设备。它有一块触摸屏,比普通手机屏幕大很多,但依然还适合放进口袋里。它没有手机功能,而是一款上网用的掌上电脑,用户界面风格也和诺基亚的智能手机大相径庭。最有趣的是,这个设备的操作系统是 Linux,所以很多桌面 Linux 程序可以轻松移植到上面。而诺基亚会给这个系统添加更多的互联网功能,比如聊天和语音通信(VoIP)。
这款设备是 770 ,是诺基亚研发的基于 Linux 的移动操作系统 Maemo 旗下的第一代产品。很难描述我在 06 年时看到它的兴奋感受。那是一个还没有 iPhone,iPad 和 Android 的时代。移动设备,Linux,互联网通信。这是我想要从事的领域。
07 年夏天,我拿到学校实验室的暑假实习职位,课题是研究多媒体应用在不同设备间的实时切换。我们小组开发了一个流媒体视频点播应用,可以在一台电脑上中断,然后立刻切换到另一台电脑上继续播放。实习结束前,一个给诺基亚做外包的公司给了我一个 Symbian 软件开发的职位,但我选择留在实验室做硕士论文。我想做多媒体在移动设备和电脑间的实时切换。教授欣然同意我用诺基亚 770,在 Maemo 平台上继续这个项目。
07 年 9 月份,我的暑假实习同伴去了挪威,辅导我们的学长去了美国,整个项目只剩下我一人独自摸索。我想在桌面电脑和移动设备间切换 VoIP 通话。那时诺基亚已推出了第二代 Maemo 产品 N800,系统里也有了基于 SIP 的 VoIP 功能。诺基亚开源了 Sofia-SIP 软件库,并附带了一个简单的命令行 VoIP 程序。四个月内,我在这个 VoIP 程序上实现了通话切换功能,并顺利的以此为题完成了 硕士论文 ,最后凝炼发表成一篇 国际会议论文 。
2008 年 4 月前后右,我顺利找到了一个做短信和彩信网关的软件公司的全职工作,以及一份诺基亚研究中心的实习工作。我已下定决心要去诺基亚参与 Maemo 设备的开发,所以虽然研究中心的实习工作和 Maemo 无关,我还是选择了诺基亚。我相信进了诺基亚的门,一定能找到机会去 Maemo 部门。
我的预想没错。
第一年 N900 (2008 – 2009)
- 上
08 年 9 月,结束诺基亚研究中心的实习后,我加入 Maemo 软件部门的实时通信组,正式成为诺基亚的员工。在推出三代掌上电脑后,部门正在研发基于 Maemo 的第一款触摸屏手机。
真正的工业界工作很快让我感受到其与学术界的不同。最开始的四个月,我并没有太多参与 Maemo 手机的研发,而更多的是学习之前的代码。即使手头上的任务不多,也不是关系重大的项目,比如改一个软件库里的 bug,也得大面积地阅读源码去理解问题。有些软件模块没有完整的单元测试,不知道小小的改动会不会导致错误。
其次,我们组开发的即时通信软件用一个叫 Telepathy 的开源软件框架。因为这个框架和我们的项目一起发展,API 时刻都在变化,又没有很好的文档,学习起来颇有难度。
另外,我在学校里没用过专业的软件开发工具,所以在调试代码,使用版本控制软件,Linux 命令和脚本等等方面,与我们团队那些职业软件工程师,有着非常大的差距。
我那时最缺失的是对软件构架的理解能力。我们这个领域的商业开发,很少用到复杂算法,代码逻辑都比较简单。但大的软件项目有较为复杂的构架和抽象层次,如果没有文档和单元测试的支持,只能从大量代码中去理解设计意图。这是我跨过的首道门槛。
08 年时,诺基亚已经宣布要转型成为互联网公司,对各类互联网应用和服务投入了很大的研发资源。但除了 Ovi Share 和 Map,Maemo 团队还没有和诺基亚其它互联网服务部门有正式的合作,Maemo 设备上的客户端软件也以集成诸如 SIP, XMPP/Gtalk 和 Skype 等第三方服务为主。
到了 11 月,诺基亚研究中心的一个项目组找我们组合作。他们在 N95 上开发了一个基于 SIP 的多人视频聊天应用,在服务器端聚合视频,再发送给每个手机客户端。经理让我去测试他们的服务,并分析集成这个服务到我们软件体系的可能性。这个多人视频聊天项目的服务器后端只是原型开发,没有大规模负载流量的能力。我们组是个客户端软件研发团队,同样没有能力部署商用服务器。这个合作最终不了了之。那时公司内的许多互联网项目,诸如微博,地理信息签到,用 GPS 跟踪运动状态等,都没能得到商业化。那是在 Facetime, Twitter, Fouraquare 和 Nike+ 风靡世界之前。
现在回头看来,08 年底是诺基亚由盛转衰的开始。虽然公司还是全球手机市场的第一名,而且非常盈利,但由于迟迟不能推出能和 iPhone 竞争的高端触摸屏手机,股价一直在跌。大概 11 月的时候,我参加了针对新员工的培训。一个负责 N 系列的高管自信地说,诺基亚就像一艘大船,转向总是很慢,但一但转向,会势如破竹。他相信诺基亚已经完成转向了。在不到一个月后的诺基亚大会上,OPK 和 Anssi 用一段华丽流畅的视频宣布了 N97,第一款 N 系列触摸屏手机,诺基亚对 iPhone 的直接回击。在当时的诺基亚,大概很少人察觉到了衰落的迹象(N97 在半年后上市,用户界面远不及视频里展示的那样流畅)。
Maemo部门实时通信组合影
-
下
09 年初,我的工作开始步入正轨。从掌上电脑发展为手机,我们组的工作是把 Maemo 系统的电信和 VoIP 语音集成到同一个电话程序,把短信和 IM 集成到同一个聊天程序,并提供统一的账号管理程序(SIP,Gtalk,Skype,MSN等)。我和一个俄罗斯人,一个乌克兰人,一个巴西人以及两个印度人组成了多国部队,专攻 Skype 集成。我主要是做 Skype 联系人信息导入电话本,注册新的 Skype 账号和 Skype 群聊。
那时在欧洲和中国,Facebook 和 Twitter这类社交网络尚未无处不在,而我在国内的同学们更流行用 QQ 和 MSN 的签名档来彰显个性或通告近况。我萌生把 IM 好友的签名档聚合成类似 Facebook News Feed 和 Twitter Timeline 的想法。利用我们组的即时通信软件框架,我开始在业余时间在 Maemo 手机上实现这个想法。
2,3 月份的时候,周末加班开始了。这在诺基亚其他部门并不常见。我们 Skype 小组暂时停止项目,投入到聊天程序项目组中。Maemo 使用的 GTK+ 用户界面框架还不能轻易混合对话框,表情图片,文本以及超链接等聊天软件需要的元素,所以项目组决定用内嵌网页的方式实现聊天界面,结果碰到了大量 bug 和性能问题。后来 HTML5 应用在 iOS 和 Android 手机平台上兴起又衰退,Facebook, LinkedIn 等公司都绕过同样的弯路。
在连续几个周末加班修改了大量聊天程序的 bug 后,Skype 项目才重新开启。09 年夏天临近时,虽然很多应用的功能已经成型,但整个 Maemo 系统还是问题不断,界面流畅度也非常糟糕。芬兰的夏天,工业界的进度通常会变得缓慢,因为大部分员工都会修一个月左右的暑假。但 Maemo 手机必须要在年底推出,我们部门的 VP 提前结束了暑假,也推出了限制 Maemo 部门员工修暑假的政策。他发了一封鞭策大家的内部邮件,提及他的女儿在对比 iPhone 和 Maemo 手机原型后,发出了“难道诺基亚就这种水平”的质疑。
界面流畅度问题是 Maemo 机的卖点”多任务”功能造成的。09 年的 iOS 3 就不支持第三方应用的多任务,为的是确保系统时刻都有足够的内存和 CPU 来保证 OS 和当前应用的流畅。 底层软件团队在 7 月份奇迹般地修复了多任务模块,系统顿时在运行上十个程序时也能流畅自如。
8 月底,诺基亚公布了第一款 Maemo 手机 N900。其高端的硬件,流畅的软件,漂亮的用户界面和多任务操作,以及强大的浏览器,让对 N97 和 Symbian 失望的科技媒体称赞不已。Maemo 系统缺少第三方商业软件,但它根植于开源社区,有一批开源热衷者为它开发或移植应用。部门也鼓励内部员工以个人名义发布开源应用。我发布了 签名档聚合应用 ,以及一个插件把 Twitter 回复和搜索集成进系统的聊天程序。我的同事则发布了聊天程序的桌面微件,地图导航,系统设置微调等应用。这是 Maemo 在诺基亚内部渐渐成为主流的开端。现在回想起来,那时是我们部门最有活力和拼劲的一段时期。
2009 年 N900 发布后的部门聚会
注:由于作者工作较为忙碌,他与诺基亚的故事尚未完稿。爱范儿(微信号:ifanr)将会与谭苗青先生保持联系,为读者带来更多的分享。
附本文作者其他文章: 《ifanr 周年庆专稿:芬兰的 Geek 传统和 Maemo 成长的土壤》