Jason Lee
http://blog.csdn.net/jasonblog
http://weibo.com/jasonmblog
【一】前篇
2012年12月13日,一个特别的日子 —— 除了是国难日,两年前的今天,我刚来到杭州实习。
由于今年的经历有很多不方便对外细说的地方,所以本来不想写年终总结的。但今晚走在杭州冬夜的街头,觉得每年都应该给自己一个交待,一个回顾,于是在2012年12月13号晚上,我打开手机上的Evernote,新建了一份笔记。之后如果要放到博客上,再挑一些适合公开的内容。
去年的11月底,我写了《来淘宝的这一年:前篇、生活和工作》一文,算是当时对过去一年的一个小结回顾。在写完那篇博文的那个周末,我慕名去了上海参加第一届PyCon China,并于周天晚上回到杭州,在凌晨时分又随手记了一篇流水博文《第一届PyCon China小记》,也就是在当天下午,我的工作发生了变动。
当时,我的主管小盘和老大无崖子通知我这件事情时,我脑子里瞬间回想起大约两三个月前的一个晚上。那天下班后,看见无崖子还在工位上,我忍不住上前咨询了个问题,关于“为什么集团在云事业烧那么多钱,却在移动应用上反应那么慢,比如阿里旺旺的移动版几乎没投入”。为了确定时间,我凭着大致的印象翻出了冯大辉的一条令我有所触动的微博 —— 华尔街日报中文网当时报道:王坚博士说要两个月内出一款基于专有操作系统的平板电脑。
那时候是2011年9月9号,阿里巴巴在无线上的步伐已经处于落后状态,或者也可以说战略方向上有明显的问题。一年之后,2012年9月19号,我有感而在内网阿里味儿上发了一篇帖子,叫《别人已经在预装渠道开始占领移动端了,我们还在口水战?》,背景为阿里云和Google在打口水仗。彼时的阿里巴巴在移动应用上的步伐仍然落后,高层们也明显意识到这点。
当晚,无崖子的回复是部门也有在考虑移动方面,并且计划先从内部培养起来。
那天晚上聊了之后,我只是稍微捣鼓了下Android开发,并没有深入,因为那时候的我正在吃以前没吃好的饭,比如这篇和这些。出于很自然地好奇心和求知欲,又会重新接触OS、硬件体系,继而再次捧起毛德操老师和潘爱民老师的书籍来温故知新。
说白了,我觉得打基础(修炼内功)是重要而不紧急的事情,应该立即做,而移动开发方面等后面的实际项目来驱动会比较好。
记得有一次部门内部交流,讨论到四象限理论时,我的观点是只做“重要而不紧急”的事情,在必要的时候可以抛弃掉“重要又紧急”的事情,从而让自己回到做“重要而不紧急”的事情的良性循环中。后来,也无关对错,因为我被转岗去做iOS开发了……
【二】低头做事,提高技能熟练度
12月5号下午,我从产业园5楼搬到了7楼项目室,加入了湖畔团队。记得当时一直合作愉快的PD塞小娅同学表达了很大的不满。因为当时旺旺团队的中流砥柱们去做更为重要的事情,比如安全、防垃圾等,让我们这些新兵们在实战中快速得到成长,逐渐在项目中能够独当一面,在人手严重不足的情况下,调走一两个人也是挺伤的。
于是,我开始了过去这一年里的第一个阶段:低头做事,提高技能熟练度。
刚开始负责做的是注册、登录和设置模块。虽然乍看起来挺简单的,但其实要把简单的事情做好也不是那么简单的。比如在后来自我沉淀做回顾小结时,我就关于注册和功能写了两篇不短的博文:登录功能的体验探究和注册功能的体验探究。说到用户体验,一个令我触动的例子是用鼠标关闭Chrome浏览器多个标签页时的交互设计,& 淘宝浏览器也具有这种体验。在这两篇博文里面我同时讨论了新浪微博、微信、QQ和知乎等iOS客户端在注册、登录过程的用户体验。
后来,在看应聘者的简历时,一般我都会下载简历里提到的一些App来体验,关注其中的一些细节,然后就这些体验细节问题向应聘者了解。一般会得到这么几种回答:“这是比较早的时候做的”,“我确实没有考虑到这些问题”,“现在这款产品才刚开始,正要考虑进一步完善”,甚至有回答说“这有什么好讨论的”、“这样足够了”。如果面试官听到这些回答,分别会是什么感受呢?我们都懂的,大多数情况下代码注释 // TODO 后来并不会被Done,大多数想着以后做的事情往往都忘了做或者懒得做甚至赶着做其它东西。我个人认为,把要做的事情Divide成更小的Unit来Conquer时,尽量做好每个Unit —— 这也是我的自勉。当然,很多实际情况下我们都没有办法和精力在一开始就做得完美,即便有一张list来记录需要完善和优化的事情,都难免会觉得计划赶不上变化,所以我在面试时了解这类问题只是作为 中加分/弱减分 项。
随着项目实战的进行,技能熟练度也在快速提高着。
这个阶段是一段相当苦逼的岁月:混乱的项目流程,频繁的需求变更,上游过来的需求缺少一个把控的环节,使得开发人员处于很长一段时间的高强度加班生涯中 —— 来淘宝的第一次通宵也是发生在7楼项目室里。
临近部门年会,除了每天coding到半夜、吃完夜宵后一群码农在冬夜里回家,还需要排练节目,幸亏有乒乓球活动可以活动、调节下。
部门年会前一晚,由于第二天要展示第二版完整的App,我们一群iOS开发工程师和一位设计师在项目室从2012年1月15号过到1月16号(年会当天)。虽然说我负责的部分在15号晚上11点左右就已经做完并和设计师调整好了,但我还是留下来陪大家到凌晨3、4点并肩作战,半夜和清空出去给大家买些K记Junk Food充充饥。
大约凌晨四点钟,我打的回到住处洗漱睡觉,第二天临近中午搭着庆之同学的车去年会会场。
由于睡眠不足,我是抱着吃喝放松的心态到会场的,挑了一张最角落的桌子落座。然而没想到的是竟然有一个“最佳新人”奖等着我,还要上台分享几句,一时有点词穷。因为毫不知情、没有准备,我只能先扯了两句,然后在脑子里反问自己为什么能获得这个奖项 —— 答案是除了手上的事情做得还行又比较快,也就是“ownership”和“用户第一”这两点了。
关于“ownership”,就是热爱产品、对产品有主人翁感,并且有积极主动改善产品和团队的实际行动。如果要用两个词来描述,我觉得是“集体荣誉感”和“责任心”。
提到“用户第一”,我现在都会想起那次年终review时无崖子说的一番话,个人理解为“用户第一的初始阶段是为用户着想,接着需要结合公司实际情况与用户一起考虑”(我顿时觉得之前自己对“用户第一”的认识还是不够深刻的)。
比如:
1. 站在用户角度看问题的时候也需要考虑下公司为什么这么做,理解问题之所在,能够有理有据、更有效地帮助用户,而不是盲目提出问题;
2. 为用户解决问题时,需要考虑到解决问题的态度。用户第一并不是一往无前的“大义”,在与相关部门沟通以及对方解决该问题后,都应该带着善意和感谢,而不是责怪;
3. 用户不总是对的,比如淘宝商城事件。
4. 欢迎补充……
【三】Ownership,不给自己划圈子
由于刚开始的时候我还不熟悉iOS开发,所以没有在功能需求上有过多的发言,一般是来了就做,也当打怪刷经验。毕竟你一个工程师连需求都实现不好的话,凭什么对上游给过来的需求挑三拣四的?
在经历了一段苦逼的岁月后,开发人员都觉得这样下去不行,而且混乱的流程会使得开发的风险很大,最后项目延期还是怪开发不力。
而且随着时间的作用,对产品更具有ownership,我开始和PD讨论需求对用户的价值,以及和设计师讨论交互设计给予用户的体验。
到目前为止,我是做一款产品,就投入到一款产品中。相信这个习惯会持续下去的 :)
在这个阶段里,我觉得“不给自己划圈子”是对自己比较恰当的描述。
在iOS客户端开发方面:我逐渐从单纯地做需求开始,到抽离出一些组件给大家用(虽然有的现在回过头看挺稚嫩的,LOL),比如通用UI控件、CoreData等Model层的便捷封装;再到整理代码、重构细节,比如散落各地的中文NSString、凌乱无序的url映射或者是杂乱无章的消息类型,有点小洁癖的我忍不住把它们整理一番,按照功能模块重新排版以具有良好的可读性,同时和开发同事做好约定以保持;最后就是一些主动的、需求之外的交互体验和功能上的完善。在做这些事情的时候,我想到百淘培训的时候提到的1.1理论 —— 1个人做得再好算1.1,其他人0.9,相乘的结果还是小于1 —— 一个好的团队应该是大家互相进步,达到1.1 x 1.1的效果。所以在做这些事情的时候,我会邀请其它开发同学一起来。再后来,就是能够帮助其他开发同学解决bug、完成未竟的需求。当然,我也得到他们很多指导和帮助。
在服务端方面:作为iOS开发工程师,虽然参与的是移动客户端的开发,但我也会推动服务器做一些相应的改善,比如接口文档的约定和建立、接口的完善,以及一些随着需求演变衍生出来的优化细节(如节省流量)。有时候看到服务端同学的一些数据分析工作,不免想起以前管理几十台服务器、分析Squid日志的时光,利用expect处理ssh密码交互,然后结合Python和shell去各台服务器拉数据汇总分析(大点的日志文件一般就split成多份分析后再汇总),最后就是生成csv和web报表了。想想那时,所有的脚本都是用系统自带的vim敲出来的,连提示功能都没有,现在估计不行了~~~ T_T
在产品和交互设计方面:作为一名内测用户,在开发过程中我会关注实现出来的效果将会带给用户什么样的心理体验。比如这个功能让我用起来会是什么心情,这个布局让我看起来会是什么感受,可以改动下产生更好的体验吗?如果我接到一个需求我自己都找不到用户价值,我会去找产品经理沟通讨论;如果我看到一份设计稿,我觉得心理上有不舒服的感觉,我也会向设计师阐述我的感受。当然,并不仅限于反馈,我还会基于现有设计上的用户体验或者需求价值上表达我的看法,最终寻求到为什么这么做/设计的所在。简单来说,一种设计、一个需求之所以产生,要有其道理、价值所在,正常情况下可以说服他人。在无法达成一致的情况下,也尽量不要出大招,比如“这是需求,你的义务是开发”、“这是老板要做的”之类的,因为这是伤敌一千自损八百的招式。在万不得已使用了大招的情况下,也要设好目标,在后续用户反馈的情况下来验证结果,从而可以挽回放大招消耗的MP(其实也就是行政权力上所带来的威望)。
在运营方面:我会和运营的美眉探讨产品对用户的价值,怎么样才能推向用户且不引起用户反感,而是确实让用户觉得这款App不错。在探讨产品对用户的价值上,可以确定大致的目标用户,从而寻找比较合适的推广渠道。在这一方面比较遗憾的是,我个人认为产品有其价值所在,但所处的位置和大陆氛围、公司氛围有点那个啥。顺便提一下,目测证明运营美眉是优质单身的森女,有意者可以…… LOL
在服务用户和技术支持方面:为什么要做一款应用、一样服务,因为有人需要它。所以,我们应该清楚地记得我们为什么要这么做,要服务谁 —— 我想,这也是用户第一位列阿里价值观首条的原因吧。在这一方面,我觉得自己做得还行。关注用户体验,认真收集、处理用户反馈以解决,遇到折腾、强奸用户的需求时强力抵制等。这里要特别感谢服务端的同学,菲戈和苍坤,有时候周末都陪我一起处理线上用户遇到的问题到晚上。
在团队建设方面:我一直推动着诸如编码风格、Code Review和技术分享等事情,以期团队在技术方面能够互相学习和进步。但是在这一块我还是挺遗憾的,由于移动领域项目的快速迭代,这方面成效不大,我错失了不少学习的好机会,但我还是会主动做一些学习分享,比如这篇就是先在内部分享过的。在项目管理方面,我也会这对加入团队以来遇到的问题提一些看法,尽自己的绵薄之力让团队更好一分。
不给自己划圈子,和ownership息息相关。
在此,感谢合作过的各位,感谢对我的支持和包容 :)
【四】变化与挫折
接下来是一段拥抱TFChanging的时期,以及个人的一些境遇导致心态浮躁、失了分寸。
这一个阶段历经的人很多,每个人的体验和看法都不同,涉及的信息也比较敏感,就不写了。
同时我也意识到自己需要把重心移到技术领域的耕耘上,比如做 这些和 这些,以追求 笔墨本身。这方面重心的转移,有一部分也是受到大招的影响。
在想清楚自己要什么后,心态也就逐渐归于平静(之前在看哲学书的时候写过这么 一篇相关文章)。
有时候会想,大多数人玩游戏时都喜欢玩Hard模式,等真正体验人生这个无存档游戏时,咋就……
:)
【五】感谢亲们
一路走来,要感谢的人有很多,由于这里主要讨论这一年来的工作,所以下面只列出了一部分(排名不分先后)。如果我这里没提到的,你看到“感谢”并想起自己,那么我就是在心里感谢过你的。当然,如果你不信,也可以留言骂我…… LOL
首先,我想感谢下旺旺发展部的同学们。这是个工作氛围良好的团队:谦逊的工程师们踏实做事、乐于帮助他人;细致认真的测试工程师们专注负责、沟通愉快;为用户着想、懂得取舍的产品经理在需求预研前会积极和开发同学沟通;还有作为坚实后盾的技术支持的同学们,以及每个产品都需要的运营同学们……如果有兴趣,欢迎关注此微博,或者到此一游。
我觉得遇到旺旺发展部是我的幸运,好比在学校里遇到好老师(链接1,链接2)的那种幸运,让你拥有批判精神、不畏于权威。这里的牛人们,不论层级比你高多少,都是耐心指导、心平气和,给了我很多帮助。
我想特别感谢下无崖子潜移默化下对我的影响,让我更沉下来、更踏实些,以及很多次的指导和帮助以及肯定;特别感谢元悲、元伤和照虚对我的帮助,包括工作和生活上的,感谢你们包容我很多;特别感谢梦筝、小盘和慕华在我工作上给予过的那么多支持,以及文叙、庆之等各位同学的帮助;特别感谢塞娅同学给予的愉快合作……
也要感谢湖畔团队。感谢清空、无灵和宜萌给予的指导和帮助,感谢无锋的很多指导和帮助,感谢服务端同学的支持,尤其感谢性格很好的菲戈,感谢乒乓球团体带来的业余生活,感谢各位美女给我们一堆码农带来眼福,感谢老莫在后续阶段的帮助,也感谢伯通的严格要求——对我们来说也是一种鞭策。当然免不了要感谢我们的小饭桌团队,让我尝了那么多次浙大留学生餐厅价廉物美的食物,尤其感谢苍坤点了那么多次菜。
感谢篮球队,尤其感谢宜秋订了那么多次场地,菲戈接送我们那么多次,经纪人和啦啦队的鼎力支持,智光无私地为我们摄影 —— 一切尽在不言中,因为我好困 ZzzZzz。感觉自己对于文字的把握能力还是有待提高,长文一来就有点难产,也很耗神。
P.S. 文中使用到的照片,有两张不是我本人拍摄,一张是Apple官网的,一张是气质森女的……
——End
一年还有很多,比如聚会、旅行、读书、看电影……
走得远了、久了,有时难免忘了为什么出发,不妨适时驻足,回望一下过去,从而在浮躁社会里追求一点inner peace :)
不忘初心,方得始终。
Jason Lee
2012-12-27 星期三 0:35 杭州