2015 Career
时间轴
回顾一下,13年毕业,在第一家公司呆了近2年,年初4月从西安来到上海,在一家游戏公司做了3个月,没选择转正,匆匆离开,了断了自己对游戏工作的朦胧的挂念。十一后,继续到上海找了份互联网公司的Android职位,不愿再折腾,决心好好提升下移动端技能,拓展技术视野,为以后能独当一面去努力。
新环境学到的
入职2个月多,逐渐适应了工作节奏,相比之前公司的经历,有以下几个非纯技术的收获:
1.app一个月一次版本迭代:
需求确认+方案/1周 >>>> 编码实现+自测/2周 >>>> 测服+发布/1周 //大概这个节奏
2.团队工作
相比之前一个人一条龙单干——和客户谈需求,自己设计界面,写代码,测试,写后台,写说明书etc——现在和公司以下部门协作——产品,UI,服务器端,测试——深刻体会了工作中 “沟通 + 协作” 的重要性。
2.1 及时让别人知道你的想法: 新入职,组长分配的任务,有什么疑问即时抛出...大家相互获得正确的信息,才能有准确的判断。
2.2 主动听取别人的想法,意见,经验,业务知识,等,避免错误的假设。
2.3 和任务相关的人一起制定协议,先设计好再去实现。
2.4 先融入团队,然后是团队工作。
2.5 others...
3.代码和项目管理
以前也使用git做代码管理,但仅限于“版本恢复”和“合并代码”这样的基本功能的使用。
目前的项目:
主要有三个分支:
develop: 做新功能。
release: 每个版本功能开发完毕之后,一个tag,verX.Y.Z这样的,之后在此基础上测试并改bug。
master: 线上版本,只做一些hotfix。
4.工作“线上”化
公司内部事务几乎都是在线方式完成:
4.1 使用wiki管理各种文档:行政制度、接口文档、团队文化、技术分享等等,都在wiki上写,便于大家及时看到。
4.2 使用teambition做项目管理。 主要就是 “日历 + 团队 + 项目” 的过程控制。
4.3 使用mantis管理bug,使用rap来mock网络请求的响应json数据。使用jekins打包集成。
4.4 OA、bug管理、企业邮、群、讨论组 等,一切以【及时高效】为 原则。
提升战斗力
可能工作2年左右的朋友都开始有这种感觉:很多知识都会,而原理又不是很懂;很多功能网上查查都能做,又好像做得不够优雅;知识点杂乱,没有自己的体系;没有从无到有构建一个项目的经历,包括代码和设计文档等;不知道下一步怎么提升...
关于原因,我的体会是:
知识体系:一直处于“具体功能怎么做”的层次,包括看书、博客、视频、网上搜等,都习惯于遇到问题,被动去学习获得解决方法——主要就是获得能改一改的代码。
项目经验:只关心完成分配的任务,没有站在全局思考问题,整体把握产品和代码,无“大型、优秀”项目的锻炼。
我想如何突破:
@ 看进阶类的书、博客。
@ 找到优秀的完整开源项目,学习其框架。
@ 经常用到的库,如Volley、常见api包,阅读源码,掌握类结构,理解原理。
@ 学习服务器技术,web前端,拓展技术视野。
@ 官方文档是个好东西,以前都没好好看过,其实training和api guide部分还是值得过一遍的。
@ Launcher、Calendar、Gallery3D、Contacts,以及API demo和示例代码,都有很多好的设计思想和最佳实践在里面,是时候感受优秀代码是什么样的时候了。
计划
目前在公司担任的是“中级开发”的职位,深刻意识到和“高级开发”的距离真不是“那么一点点”。
除去“管理路线”的选择,偏技术路线上,也是分两方面的:
知识面广:能负责起整个项目的框架,照顾方方面面,成为“(移动端)技术负责人”。
专业深度:某方面玩得深,去大公司做高端的技术,比如浏览器,视频,地图等。
我的打算:
学习一个优秀完整的开源项目,主要是搞出自己一套框架。
做一个自己独立的app,作为知识的实践积累。
因为之前游戏开发的好奇心吧,继续捣鼓点3D的小东西。