iOSDev的日常提升

谈谈自己平时是如何提升自己的,以及对些问题的看法

Posted by Shen Quan on September 18, 2015

iOSDev的日常提升

0.前言

iOS开发3年了,近日询问带的新人平时是如何学习提高自己的,通过回答,感觉还是稍欠了点。

当然,每个人刚开始都会比较没有方向,不知道怎么去找学习的方式,这没关系,重要的是你要有去找的心,大家都是喜欢积极主动的人的,平时爱折腾更好。

那怎么才算是好的日常提升方式,这个就仁者见仁,智者见智了,这里我说下自己的一些历程和经验,也许能帮助新人开个小头,后面就看各自造化了,要是觉得方法不好,笑一笑,让道走吧。

1.初期

我刚开始做iOS,是自学的,那时移动刚起步(iPhone火了之后),公司也想搞搞移动端,虽然最后项目搞了一半给毙了,不过也让我接触到了iOS,入了它的门。

那时候,资源又少,Mac电脑又贵。狠狠心买了Mac电脑之后,我就开始买书、网上找教程做练习,照着教程敲代码,看运行,搜搜百度、博客(舍不得几块钱买VPN上谷歌,那时候也菜的不需要上谷歌查问题),没有固有的提升方式。

2.上升

换了公司之后,日常的零碎学习方式显得费力不高效,经同事提醒,开始微博学习之旅(之前只是把微博当成短新闻平台,小看它了)。

那个时候在微博上搜索接触到了现在iOS界的一线开发者devtang(唐巧),onevcat(王巍-喵神),高质量的博文真的造福了不少开发者,看完了博客之后,有一种没吃饱的感觉,好像有个小人在喊着"more more more",这种对于知识的渴求感,特别带劲,感觉很好。

幸运的是,巧哥和喵神会时不时的微博转发一些他人发布的好文,那时我把每一篇转发的文章,都看了,并且存入游览器收藏夹,如果转发的文章很对胃口,我会查看这些文章的作者,将他的博客也记录在收藏夹中,同时微博对其进行关注。而这些被关注的人,同样也是“活跃分子”和技术达人,也会发布或转发他们觉得不错的文章,这样,我所能看到的优秀的内容滚雪球一般越来越多,而且微博和博客也不再是我唯二的信息来源。

我的信息来源有以下

  • 综合性的科技信息门户网站

1.Medium(老外的博客站,其中不少iOS的好文)

2.Hacker News or StartUp News(我早期时候经常看,用来拓展下视野还是可以的)

3.Appcoda(老外的专注iOS的博客站)

4.Raywenderlich(苹果开发的百科全书)

5.dailytekk

6.CocoaChina(大家都知道的)

7.有好多,就不一一列举了

  • 个人的博客

这里就不举例了,文章后面我会打包成OPML(用于RSS订阅阅读)

  • 邮件订阅

稍微举几个例子:

1.iOS Goodies

2.OurCoders (那个可爱的胖子,大家应该知道的)

3.Natasha The Robot (Swift相关的)

4.码农周刊

5.iOS Dev Weekly (一个胖老外,质量很好)

6.SwiftSandBox

  • 微博

  • Twitter

  • 国内/国外的技术书 (巧哥、喵神都出书了,可以关注下)

  • Github (最大同性交友网站,你懂的)

  • 还有些零碎的 UI 设计网站(例如 Dribbble (用来找动效灵感很不错))

  • 微信公众号

有人找不到资料来看,我的资料却是多的看不过来

那么这些来源都是怎么来的?

一生二,二生三,三生万物

文章你不仅仅只是看最核心的那部分,内容中提到的网站、附加的推荐等衍生的东西,你也要看,这些东西可能你不懂,很正常,那么就打个中断出来看下,中断完了再回来继续,或者右击“打开在新建标签页”稍后阅读,有时会发现新天地。有同学会问:我应该专精于一项,干嘛还要管别的,好,这个问题留着,我后面再说。

