原文链接: http://blog.callmewhy.com/2015/12/18/oh-my-2015/
作者: @callmewhy 同学
微博: http://weibo.com/small1030light
在这篇文章里,我想聊一聊2015年,我的收获与感想。
TL;DR
- 掌握属于自己的学习方法,循序渐进提高效率。
- 静下心来学习,戒骄戒躁,专注与技术本身。
- 有自己的职业规划,清楚自己需要什么在做什么。
学习
这一年的时间里,我感觉收获最大的地方就是学习了。并不是学习给我带来了什么,而是学习方法本身的收获。
对于我而言,学习分为三个过程:
- 大量阅读
- 整理消化
- 乐于分享
大量阅读
第一步是大量阅读。
充分保证阅读量是高效学习的前提,而阅读量主要取决于以下方面:
- 信息来源:有哪些渠道来收集信息
- 关注焦点:大量的信息里如何取舍
我的阅读来源主要是(排名有先后):
- RSS:订阅了很多博客,以前主要是 iOS ,现在主要是前端。好处是可以第一时间获取到最新的博客分享,而且不会遗漏。一般我只在 Mac 上用 Reeder 处理订阅的内容,方便归档整理。订阅列表会定期同步到 Gist 上。
- 周报:邮箱里订阅了很多技术周报,比如 Swift Sandbox 、iOS Dev Weekly 等等,周报可以起到一个查漏补缺的作用,因为这是其他开发者手机整理的,如果发现有好的博客则可以整理到自己的 RSS 里方便以后长期关注。
- 微博:前面两个信息来源都是自己主动订阅的,可以保证质量但是并不能保证阅读的广度。我的微博里有一个专门的 Learn 分组,里面存放了近两百个质量比较高的微博帐号,可以及时看到一些微博上的技术分享,这个分组里的微博是每天每条必读的。看到不错的内容会收藏,然后每周清理微博里的收藏。
- 其他:其他就比较杂了,比如社交平台(GitHub 、Twitter)、比如资讯网站(Hacker News、Product Hunt)、比如技术论坛(cnode.org、div.io),等等。还有各种杂七杂八的技术分享、微信订阅号的各种日报周报、不定时地看一些 TED 视频之类的。
我关注的内容很杂,前端、后端、运维、语言等诸多方面都会看一下,并不说有那么多时间去关注这么多内容,而是相比于其他过程,信息收集的过程成本很低。在收集的过程中多关注一些东西,以后在需要的时候很容易就会联想到自己在这方面的知识储备。
整理消化
有了大量的信息输入之后,接下来就是整理和消化。
我一般会把所有的资料都整理到 Pocket 里,以前还会打个 tag 标记一下关键词,后来发现并没有打 tag 的必要,反正看了标题也就知道是什么内容了,而且有时候会在打什么 tag 上纠结很久,比如《如何使用 Swift+NodeJS+Nginx 搭建属于自己的 RESTFul API》,你说这是属于 iOS 还是 Web 还是 Swift 还是 RESTFul 呢?尴尬,干脆不打。
然后就遇到了一个问题:每天会有将近百篇新文章输入,而我并没有那么多时间阅读。所以现在屯了一千多篇未读的文章。这是个问题呐,收集起来虽然成本不高,但是总是堆在那里也是碍事啊。于是开始给自己制定计划:每周要保证一定的阅读量,并整理成周报同步到《阅读笔记》上。正在进行中,自我感觉效果还可以,至少没有继续猛增了。其实每天剩余的时间还是那么多,但是会把更多的精力从其他方面(比如凑热闹比如抬杠比如调侃)迁移到阅读上。
乐于分享
2012年起开始在 CSDN 上写博客,一开始是胡乱贴些代码,后来是从其他地方搬运整理,后来是各种翻译文档,后来开始在自己的博客里写一些经验分享。
现在想想,写博客对我的帮助很大:
- 方便总结:可以把自己阶段性的教训和经验详细记录下来,总结的过程也就是整理和思考的过程。
- 方便回顾:以后再遇到类似的问题可以很快找到自己当初的总结,翻翻笔记就可以快速进入状态。
- 方便交流:最大的好处就是可以和其他人一起讨论,别人的疑惑和经验有利于更深入的思考问题。
除了博客,这一年还参与了各种技术分享会。线下技术分享,基本是各取所需,不要指望『听君一席话,胜读十年书』这种速成,有所启发就足够了。像 QCon 和 CFF 在会后都有视频,感觉比线下听更有效率。我比较热衷与参加技术分享倒不是希望学到什么(感觉技术分享上听到的内容基本博客里都写遍了),而是喜欢一群人一起讨论自己所热爱的东西,比如 Swift ,比如 FRP ,比如 Docker 。说直白点其实就是去找归属感。在这个三十分钟精通 C++ 二十天速成 iOS 每个人都想着年薪百万的时代里,有一群纯粹的热爱技术的程序员兴高采烈地分享自己所热爱的东西,是多么幸福的一件事。
半年前一时兴起想办个 iShare 技术分享,然而因为种种事情(例如加班、例如离职)导致一个月之前才举办了第一次分享,而且后来就因为各种其他事情(例如场地、例如没人)导致一直搁浅。所幸的学生团队已经逐渐组建起来了,希望明年可以继续下去。
保持专注
这个单独拎出来,因为它很!重!要!很多人遇到个什么问题就火急火燎的去请教别人,『请问大神这个怎么办?』,『请问大神怎么才能这样?』。这样的结果往往是单纯的解决问题,对自己却没有任何提高。『是啊,没有提高!』于是有人又要火急火燎的问,『然后没有提高怎么办?』。
怎么办个屁啊!
搬个凳子,坐下来,歇着。静静的思考自己遇到的问题,需要解决什么,如何解决,有哪些方案,怎样效率最高,下一步该怎么做。都想清楚了,再去回想前面自己的问题。比如如何用 NodeJS 写爬虫,如果连爬虫是什么都不清楚就到处提问『如何使用 NodeJS 写爬虫』,怎么可能解决问题?
授人以鱼不如授人以渔。我呼吁各位,再遇到伸手党,可以告诉他 Google 的正确打开方式。
如果在群里遇到执迷不悟的伸手党,请这样做。
- 大喊:蜀将安在!
- 找个托呼应:末将在!
- 大喊:大刑伺候!
- 祭出下图:
再来说下专注。这里的专注,是指专注于思考问题本身,而不是想着怎么样尽快解决问题。为什么遇到问题去请教别人总能解决?并不是因为别人天生比你厉害多少,很大一部分原因是因为你在到处求解答求帮忙的时候,别人在静静的写代码。工作业务很繁忙,人际关系很复杂,但是一定要专注自己想要做的东西。如果想做一名优秀的开发者,那就专注技术本身;如果想做一个熟练的伸手党,那,嗯哼。
专注的另一个方面,就是不要被杂音干扰。今天 bang 开源了 JSPatch ,于是一窝蜂涌过去,『大神好厉害,求教求教』;明天 YY 火了,一群人又围上去,『国内还有如此大牛太厉害了』。四处追星,何时学习?
他们是否厉害?是,确实很厉害,代码质量也很高。但是和去吹捧去羡慕去崇拜相比,更应该做的是静心做学问。不要盲目追星盲目造星盲目调侃。很多人到处问,『怎么才能学好 iOS』,『怎么才能想大牛们一样厉害啊』。连基本学习和思考的过程都没有,每天提这些问题,就像是捧着个空钱包每天问马云我什么时候才能成为百万富翁一样。
这是我的一点个人感想。虽然作为一名段子手,我是半个身子处于娱乐圈的人,但是作为一名软件工程师,我觉得静心做学问才是自己真正的追求。
技术
接下来聊聊技术相关的话题吧(哎前面难道不是一直也在聊吗)。今年是我技术方面成长最快的一年,一方面是是实习之后确定了专注做 iOS 开发,方向比较明确;另一方面是本科期间的各种摸爬滚打,逐渐找到了属于自己的学习方法和编程习惯。
学习习惯
学习习惯前面有聊了很多,不过是比较通用的,属于每天的学习积累。在遇到具体问题的时候还是需要具体分析:
- 通读文档:不管什么技术,一定是文档优先。原因很简单:时效性和准确性。技术更新的速度很快,尤其是前端,只有官方文档才是最及时最准确的。
- 善用搜索:一定要善用搜索引擎,思考怎么样才能让搜索引擎理解你想问的问题,可以多搜多对比。一定一定一定,不要用百度。
- 多读代码:对于开发而言,多阅读优秀的代码。比如学 iOS 的时候就看看 ForkingDog 或者 AFNetworking ,自然而然总结一些最佳实践。
- 保持交流:上面可以满足基础的学习,但是对于一些最佳实践的思考和总结,还是要多和别人交流,多看别人的分享,多和别人分享,查漏补缺。
一专多能
回顾自己曲折离奇的学习路线,感觉多看一些东西多掌握一些技术对于自己的成长是很有帮助的。专攻某一项技术并不简单地意味着不去了解其他技术。
比如做 iOS 开发,Cocoa 的底层技术肯定需要熟悉的,但是有其他方面的技术积累。比如需要经常变动的需求或许就可以考虑用 Hybrid 的方案,比如需要做个简单的小游戏或许 Cocos2d-x 和 Unity3D 会是更好地选择,比如有天写了个脚本之后发现自动更新版本号然后打包上传发布的全自动化操作是如此的方便。而如果一直局限于『iOS 开发』这个技术领域,或许就会错过很多东西。
个人认为全栈是软件工程师成长之后的必然结果。但是千万不要为了全栈而全栈。比如什么『NodeJS 真好,学完之后前端工程师就能写后端了,就是全栈工程师了』,什么『快去学 React Native 啊学完就能开发客户端了就是全栈工程师了』。如果学习的目的是为了收集『全栈工程师』这个称号,那学习这件事本身就已经变了味了。
工作
每年都觉得自己这一年的经历真是奇葩。比如大一的时候昼伏夜出就是为了蹭舍友电脑从凌晨开始玩 QQ 飞车,然后大二的时候我居然开始素描写生拍电影写剧本我差点觉得自己成了个艺术家,后来到了大三又是解散工作室又是成立工作室又是找老师撕逼也是各种凌乱,然后到了大四我居然真的进了梦寐以求的大阿里然后他妈的实习两个月我居然就特么跳槽了我是有多贪,最后到了今年向高层反映开发产品测试运营各种问题无果后愤然离职从而经历了从一个脑残粉变成死磕黑的全过程。现在和朋友在一个小屋子里倒腾一些稀奇古怪的小玩意虽然不赚钱但是带带学生团队一起成长倒也是悠闲自在。
虽然是成立了公司,不过觉得现在的阶段并不能算是创业,定多算是个自由职业者吧。组建了一个四人学生团队,产品合伙人提供一些灵感,然后一起在学校里折腾折腾。
工作流主要是 Worktile 做任务看板,Coding 做代码托管,瀑布做聊天工具。团队组成是两名前端两名后端,最近在搞一些 HTML5 项目。对于技术团队,规划是每个人都在一定阶段内深入学习某个领域,然后再定期互换角色弥补盲点。由于团队成员比较少,也没什么历史包袱,所以技术方案上也比较激进,写起来带感。
为啥不社招呢?因为穷。短期之内我们暂时没有融资的打算,想多做一些尝试。如果要对一名社招的少年负责我感觉是比较困难的,我们目前还没有什么稳定的资金来源,而且五险一金什么的也没太多精力去折腾。而对学生团队负责,我还是比较有信心的,有一份还可以的实习报酬,另外在学校里有机会一起学习尝试新技术并体验完整的开发上线流程还是很有意义的。
未来嘛,肯定都是冲着改变世界去的。然而在那之前,首先要活下去。
规划
最近不少小伙伴处于即将毕业或者刚毕业的状态,我想就这方面再聊一聊。
应届生找工作大概是这么几个选择:
- 稳定安逸的成熟大厂,主要是百度、腾讯、阿里巴巴。
- 发展不错的创业公司,例如 Glow 、流利说、饿了吗。
- 从零起步的创业团队,比如和朋友出来单干,合伙创业。
我个人经历勉强也算是经历了上述三种情况,我的理解是这样的。
- 稳定安逸的成熟大厂,适合希望找一份稳定工作的同学们,在阿里的时候我每天十点上班,然后下午四点跑步洗澡,晚上看书参与一些翻译活动,感觉生活的很舒适。然而大厂的 KPI 考核是比较恶心的,我个人十分反感,所以这也是我不考虑 BAT 的原因。当工作变成了演戏,那编程的乐趣便也少了许多。
- 发展不错的创业公司,可以理解为半创业模式。适合有能力且想挑战一下的同学。创业公司能活下来,基本上团队质量是说得过去的。不妨去网上找一些口碑不错的创业公司,投投简历,四处聊聊,找一家投缘的留下来发展。创业公司会比较灵活一些,你的建议和想法很快能得到反馈,一定程度上来讲,合作效率也会更好。
- 从零起步的创业团队,这就不多说了。除非真的是有很好的机遇和很强的创业欲望,否则还是不要考虑了。如果在犹豫要不要出来创业,或许已经不合适了。
风险越高回报越高,天上没那么多馅饼可以掉。看准了一定要尽早做决定,不要优柔寡断。时间过的很快,等着等着就没了。
我对自己的定位是『工程型编程爱好者』,本身工作就是爱好,爱好就是工作。所以出来和朋友创业,除了想改变世界,另一方面也是想满足自己的编程爱好,打造自己的技术团队,让更多的人真正体会编程的乐趣,为自己喜欢的事情做点什么。
总结
胡言乱语,不知所云。戛然而止,筋疲力尽。
一直想写点东西随便扯扯,但确实又各种没时间。后面准备关于『全栈』和『开源』写两篇『全全全全全,全你妹的栈啊』和『开开开开开,开你妈的源啊』,聊聊对于全栈和开源的理解。和对某些人某些事的喷。
奏是这样。
讲真的,我还挺期待 2016 的。
一起加油吧。