Skip to content

编程三年:我的程序员成长经历

2016-11-06

Loading...

很久没有聊工作相关的话题。最近有不少朋友在微博、知乎或者博客留言,其中有不少在校学生,询问我职业相关的建议。

考虑了一下,与其零碎、分散地回答,不如专门写一篇文章,聊一聊我这几年的工作和成长经历。

别看我过去这一年的博客大多是晒妹纸和旅行。

其实,我真的是一个程序员。

我的大学专业是公共管理,关于我为什么从一个文科专业转向IT,在我的2015年度回顾Review of 2015 年度回顾中有聊到大概。

当然,个人的选择无可复制性,经验仅供参考,总之,还是很庆幸自己进入了这个行业,做着喜欢的工作,当上了一个快乐并忙碌的张江男。

虽然非科班出身,但是也算是颇为幸运,一开始工作就进入了国内的一线互联网企业,尤其是在猎豹和阅文的工作经历,更是让我受益匪浅。

首先说一下我这几年的职场经历,聊一下在不同阶段涉及的技术栈,谈一下成长的一些经验和感受。

我的工作经历

  • 2015年11月~今(上海‧阅文集团‧腾讯文学‧用户体验部)
  • 2015年5月~2015年10月(上海‧小蚁科技)
  • 2014年7月~2015年5月(北京‧猎豹移动‧用户体验部)
  • 2013年10月~2014年7月(北京‧猎豹移动‧用户体验部:实习)

技术栈Timeline

猎豹移动是我工作的第一家公司,所在部门的是UX用户体验部,偏业务驱动部门。从实习到离职,一共在猎豹工作了将近一年半。从事的开发工作主要是页面重构。

那段时间里,做了不少PC端和移动端的 H5活动需求,也参与了几个产品项目(金山影视M站、清理大师应用市场、猎豹抢票微信版、某内部电商项目)的开发,主要使用HTML,CSS,JS和PHP,积累了不少重构和移动端开发经验,这一年对自己的基础巩固和提升起到了很大的作用。

其他关于在猎豹的经历,我在知乎在百度、阿里巴巴、腾讯等公司工作是种怎样的体验?又是怎样的氛围?曾经写过一篇回答,有兴趣的可以去看一下。

后来由于个人原因离职来到了上海发展,加入了小米生态链的小蚁科技,相比猎豹完善的大部门,小蚁Web团队人数不多,很多事情并没有太多其他资源支持,也是从这里开始涉及服务端开发,在项目中用到 Nodejs,实践全栈开发。这段不长的工作里,自己接触前端工程化、自动化的解决方案并且用到实践,独立开发了一套供内部 iOS测试应用分开的后台系统,自己从服务端到 Web 前端一个人全包,虽然产品和代码谈不上精细和规范,但是这段经历,给自己后续转入服务端开发打了一个基础。

关于现在的公司,首先分享一下张鑫旭老师(坐我隔壁桌)前段时间写的文章《找到适合自己的前端发展方向》

阅文原先属于腾讯互娱,为了更大的发展和后续上市,类似于新浪微博和新浪,蚂蚁金服和阿里巴巴的关系,独立了出来。

目前我所在的是 YUED 用户体验设计部,主要是腾讯文学和原先盛大文学的人员整合而成,基本上都沿袭了腾讯的文化和福利。

回到技术,加入阅文,一方面是看中平台,另一方面是看中团队。一个靠谱的团队Leader对于个人、尤其是对于新人的成长特别重要,在这里特别感谢团队老大Rains和瓦力,两个leader原先在腾讯上海业务部门从业多年,有着十分丰富的团队、项目管理经验,言传身教,这一年对于我不管从技术还是架构能力上,都有了很大的提升。

入职之后,首先要面对的就是前端架构的全新调整。阅文Web业务繁多,从PC端的起点中文网、创世中文网到移动端的QQ阅读,以及众多的后台项目,有着大量的业务需求。有些项目有五年以上的历史,带着沉重的历史技术包袱,原先的开发模式(前端仅做重构、交由后台套模板)无法满足可预见会大量增加的新Web业务需求。