有了这么多的信息来源,怎么整理,全放在收藏夹里,那岂不是要疯了,这就要善用工具了,作为程序员,编程的时候每天都在用工具,或者自己写工具,那么对于这些资料类的,也要善用工具,说下我日常是如何学习提升的,在其中穿插工具的使用:

  • 1.每天回到家,打开邮箱,看到有一些订阅邮件发过来了,我会每封订阅都打开,开始看标题,感兴趣的我都将对应的文章链接打开(对于新的东西,我基本都会感兴趣,不过,目前不看Windows相关,不看Java,也许以后会看吧),这个时候,我的Safari会是满满的一行。

  • 2.然后,就是打开微博,看每条微博(不关注闲杂人等,减少垃圾微博的出现),微博往往内容是写的不错的一篇关于XXX的文章,推荐~#对应链接#这样的格式,对于我很感兴趣的主题,直接打开链接(我基本是选择直接打开链接的);感兴趣,但不急于看的,会在评论区回复@我的印象笔记,懂得人都知道是什么意思,我这边对新人解释和推荐的下这个工具:印象笔记,它是一款记录信息的工具,如其名,笔记,经过相关的注册等操作,微博中@我的印象笔记,能够将此微博同步记录到你的印象笔记账号当中,用作整理;而一些不太重要的信息,不保存又怕后面可能会用到,我会直接简单的微博收藏下。这样看完10页微博,一顿操作下来,我的Chrome也会打开的满满的

  • 3.接下来,就开始看Safari和Chrome中的内容,我的一个原则是 我亲自打开的网页,哭着也要看完。这里介绍第二个工具Pocket.在看的过程中,遇到不错的文章,第一遍看了还不太入味,需要反复回味的,我会将它直接存入Pocket,Pocket是一款和印象笔记类似的工具,不过呢,Pocket更加注重于稍后阅读/反复阅读,框架更轻,更强调阅读的意味,而印象笔记更强调记录的意味,我个人是更喜欢Pocket的,印象笔记越来越大而厚重了。回到刚才,看完网页内容后,我会我按照对它的定性,选择保存在Pocket中还是印象笔记中。

  • 4.文章那么多,一个晚上当然是看不完的,所以我的Safari和Chrome一直都是打开状态的,可以等到周六周日,时间充裕了,集中消灭待看文章,记得看完分类到Pocket或者印象笔记中哦。提醒一句,别关掉浏览器,你一但关掉了,其中的文章你也许就再也不会去看了,指不定就错失了好内容,多可惜。(这里提下,Mac电脑的好处就是,长时间不关机也没问题,盖子一合上就好了。)

  • 5.有些文章或者知识点呢,当前你看了未必很有启发,未必就懂了,没关系,保存着,记着你看过这个东西,往后你做开发的时候,突然就会灵光一闪,想到:“卧槽,那个算法这边用着好像正好合适啊”,或者同事在边上大放厥词的时候,你突然记起:“等等,你刚才讲的那个我看到过,和你说的不一样啊,我找下!”

  • 6.好的文章,不仅会进入我的Pocket,我还会顺带看他博客中的其他文章,进而将作者的博客加入我的RSS订阅当中。这边又要介绍个工具,RSS阅读器Reeder,毫不夸张的说,Reeder是我用过最好的RSS阅读器,没有之一!之前一直没有比较满意的Mac桌面用的RSS阅读器,直到遇到Reeder。Reeder是收费的,不过目前他们正在开发beta版本,~~可以去官网下载beta版本用,体验很不错Reeder-Beta~~beta版本已失效,只能购买正版了。移动端的话,也可以购买Reeder,不想买的话可以使用免费RSS-Newsify

  • 7.Reeder订阅,我会在文章最后打包放出OPML文件,大家可以使用Feedly账号导入,再用Reeder导入Feedly账号,以清零Reeder未读文章为目标,冲吧少年!

  • 8.除了上面的,还有一个,Github是一定要使用的!一定要使用的!一定要使用的!开源的力量很伟大,想想我们的先辈,那时候没有开源,什么都没有参照,什么都自己来,有多艰辛可想而知,现在的时代,对于开发来说,好的不得了,不懂的东西,找Github上开源的看,star下,看实现原理,看设计结构,哇,这能学的东西真是太多太多。

  • 9.实践中一个比较有效和重要的工作/学习方式:写Demo。系统控件不熟练?写Demo;新的代码结构感觉想不通啊,写Demo;block这样写到底有没有循环引用,写Demo。我的电脑里就是一大串Demo,好处多得很,不要怕麻烦,一个快捷键的事,还犹豫什么。

