说起来真是很幸运,我从一个非常普通的211大学计算机专业毕业,从选择的计算机专业到今天还没有离开。从大学一毕业我就开始从事移动软件的开发,有应用,有平台,很幸运我还没有离开。我曾经在很多的移动设备上做过开发,有的只是应用,没有在系统里面留下过痕迹,有的是平台,她静静的藏在一个角落里,也许你永远也感觉不到他的存在。这篇文章记述那些已经随着岁月而消逝的移动设备,以此缅怀我已经逝去的青春。
第一个 Acer S10
你听说过胖友这个词吗?知道Palm OS和PDA的朋友肯定都已经超过30岁了。Palm公司是个人数字助理(Personal Data Assistant)的发明者。他们生产的个人数字助理(PDA)产品曾经风靡全球。Palm公司除了生产PDA硬件产品还开发了PalmOS操作系统。这个系统是一个开放的系统,第三方开发者可以通过系统的应用程序开发接口(API)开发应用程序。同时Palm公司还授权其他公司生产采用PalmOS软件的硬件设备。这款设备就是来自台湾的Acer宏基开发的一款个人数字助理。采用的操作系统是Palm OS 4.0中文版,请注意是中文版,真正的原生中文版。当时的Palm OS还没有原生中文版,是通过一个外挂中文平台CJKOS来替换系统资源实现汉化的。关于CJKOS和他的开发者是杜永涛先生,请大家自行Google。
说起来我在这个项目里面的工作真是比较汗颜,我用CodeWarrior打开应用程序的资源文件,把翻译部门翻译好的中文敲进资源文件里面替换掉英文字符串。另外我还经常干的事情就是由于替换了英文字符串有时候会导致中文的标点符号跑到了一行的开头,遇到这种情况我就斟酌文字,在字符串里面加上或者减去一个“的”或者“了”什么的。搞笑吧,但是当时就是凭借着这样的笨办法,当时系统里面上千个字符串几乎没有出现标点符号在一行开头的错误情况。我和这个设备很有缘分,公司年会的一等奖就是一台S10,我非常幸运的中了一台。当时是2002年,一台这样的设备超过两千块。我2005年搬去北京的时候把他丢了。很有纪念意义的一台设备。里面有趣的事情还有,以后有机会和大家分享。
第二个 联想ET180
ET180是国内上市的名字。Windows Mobile 2003系统,该设备由当时所在公司代工生产型号是SP230,依稀记得还有海外版本,挂的其他牌子。该设备联想直接采购贴牌。该设备和上一个设备比,硬件上有极大提升CPU从摩托罗拉Dragonball 33Mhz迅速提升到Intel XScale 400Mhz. RAM从16M提升到64M。具备电话功能。Palm系统迟迟不能拓展支持电话功能的设备,只有Treo一个系列支撑大局,而且迟迟不能扩展到其他设备制造商。在智能手机的童年,微软的Windows Mobile系统智能手机,埋葬了Palm的前途,从此以后第一代智能设备的领导者Palm日渐衰落。但是貌似微软不是很把Windows Mobile当回事,或者说微软没有能够意识到伴随着互联网大潮,移动设备能够扼住移动互联网的入口。Windows Mobile只是微软操作系统版图上得一个小小的分支,随手播种而已。我至今还记得当时微软提供的免费得Embedded Visual C++, 良好的编译调试环境。远远超过后来的塞班Symbian.
我曾经怀里揣着ET180在上海晃荡了好一阵子,但是总也找不到方向。我在这个产品中好像是做了一个文件管理器,记得当时系统里面没有提供树形控件,我们好像是实现了一个,我负责UI部分实现。我还很清楚的记得当时打开Windows目录需要很长时间,UI控件要等到底层把所以的该目录中的节点插入到一棵逻辑上的树以后才会开始显示,用户要在这个界面等待超过20秒。 ET180跟现在Android设备长得倒是挺像的。
第三个设备 Palm Tungsten T5
这时候已经是2005年初了,TT5已经推出了好一阵子了。我那个时候已经不怎么关注Palm的设备了。知道Palm系列的朋友一定熟悉从PalmTT开始,TT2, TT3为了保持机身长度不超过口袋深度,特地在机身下部增加了一个滑盖设计,被胖友(玩Palm的朋友自称)们戏称为“脱裤子”,输入的时候要下滑滑盖,为用户增加了繁琐的步骤,另外也增加了机械故障的概率。TT5终于去掉了滑盖。从而成就了在Palm玩家心中的一代机皇。
我当时为公司曾经做过的一款应用程序做维护升级,对新加入的虚拟Graffiti 进行支持,Graffiti英文手写输入法,同样是Palm公司的一大发明,具体细节请大家自行Google。20年过去了,至今我还没有遇到体验超过Graffiti的英文输入法。TT5中Graffiti手写区域终于变成类似于今天iPhone和Android上输入时候的效果,用户点击输入框,一个虚拟键盘从屏幕底部弹出。当时做得升级就是当虚拟键盘弹出的时候,你需要响应相应的事件,大概包括,改变窗口的大小,改变滚动条的位置,你在应用程序中需要定义你的界面采用什么样的策略来响应这类事件。当时维护的应用程序是台湾市场占有率第一的一款电子词典程序,提供3万,5万,8万字等规格的英汉互译词典,支持屏幕取词等等。我为这件事情工作了大概两个月左右的时间。每天手里把玩这这个设备,喜爱之情总是油然而生。这个之后,我离开了生活了三年半的上海,去北京开始新的生活。
第四个设备 诺基亚 7610
一代神机诺基亚7610,采用SymbianS60 v2操作系统。从诺基亚的惊世之作7650开始,一代通信设备厂商开始发力,诺基亚开始横扫智能手机市场,凭借着出色的通信行业背景,加上专门为电话定制的操作系统塞班,将Palm彻底挤垮,将微软仅仅的挤在高端触屏智能手机的角落里毫无还手之力。你还记得当时满街诺基亚的情景吗?你还记得你要是拿出一个巴掌大的多普达接电话会招来多少诧异的眼神么?就在诺基亚马上就要踏上世界之巅的时候,我开始了多彩的甩鞭程序员(塞班程序员的屌丝说法)生涯。当时你要是不会写塞班程序,你都不好意思说你是做移动开发的。
我记得我当时从上海移居北京,加入了一家规模不大的民营公司。当时几乎所有的民营公司都觉得移动互联网的大潮就要到来,马上就要井喷。移动网络,移动终端都已经具备,移动互联网应用的金矿等着你去开采;很多人都以为移动互联网的入口就是人手一个的诺基亚。可惜他们都猜到了开头,没有猜到结尾。说说我的开发吧,我为当时如此奇葩的S60编码风格所震惊,为烂到不行的CodeWarrior集成开发环境感到愤怒,为初学者要写一个Hello World要两天时间而抓狂。即便如此,一众民营公司依然为自己立下了要做移动领域的百度,要做移动领域的QQ,要做移动领域的QQ游戏的誓言。我所在的公司就立志要做移动领域的在线游戏王者。我还记得当时和我一起并肩作战,每天中午去上地7街东头路边小店吃饭的战友。一个游戏策划,两个美工,两个S60客户端开发,一个S40 J2ME客户端开发,一个服务器端开发。这就是我们的全部开发团队。在做到了用户可以登录,可以一起对战一盘五子棋,一起对战一盘连连看的时候,我离开了。当时的程序就是运行在这台神机上。
第五个设备 诺基亚N73
诺基亚N73,采用塞班S60 v3. 当我接触到这台手机的时候诺基亚已经在中国站上了“紫禁之巅”。各种手机层出不穷,各种设计竟相亮相,有的高端大气上档次,有的低调奢华有内涵。我凭借上面一家公司积累的一点点经验加入了一家芬兰外包公司,诺基亚的金牌服务提供商。这是一个华丽的转身,从一个连应用程序都写不好的小程序员,变成了塞班S60平台维护开发大军的一员。举个例子,这就像是一个苦逼的VC++程序员被微软招聘去了开发Windows XP一样,从此你就是组织内的人了。你是能够看到系统源代码的人了。刚刚进公司加入一个项目,用户界面控件库的维护。但是真的就是维护,最常处理的问题就是界面在阿拉伯文或者希伯来文等少数几个从右到左显示的产品当中不能正确显示。正在无聊当中的时候剧情突然出现重大转折,我加入了一个超级牛X的应用程序开发项目。该应用程序超级华丽,是一个RSS阅读器,PodCasting,和网络收音机的组合体。绝逼的移动网络应用,高富帅必备。这个项目的整个过程也是峰回路转,跌宕起伏,可谓是山重水复疑无路,柳暗花明又一村。从此以后这个项目一直是公司里面的一个传说,被用来在公司内部方方面面的项目管理培训中用作失败的活生生的例子,填补了公司项目管理方面的多项空白。如果没有这个项目,公司的项目管理经验积累会失色不少。也就在这个项目以后,北京公司基本不再接合同总额固定的黑盒项目。所接的基本是按时间收钱的白盒项目,就是卖人头。也许是就是我们项目组的这些人,不经意间改变了公司车轮前进的方向。
虽然说项目是个失败的项目,但是所有人的收获还是相当大的。团队成员迅速成长完成了技术积累,经过这个项目洗礼的开发人员,后来都成为不同团队的骨干。可以这么形容这个项目:手术很成功,但是病人死了。这个项目当中有趣的事情特别多,咱们以后有机会再唠。
第六个设备 诺基亚 E90
诺基亚的这个大块头不是像它前面几代Communicator系列用的是S80或者S90系统,里里外外都是塞班S60。在这个时候S60轰轰烈烈的发展到了第三个版本,S603rd Edition。在第三个版本当中,有一个显著的改变历史方向的变化,严格的安全机制被加入系统当中,系统中的应用程序需要一定的授权才能够访问系统中的重要数据和操作,比如通讯录,比如网络连接。这些授权的取得不是由用户控制的,而是由已经被诺基亚收入囊中的Symbian Foundation控制的,应用程序需要经过Symbian Foundation测试和签名才能最终安装到大众的手机当中。在应用程序签名机制初期,控制的非常严格,我记得当时上海有一家公司代理中国的签名操作,据说一个应用程序签名到发布需要一个多月,花费也过万。这对于机构开发者来说,钱不是问题,时间是个问题;对于千千万万个人开发者来说,签名的费用是无法负担的痛。就这样历史的车轮悄悄的改变了方向,一大批有活力的开发者转向的更酷的iOS(当时苹果的生态环境还没有形成), 技术更先进的Android。也许说签名机制改变了车轮的方向有些武断,但是恰逢其时,iOS和Android开始崭露头角,一波巨浪正在聚集能量,但是诺基亚却放慢了脚步,收紧了对系统的控制,想要去满足莫须有的企业用户的安全需求,难道想要磨尖了刀子去干死黑莓吗?
到我们参与这个项目的时候已经是后期维护阶段,这款手机的内屏界面进行了很多的开发,一块800*352的屏幕需要对传统的S60界面进行定制和修改,典型的联系人,邮件,图片浏览器等变成了左右两片区域,列表区,预览区。我不记得Communicator系列有后续产品了。
第七个设备 Nokia 5800
诺基亚5800面向大众消费者的触屏手机,来自通信巨头诺基亚,卡尔蔡司镜头,高品质音乐播放。但是这些怎么去和操作无比流畅华丽的iPhone 3G和经过华丽转身变得时尚大气的谷歌G5 Nexus One。电阻屏的小屏幕,无比闹心的触控笔和输入法,成了无数人的槽点。一代巨头开始走向没落。
有一点值得在这里书写一笔的是从2008开始Nokia的软件开发开始全面采用Scrum进行项目日常运作。我还很清楚的记得我当时和诺基亚一个叫PMC(Project Management Centre)的部门的人一起参加了UPerform优普丰在北京举办的Scrum Master Certification的认证培训。当时这些来自诺基亚的PM对Scrum的价值观和实践表现出了相当的抵触。但是让我们记住,这是诺基亚开始转向敏捷,转向Scrum的开始,并且最终形成了Jeff Sutherland口中的诺基亚标准的迭代开发。诺基亚的这次转变还带动了他的供应商们的转变,从此我也成为一名Scrum Master,开始了移动开发领域的Scrum实践。我们是真正的Scrum,不是“We use Scrum, but…”。我们成功在多个项目中部署的Scrum,没有But. 我们有拥护Scrum的价值观,我们采用Scrum的所有准则和行动,我们不断改善。。。改善。。。
第八个设备 诺基亚 N8
诺基亚蓝图中的翻身之作,首次采用多点触控电容屏,1200万像素摄像头。一体化全铝机身,全新设计的Symbian 3系统。整个公司为这款产品投入了全部心血。这时候整个塞班阵营只剩下诺基亚一家苦苦支撑,塞班公司被诺基亚收购,以前跟在屁股后面的三星,索爱众兄弟纷纷转投安卓阵营并且都已经推出了成熟的,强有力的旗舰产品在市场上攻城略地,当然,掠夺的都是昔日大哥诺基亚的地盘。该产品市场反响平平,销量欠佳。昔日大哥落寞的背影配着“我不做大哥好多年”的歌声,离我们渐行渐远。翻身之战的失败,导致了诺基亚高层变换,大家口中的“木马”入主诺基亚,之后是一系列的大动作,把塞班S60整个软件产品线卖给了埃森哲,停止对Qt大规模开发,结束塞班S60产品线,转向Windows Phone阵营,三年以后被微软收购。一系列了的动作,“木马”干的如庖丁解牛一般漂亮。这款产品基本上也是我所在的项目在塞班S60平台的绝唱。团队的Scrum已经有模有样,两周迭代,稳定的输出。每次迭代的Planning meeting,团队充分沟通,切分任务,承诺需要完成的任务。迭代的Review Meeting团队能够交付经过测试的可发布的软件,同时交付自动化单元测试,集成测试,自动化测试代码覆盖率达到标准,客户在Review meeting上可以实际操作软件给出反馈。迭代Retrospective Meeting,团队开始采用多种多样的形式进行有效的讨论和回顾,制定符合 S.M.A.R.T原则的改善计划,从小处做起,每次新的迭代都会有新的改善活动引入。团队很完美,但是我们改变不了S60整个产品线结束和项目组解散的命运。团队的成员把我们的Scrum实践带到了别的团队生根发芽。
第九个设备 索尼Xperia LT25c
在安卓大潮已经席卷全球势不可挡的时候,我所在的公司的移动开发团队被迫从塞班平台转向了安卓平台。这是一个相当后知后觉的决策,此时安卓冰淇淋三明治(Ice Cream Sandwich)已经发布超过半年,很快安卓的世界就将迎来果冻豆(Jelly Bean)。我和另外一个同事被派遣到索尼移动北京分公司的办公室作为On Site软件工程师,加入到索尼的开发团队当中一起工作。时间不是很长,但是很有幸体验了索尼公司的工作流程和环境,以及亲身经历的工作氛围和企业文化。非常荣幸的认识了索尼移动SIM&STK开发团队的同事,虽然一起我们做相同的技术领域,但是他们做安卓我们做塞班,很少有机会交流,半年的相处和他们建立了很好友谊。当时团队的领导Fred Zhou是一个很好的人,从诺基亚转到索尼,所以有很多共同语言和相同的做事风格。总之是很愉快的一段经历,特别是偶尔到大厦的25层天台上抽烟聊天,俯瞰大山子和798,真是天高云淡,心旷神怡。
第十个设备 索尼LT22i/Xperia P
参与这款手机相关的工作已经是2012年国庆节之后了,这款手机已经是一款老手机了,索尼把这款手机的系统从姜饼(Ginger Bread)升级到了冰淇淋三明治(ICS),又打算提供新的升级从冰淇淋三明治(ICS)升级到果冻豆(Jelly Bean )。我所在公司的波兰分公司承接了整个项目,索尼本身并不是参与很多,整个项目的过程有我所在公司主导。我个人非常有幸被选中去欧洲参与项目的启动工作,有了人生的第一次国外之旅,而且是去的处于欧洲心脏的捷克共和国。欧洲之行持续了6周左右,平时工作很繁忙,但是周末的时候就有时间去游历欧洲,所以抽空游览了布拉格,维也纳和捷克著名的保存了中世纪风貌小镇克鲁姆洛夫(Cresky Krumlov)。结束了欧洲之行后回到北京,我在项目当中继续参与维护SIM&STK以及RIL层相关的工作,抽出了一些时间学习。当时项目组里面的架构师是安卓开发领域的大牛,安卓源代码分析名作《深入理解Android》卷I卷II的作者邓凡平。他鼓励团队分享所学并且鼓励团队把自己的所学整理发表,最终项目组成员在《程序员》杂志发表了几篇高质量的文章,有关于MTP的,有关于系统调优的,有关于蓝牙的。这种研究学习的思路对我有很大的影响。
自此北京的职业生涯告一段落,我为了孩子的教育成为了逃离北上广一份子。目前已经在古都西安安营扎寨,希望有机会在西安的程序员活动当中认识更多的朋友。