头一两个月,主要就是熟悉腾讯的技术架构和技术相关平台,接手了一个PC端的全站改版(重构),也做了几个移动端的运营活动,2016年后,就组成封闭开发项目组,投入到了起点中文网PC站改造项目中,主要负责前端架构的设计和工作流自动化、工具化。

这一年里,结合腾讯的发布流程、平台和公司业务的需求,高度定制了一套前端开发脚手架,在部门内部推进开发规范,另外,用 Koajs 写了一套分别服务动态化和静态化服务的 Node 框架机,架构了当前阅文的前后端分离中间层框架,现在这套架构承载着阅文的大部分Web业务。

具体的技术栈就不多说了,关于起点改造Web架构,会做一次项目层面的技术分享,有机会分享大家Keynote。

0.为什么当程序员

选择当程序员,自然而然就先得聊到职业选择问题,不谈虚的,不错的收入,是吸引很多人加入互联网行业的一个重要原因,从我自己和周围朋友了解的情况来看,大多人拥有挺不错的生活品质,至少拥有过一个有品质生活的能力。

工作几年,或多或少会关注一下市场和职场的动态,看到一句话:

选择,比努力更重要。

如果你未来是打算从事互联网行业,尤其是从事技术岗位的工作,那么很大概率上,你会拥有一份挺不错的收入。

除了收入,另外当然就是喜欢,开心地赚钱和麻木乃至痛苦地赚钱,对于一个人的幸福而言,可就是天壤之别了,对于我来说,从事目前的职业,可谓是十分幸福的一件事情。

互联网公司职员结构普遍年轻化和高学历化(我司本科以上学历比例应该90%以上),技术、产品、设计等岗位的工作富有创造性,所接触的产品和业务动则涉及百万、千万乃至上亿的用户量,挺有成就感的。另外,互联网这个圈子相对而言更加纯粹,尤其对于技术人员来说,不怎么用关心办公室政治和生意场上乱七八糟的事情,能够更加专注做自己的工作,还是挺爽的,哪怕真不幸遇到了奇葩公司,互联网行业的人才高流动性(有数据表明是平均17个月跳一次槽),相对而言也是很容易去其他公司的类似岗位,所谓用脚投票。

1.1我们更倾向于招什么样的程序员

不同的公司,选择候选人都有着不一样的标准,来谈一下我所呆过的这几个公司招人的一些经验和感受吧,主要谈猎豹、阅文和腾讯系。

同事中清华、交大、复旦、海归、普通院校的均有,学历是一个敲门砖,对于HR来说,学历也是一个极高效筛选较优质人才的手段。对于实习生和应届校招生,如果是名校则自带光环,面试官筛选的时候也会优先考虑,至于为什么,这一点就不过多谈了,鸡汤可以有,那种「反智」「反学历」的天涯和贴吧文,就算了。如果你还在校,尤其是还在一个不错的学校,那么请珍惜你的机会。

应届生拥有名企的实习经历(BAT,网易、美团、小米、猎豹、新浪、搜狐等等),同样是一个极大优势。应届和校招生,项目经验一般比较少,面试主要考察基础编程能力和思维能力,一个聪明的年轻人,哪怕尚缺乏技术积累和项目经验,稍微一培养,潜力巨大,腾讯校招培训这十几年的经验在这块。

当然,学历并不是绝对和硬性标准,对于有着强大技术能力或者职场经历的开发者来说,依旧是很欢迎的。只不过从过去看简历的经验来看,低学历高能力的人,很少见。

社招或者其他途径的话,名企和外企工作经历同样大加分,毕竟从一个大型公司出来的开发者,正常情况下,也不会差到哪去,毕竟其他公司HR已经帮你做过一遍筛选,尤其是有BAT等企业经历,对于团队和HR来说,基本就是面谈聊Offer和双方的感觉了。

1.2做一个程序员该准备什么

下面这一部分主要是针对应届生,或者刚刚毕业一两年的年轻开发者,尤其是前端程序员。