我现在就是不停地在学习,如果你能坚持的话,你会觉得,信息就是你的粮食,你一天不看微博/博客,不摄入知识,就觉得哪里不对劲,"give me more ~~ !".

有人会说:我没时间看

这里我提下,我从产品立项开始,看着产品经过无数的版本,业务滚雪球般越来越交叉、复杂,熟悉增强业务和解决问题单占了我几乎所有时间,留给我看东西的时间很少,但是,我仍然能够看很多,为什么,别人在考虑有没有时间看的时候,我就已经开始阅读了。年轻人,少睡点时间其实并无大碍,感觉有好长时间,我都没在0点之前睡过了,咳咳。不过,这个不提倡啊,并不是说你必须0点之后睡,我想说的是,时间,绝对是有的,现在移动端这么发达,上个厕所你都能看完小半篇文章,就看你愿意是现在付出,还是将来再付出了。

3.问题

上一章,记下来一个问题 - "我应该专精于一项,干嘛还要管别的?"

这里呢,其实还有第二个问题,有丰富工作经验的人都会有感触

这两个问题我写下:

  1. 在技术上,到底我们应该选择单项专精还是多项发展?
  2. 公司往往在业务需求上所需要的技术并不会太多,很可能你每天在进步的不是技术能力,而是业务能力,这在日常的工作中怎么平衡?

3.1.专精?多能?

自古以来,这个问题讨论的很多,我来通过我的体验说说,我是倾向与多能的,不过不是平坦的多能,而是T字型的多能。

刚开始的时候,初初初学者,Objective-c基础都还不知一二呢,自然不用想太多别的,但是,过了初初初学者这个阶段,你还想一项精通走到底,变成专家,你也是要结合实际问题,实际领域才行的,每一项技术,都是有对应领域,与其他技术粘连着的,一项技术想要高,周边的技术也必须带动起来才行。

在日常开发中,会有些工作是重复繁重的,这时候,就要写脚本,将这些工作自动化起来,高效高雅,那么脚本语言你是不是要知道?这是一能;

开发界面,设计人员给出的方案丑的要死,你提出来之后,要给出建议,那么,平时看看优秀的设计是不是很有必要?这是二能;

Mac的开发环境,我建议是尽量多用命令行,不少优秀的linux命令行工具,能加快你定位问题的速度和开发进度(nm,nmap,netstat等),那么是不是需要学习linux工具?这是三能;

国情导致有墙,前文提到我的信息来源中有twitter,那么是不是要会科学上网?我不建议去买现成的服务,除非你是企业级用,自己个人用的话,那就租个月付4刀以下的VPS(buyvm,banwagon),自己安装科学上网,流量绝对够用,还能让你有动力搞搞服务器的东西,这样你以后对接服务器,信心会更大,定位问题更准。这是三能;

网络协议啥的,wireshark抓包,就不说了,一定要知道,不然你只开发本地应用?这是四能;

这里就说这几个,你想说,这尼玛继续下去要全栈了?,不,这不是全栈,你仍然是个iOS开发者,iOS是你的主线,但是,产品的技术线,你都有涉猎,产品的从上到下,你都能拉的通,这对于开发,效率不只乘以2。

所以,平时多涉猎,不要忘记提升主技术的周边技术。

3.2 业务能力还是技术能力

接触过业务开发的同学一定知道,你平时开发时经常看的,不一定是iOS的知识,而是底层协议、网络协议,或者是流程,往往忙碌了一段时间之后,回头发现自己忙于做业务了,iOS的技术用的好少。

这是个要根据你所处的环境来看了

你是要在这个领域长耕的,还是下一份工作,你要换方向的。

我说几句,大家权衡下:

协议和流程到底算是什么,我说,它们是根本方法!根本方法清楚了,不管是让你开发iOS,开发安卓,还是让你和其他组件协调,和其他部门合作,你都是不惧怕的。我负责任的说,每个公司里,最熟悉业务的人,也是第一个升职的人。

4.小记

本来想说下iOSDev的日常的,说着说着就有点偏了。希望新入行的同事,能够从中有所收获,我的方法也许不适合所有人,也当有所借鉴吧。

我将我订阅的国内/国外博客 OPML 文件放在这里,其中一部分博客列表来自唐巧,有兴趣的可以取用。