记得去年这个时候看到很多同行写了年终总结,当时只工作了1个月的我觉得很是高大上。转眼一年过去了,从第一家公司来到现在的这家公司,无论技术上还是思想上都成熟了一些,巧的是简书在这个时候给我们这个平台来写年终总结。贵在参与,也为了自己,写一篇吧~
2016年,是我事业起步的第一年,现在回头看去,这一年大致分为五个时期:
- 技术基础建设期(1月~5月):从iOS小白的小白到独立上线app。
- 技术快速成长期(6月~9月):简书更新30篇文章,粉丝达到1000+。
- 写简历找工作期(10月):8家面试,3个offer。
- 适应新的公司期(11月):新项目1个月内上架。
- 明年方向定位期(12月):决定研究Hybrid app开发。
下面开始按时间顺序分别总结一下每个时期里我的所做所思。
基础形成期:2016年1月~5月
我的第一份工作就是iOS开发,从2015年11月入职,熟悉了一段时间的项目代码,在12月份又接了一段时间的测试工作,所以真正开始做iOS的时间应该是今年的1月份。
从开始接手简单的需求到独立负责完成前公司第二个项目上线一共经历了5个月的时间,在这个阶段里,我从一个连UITableView的代理都不怎么会用的小白中的小白逐渐成长为一个独立负责app上线的小白。
由于开始的时候基础太差,每天都累得不行,因为当时的我,就算一个特别小的问题都要去问谷哥或者度娘,所以几乎每天都去无止境地在浏览器里输入问题,搜索问题的答案,几乎每天都有记录下来的代码段,几乎每天都有需要改的bug(因为自己之前代码写的不好需要重写)。
我记得当时为了赶上进度,不给大家拖后腿,每天经常是2点之后睡觉,觉得代码可以了就在家里上传代码。而且因为用眼过度+用脑过度,有时会眼睛疼,头疼,甚至偶尔在睡觉之前眼睛看东西的时候出现了散光的情况。
在前公司的主项目在渡过了两次迭代之后,也就是今年3月份的时候,紧接着要上线一个新的小项目,而iOS端开发的任务就落在我的头上。虽然伴随着各种懵逼,各种恐惧,但我还是欣然接受的,因为像这种突破舒适区的事情还是接下来为好,我心里还是知道这是一个难得的锻炼自己的机会。
可能也是因为这个项目还是比较简单,而且一些功能集成了第三方的SDK,在开发的时候渐渐没有显得那么吃力了。但我仍然记得很清楚地记得有好几个夜晚是自己最后从公司走出去的,因为当时安卓那边是有两个人一起做这个项目,而且接口也比较简单,后端的童鞋也比较轻松。
到最后结果还是不错的,我这里结束得没有比计划晚,而且比安卓提早开发完毕了。当时看着app store里自己开发的app上线了,心里还是很开心的,毕竟对于一个工作刚半年的人来说,这个机会挺难得的,而且我把握的还算不错。
这个时期应该是我成长得最痛苦的时期,因为在这个阶段里,我经历了iOS开发的“从0到1”的阶段,也可以理解为骑自行车的“第一蹬”。也就是,我“上路”了。
快速成长期:2016年6月~9月
虽然说程序员需要自学,但是以我之前的水平,只是搞懂公司现有的代码,完成项目需求就已经耗尽了我所有的休息时间,几乎没有其他的时间用来学习。
但是经过了近半年的历练,对公司业务的驾轻就熟了。在开发公司项目后,余下的自己的时间越来越多了,于是就找一些资料进行学习。在这段时间里,我的学习成果主要包括两个:
1. 第一个成果:简书博客
我的学习方式是采取以:“面向博客学习”的学习方法。
- 具体说来就是:将学习到的东西进行反复总结,能达到让任何人看懂的水准。
- 它的核心思想:能让其他人理解了自己才算是理解。
- 最后总结一句就是:笔记即博客(笔记总结完了就直接能到发布博客的水准)。
除了能更好地理解知识,我认为分享技术的好处还有:
以下是我分享的其中三个专题:
还有几篇质量不是很低的文章:
2. 第二个成果:开源库
哎呀,说出来都不好意思,因为这个库很简单的。但是因为是写总结嘛,就要面面俱到,虽然贴出来大家能看,但是总结毕竟还是给自己写的。
这个开源框架主要封装了一下iOS的FMDB框架,用来操作本地数据库的。因为之前公司的需求总是和多用户的用户信息离不开,所以就想写一个可以随时增删改查多个用户信息的数据库,我记得当时想法出来以后,从写代码到上传到Github,连续写了10个小时,天都亮了,额。
最后还是附上传送门:GitHub:SJUserInfoManager
这个阶段是我成长得最快的时期,基本完成了从菜鸟到新手的升级。更让人欣慰的是,我的成长历程留在了简书博客里,它是可见的,也为我下阶段换公司打下了基础(因为都体现在了简历里,为我的求职添加了砝码)。
3. 找工作期:10月。
由于上家公司前景不是很理想,渐渐地,很多人都离开了,而且项目需求也渐渐变成修边幅的那种,于是我也为自己打算,准备换一家公司。
准备简历和找工作的经历就不赘述了,大家可以看我上一篇文章,详细地介绍了10月份找工作的心路历程:
2016年10月求职记:iOS工作经验不到1年,在1个月内拿到了3个offer
这篇文章可能由于标题起的还不错,而且我写的也比较实在,阅读量已经4000+了,我记得当时一个上午不到3个小时就已经超过2000了,而且留言也有很多,我也逐一认真回复,因为我真心很想帮助那些有疑问的同行,让他们少走弯路。
如果还是要在这里总结一下这段经历的感受的话,我想说的是:人要凭做出来的东西说话,其余的都是虚的。如果有,该出手时就出手;如果没有,低着头,沉住气,把它做出来。
4. 适应新公司期:11月
工作找了一个月之后,在11月来到了新公司,这里的规模比上一家大一些,技术团队60+人,仅iOS端就有10个人,除了我之外几乎都是2年以上工作经验的(是的,我很幸运),而且其中也有会PHP的,会Java的,会Javascript的iOS,感觉自己只会做iOS好low啊~~
刚进入公司后,就和另外一名新进来的iOS开发者联手负责了一个新项目,这个新项目需求还是比较简单的,开发3个星期就结束了,第4个星期已经在app store审核通过了,非常顺利。
在这次开发中,我学会的全新技术点是:
- MVVM框架的实际运用,并体会到了MVC框架的不足。
- iOS图表的实现(使用CAShapeLayer和贝塞尔曲线绘图)。
而且在写代码之外,通过积极地沟通,逐渐认识了一些负责设计,负责接口,安卓那边的小伙伴,以及产品经理,建立了很友好的合作关系,反正一切都很顺就是啦~~
新公司不乏各路高手,在这60多人的技术团队里,有做技术20年+的技术经理,也有清华高材生,也有美国,英国留学生,也有一些朝气蓬勃刚入职场的小伙伴,感觉以后可以向他们学习的东西蛮多的。
5. 下阶段方向抉择期:12月
在项目的第一版成功上架后有一段时间是比较闲的,除了研究下一版要使用的图表以外,我有时间去思考下一步要去学什么。
为什么我在思考这个问题呢?因为iOS这一行业开发者突然增多的客观情况的存在,我们心里都很明白今后如果只会iOS开发已经不够了,况且程序员这一行业本来就变化很快,每一年最好要接触一个新的语言。而且我自己心里也很明白:现在到了该选择的时候了:我该学哪门语言呢?
Python?
新公司的技术团队里,有20+的人是python开发,接口就是用python写的。而且新认识的小伙伴也有做python的,随便聊两句就能指点我一二。再说,如果会写脚本,爬虫啥的,岂不是感觉屌屌的?而且机器学习,大数据什么的也可以做的。
PHP?
PHP7的性能提升了很多,而且部署能力强,很多公司的后端都用PHP,所以它的需求很大。况且我已经学会了iOS,如果再学会PHP,岂不是等于全栈了?
Java?
如果学会了java,那么搞定安卓开发也就是时间问题了。再说java也可以写后台,所以是不是学会了java就真的移动端和后台自己全能包了?
Javascript!
在我今年面试新公司的时候,跟我交流过的公司一共有10个左右,这其中,问我会不会混合开发(hybrid app develop:native app develop + web app develop)的就有5个。而且我也有问过之前的同事,他们的公司也几乎都有混合开发。于是我觉得这是个趋势,甚至可能已经开始了。就好比很多商城应用,很多界面都是通过H5来实现的,只是在本地做了js与OC的交互。
有的时候人就需要现实一点:对我来说,与其去学跨度很大的后端语言,为什么不用相同的时间学习混合开发呢?而且对于混合开发来说,我已经了解了native app 开发了不是么?
所以,我暂时放弃了能写脚本的Python,需求仅次于Java的PHP,能写安卓的Java,果断选择了Javascript(当然还有Html5和Css)!
而就在前几天,在公司项目第二版开发完成后,马上报名了优达学诚的前端工程师纳米学位的课程:优达学诚 前端工程师纳米学位
昨天已经提交了第二个作业:
励志在明年成为一个独当一面的hybrid app developer~哇咔咔
最后的话
在这一年里,我不断成熟了自己的iOS开发技术,也定下来了下一年的学习方向。当然,iOS开发还是既需要深入的,因为毕竟native app的一些实现能力,短时间用web技术还是很难超越,比如CPU和GPU密集型的任务还有就是底层的优化,与C,C++混编等等。但是毕竟现在native 与web的界限变得越来越模糊,有必要去学习web的一些东西,以备不时之需。
最后点个题:
学习提升的前提是总结,没有总结,就很难一步一个脚印,踏踏实实地走下去。就好比航海,如果不经常看星座,一步步总结之前犯下的错误,找方向,调整路线,是很难达到最终的目的地的。
而对于大多数人来说,提高生活质量的唯一途径就是通过工作。但是,如果工作本身对这个社会的价值不是很大,那么就很难拿到可观的薪水,就算该领域的高手,可能也不如那些工资高的行业的新手。
所以,现实一点来说,就像选择一个高薪的工作一样,选择一个需求比较大,前景可观的编程语言还是比较正确的。我很实在,说的都是些实实在在的话,当你想转一个跨度比较大的行业,一定要量力而行,而且好好做做研究,研究一下这个行业是不是在走下坡路,毕竟你不是一个人,你背后有养你的父母,有朋友伙伴,可能还有你的人生伴侣,把握好方向很重要。
可能你会说:
- 我年轻,想做什么就做什么;
- 语言只是工具,学什么都行;
但是我会告诉你:
- 人生的每一个选择都很重要,你现在的生活取决于你曾经的选择;你今后的生活取决于你现在的选择。
- 人的精力有限,领域跨度过大的时候一定要仔细考虑,这个社会需要的是T型人才,而这个T的根基是这根竖!
人最危险的就是不知道自己不知道,所以嘛,没事多想想,没有坏处。
最后感谢在身后支持我转行的父母和陪伴我的女朋友,么么哒~
最后的最后附上本次互动的链接:程序员专题征文活动|GoodBye 2016,Welcome 2017
请大家多多参与啊~
————————————————- 2018年7月17日更新 ————————————————-
注意注意!!!
笔者在近期开通了个人公众号,主要分享编程,读书笔记,思考类的文章。
- 编程类文章:包括笔者以前发布的精选技术文章,以及后续发布的技术文章(以原创为主),并且逐渐脱离 iOS 的内容,将侧重点会转移到提高编程能力的方向上。
- 读书笔记类文章:分享编程类,思考类,心理类,职场类书籍的读书笔记。
- 思考类文章:分享笔者平时在技术上,生活上的思考。
因为公众号每天发布的消息数有限制,所以到目前为止还没有将所有过去的精选文章都发布在公众号上,后续会逐步发布的。
而且因为各大博客平台的各种限制,后面还会在公众号上发布一些短小精干,以小见大的干货文章哦~
扫下方的公众号二维码并点击关注,期待与您的共同成长~