**读书:**HTML、CSS、JS、Web性能、Nodejs,每一个语言和领域都有一系列优秀的书籍,尤其是JS相关,更是有一套从基础到进阶到技巧的书籍,如果你还在学校,请利用好你图书馆的资源(大多学校图书馆应该都有这些书),好好地学习基础,尝试跟着书籍章节,在电脑上写一遍相关代码,了解HTML(5)为什么这么设计,CSS的属性和特性,JS的语法和设计模式balabala,特别特别实用。刚刚学习前端的那半年,我基本上每天都在图书馆看Web开发相关的书籍并跟着实践手写代码。

**Code:**理论是一方面,实际动手写代码也是一方面,这里的实践,除了跟着书籍、教程写demo,另外一方面,强烈建议从自己的需求出发,尽量地多实践具体的项目。之前曾经谈过,我之所以能够改变职业方面,从一个文科生转向一个程序员,跟大学头两年自己折腾独立博客Wordpress有很大的关系。一开始我就是一个小白,跟着网络上的大量建站教程,买了一个虚拟机搭建Wordpress博客,后来又想有个性点的主题,自己分析一些好看的网站的HTML,CSS和JS,尝试自己开发theme,改成自己的个人网站(当然仅仅是个人项目),过去做过的几个WordPress主题,就是这段经历的产物。

**通识:**这里说的通识,更多的是一种跨界的能力,对于现在的前端开发者来说,有其是偏UI层的前端开发,了解产品设计理念、交互,对美学的把握和感觉,转化到实际工作中都能带来产品和项目质量的提升。程序员虽然自带很强的技术属性,但请不要仅仅把自己定位成一个技工,在工作的时候,任何一个业务或者需求下来,一方面能够从技术的角度提出自己的专业意见,另外一方面能够了解产品需求为什么要这么设置,颜色为什么要这么搭配,交互为什么这样。当你带着一种通识的跨界能力去审视一个工作需求的时候,就是1+1>2了。对此,在这里强烈建议程序员们,千万不要禁锢自己的知识面,可以多看看设计、产品相关的书,也可以多看看心理学相关的书。

1.3 还需要点什么

从0到1是一个问题,从1到N也是一个问题。作为一个程序员,尤其是初入职场的程序员,除了本职的开发工作,还需要注意点什么?下面我再谈一下自己的感受和体验吧。

1) 身体

没错,不谈技术、不谈Code,首先依旧谈身体。还是那句老话

身体是革命的本钱,留着青山在,不怕没柴烧。

「钱多、话少、死得早」是经常拿来黑程序员(其实大多是自黑)的一句话,在这里尤其强调,一个健康的身体,比什么都重要。

个人比较注重Life && Work Balance,不是很喜欢国内有些公司变异了的加班文化(具体的情况你懂的)。尤其是跟了现在的老板之后(我的Leader、总监基本不安排加班也不支持加班),更是深刻体会,在这里,首先说观点,一个项目,只要(老板、领导、经理、Whoever)能有合格的项目管理能力,一定能让自己的员工在可预期的时间内,完成项目。

当然,由于公司、业务阶段的不同,偶尔的加班还是难免的。对于大部分程序员来说,身体健康始终是一个不可忽视的问题,回想在北京工作的那一年多,经常加班到晚上十点之后(凌晨2、3点也不少),身体承受着不小的压力,那段时间硬是靠着每天逼着自己做至少1个小时的运动来保持精力。现在相对而言生活就规律多了,一般能做到晚上12点睡觉,睡足7小时以上。

大多公司每年都会提供体检的福利,不要浪费,持续关注自己的健康状况,不要因为病痛而耽误人生。

2) 学习

工作是学习的开始,对于程序员而言,工作之后的学习比在大学里的照本宣科和放羊式的自学更加贴近实际需求,许多时候,我们去了解一门新的技术,掌握一个新的语言,熟悉一个框架,就是为了工作。

在有限的时间里,尤其是有限的非工作段时间里,如何坚持学习,提高自己的技术能力,不仅仅需要一颗好学的心,也需要一点学习的方法和技巧。

一般而言,我是从「解决实际问题」的角度来安排自己学习的计划,比如说在最近的公司项目中,为了开发能支撑千万访问量级、并且可拓展的Node服务框架,首先我先较为系统地学习了 Nodejs和 Express、Koa的基础(买了几本书),把网络上比较好的教程和最佳实践资料基本都看了一遍,由于用到了一些ES6语法,又买了ES6语法的书,当然,这些是最直接贴近某个项目的具体技术,其他的诸如Web性能优化、HTTP相关,自己也都看了和积累一些资料。

与此同时,Github上面有不少优秀框架和模块,去了解和学习这些框架和模块的代码设计、编程方法和风格,尝试用在自己的业务中。

当然,对于程序员来说,最好的学习实践方法还就是直接在项目中运用,在这里就见仁见智了,如果是团队,需要考虑这个新的技术大家的接受能力和把握能力,一定需要评估新技术的风险,玩脱了就不好了。

3) 交流、思考、积累

上面洋洋洒洒谈了许多,大多是自己个人的体会和经验。在这里,要特别感谢自己的几位好朋友Sivagao海浪、郭宇、江昪。这几位也都是先后在国内几家著名公司任职。

Sivagao和郭宇是我大学校友,江昪是我入职猎豹最先认识的朋友,几位比我先工作一两年,我刚入职场的时候,经常跟这几位朋友交流技术、职业发展等话题,当然,也少不了旅行。这几位「前辈」ノ( ´ ▽ ` )ノ给了我许多有益的帮助和建议,让我少走了不少弯路。

成长路上,不要闭门造车,多跟同学交流、多跟学长学姐交流、多跟同行同事交流,不管是技术也好,职业发展也好,诸多益处。

在北京猎豹工作的时候,公司提供了不少资源,参加了不少技术会议,虽然现在各种Conference如云,还经常被吐槽沦为广告大会,但是在那些技术会议上,尤其是W3Ctech在北京组织的几场走进名企前端交流会,干货多,从那里了解到了百度、美团等公司正在使用的技术和项目实践。上个月,我们部门也专门申请了资源,北京上海两地的同事一起去深圳腾讯总部,参加WebRebuild大会,与腾讯和微信的前端交流了一番,顺便跟自力、大猫、余果几个大神真人都面了个基。

这里的好处就是,现在的公司项目中一旦有什么类似需求,时常能想起其他公司或者团队分享的一些案例经验,然后顺理成章借鉴参考,应用到我们自己的业务中。

写博客八年,不管是读书、技术还是旅行,都是我思考和记录、积累的过程。最后,再谈一下思考和积累。

写作和分享,是一种能力。

不管是专业也好(设计、产品balabala),爱好也好(读书、摄影、旅行),尝试地把自己的经验、感受记录下来,强烈建议诸位在空闲时间,让自己多写作,也可以做几次keynote分享,可以写技术,聊设计,谈乱七八糟。

写作和分享,一方面可以锻炼自己的思维的逻辑性和组织能力,另外一方面,也能给自己打造影响力,于自己发展,于团队招聘,都有益处。

就我所知,腾讯ISUX、饿了么、360奇舞团和大搜车团队在这块做得还不错。拿腾讯ISUX团队的博客为例,有技术、有设计、有吃喝玩乐,部门内部有轮岗写博客机制,制度上要求了团队成员参与创作和分享的过程中。

写在最后

今天身体不适,请了个假,抽空在家写了这篇文章。写作也是我的回忆,时光如白驹过隙,屈指一算,加上实习工作都快三年了,从一个连「连JS都不会写的渣,到会写点渣JS,再到终于能写点JS」。

有时候看到团队里的实习生们,看到他(她)们专注Coding、谷歌、调试的样子,倒也想起了2013年11月,冬天,拖着一个行李箱,一个人从广州跑到北京,下了机场大巴,站在小西天的公交站,开始我第一份实习工作之前的那个周日晚上。

望你我,不忘初心,继续成长,继续前行。

最后,我会不定期地收集各位的问题:关于工作、关于学习、关于成长、关于旅行。会挑选一些问题统一在我的博客和公众号回答。