原文地址:
http://blog.huhao.name/blog/2013/12/13/become-a-freelancer-2/
作者:胡皓
Blog:From Soldier to Programmer – 胡皓的博客
GitHub:https://github.com/howiehu
Twitter:@howiehu
新浪微博:@长安胡小闹
CodeSchool:My Report Card
当我开始写这篇文章的时候,我猛然发现,此时此刻距离我辞职(2013年9月13日)至今刚好整整3个月时间,看来写这样一篇文章是冥冥之中必须干的事儿。
那么就让我接着上一篇文章继续写下去吧(上一篇文章请见《从士兵到程序员再到SOHO程序员》)。
三个月的收获
三个月之前,我制定过一个学习计划:《三个月家里蹲转型 Ruby on Rails + SOHO 计划》。
但是,俗话说得好,计划赶不上变化,在这三个月里我有将近一半的时间在忙于新房装修,跑灵活就业人员社保手续,以及其他杂事上面。
所以,真正用于学习的时间也就是一个半月左右,回过头来梳理了一下,发现收获的东西倒还是不少的(按照时间先后顺序排列):
1. 学会并爱上Vim,最终欲罢不能
我是一个工具控,尤其是在写代码这件事情上更是如此。由于先前一直是在搞.NET开发,使用的最多的IDE便是微软的 Visual Studio,所以深受这种高度智能的IDE工具的“照顾”和“坑害”。在我的概念中,只有像电影里那样熟练且飞快的使用纯文本编辑器或者命令行工具的家伙们才是真正的在写代码。接触Ruby on Rails以后,我一直使用的是Sublime Text 2,这也是现在比较流行的编辑器。但是,当我在西安Rubyist社区活动时,亲眼目睹 魏伦(Allen Wei) 同学娴熟飞快的使用Vim进行开发,在被那种行云流水般的操作震撼的五体投地之后,我下定了决心: 欲善其工,必先利其器,在开始后面一系列计划之前,先把Vim学会了再说!
于是,我利用一周时间,通过以下两个Vim在线学习网站学会了Vim的使用:
- VimAdventures
- VimGenius
随后,我在学习和写代码的过程中,强制要求自己尽可能的使用Vim。到现在为止,我已经能够熟练的使用Vim,并且在自己寻找的一堆Vim插件的帮助下,高效的进行Ruby on Rails开发了,这里秀一下我现在写代码时的屏幕:
总结一下使用Vim的好处:
- 在OS X下配合Dash这个工具可以做到双手不离键盘,注意力可以集中,开发效率很高。
- 随时随地,不管是Windows、OS X还是Linux,不管是本地还是远程服务器,都可以立刻开始工作。
以下是我在学习过程中整理的一些资料:
- 《My Favorite Vim Tutorials And Tools》
- 《Vim官方教程“精编版”》
2. 在西安Rubyist社区活动中做了一次技术分享
在辞职之后,紧接着我就在西安Rubyist社区活动中进行了一次有关REST的技术分享,这也是我有史以来在众人面前做的第二次技术分享(第一次是在先前公司内部做的ASP.NET MVC 4技术分享),这次活动是在ThoughtWorks西安公司会议室进行的,人也不少,所以当时挺紧张,不过感觉真的很棒!
这是分享时制作并使用的PPT,保存在SkyDrive上,可以直接查看和播放:
- 《About REST and RESTful Web API》
3. 回顾和复习先前所学的内容
由于先前所说的原因,《三个月家里蹲转型 Ruby on Rails + SOHO 计划》这个里面的内容我只完成了如下两个:
- 重读一遍《Ruby on Rails Tutorial 3rd Edition》
- 完整阅读《Everyday Rails Testing with RSpec》
现在回过头来一想,多读书在我目前这个阶段确实不是很重要,以上这两本已经足够用了,看完以后赶快多练手才行,所以也推荐给其他想学Ruby on Rails的朋友这两本书,而且这两本书都有Andor Chen 同学辛勤翻译的中文版哦!
4. 短时间参与了一个项目
这个项目先前在Ruby China论坛发布过招聘贴,帖子写的非常诚恳,当然其中的人也确实非常诚恳,我一直在关注。
但是后来加入到项目中后(真正干活的话总共是3天时间),发现困难比想象中要高,主要原因是:
- 项目MVP阶段及后续阶段的准备资金不足。
- 创业团队没有技术领头人,这在资金不足的情况下使得情况更加紧迫。
- 我无法认同项目本身的定位和目标。
- 个人准备还是不够充分,所以工作起来有些吃力。
所以,在我认真思考之后,我认为项目本身的客观实际加上我当时的技术状况使得我的加入有可能加速这个项目的失败,所以我还是退出了。
通过这个短时间的尝试,让我还是有一些收获的:
- 远程工作没有想象中那样简单。
- 亲身体验了远程工作,初步总结了一些经验。
- 对自己的技术水平有了更加深刻的认识,所以后来花了更多的时间去学习和练习。
5. 参加了RubyConf China 2013
RubyConf China 2013是中国Rubyist在2013年的一次最重要的聚会,我很高兴参加了这次会议。
在这次会议上,我见到了许多先前只在网络上知道的国际国内Ruby社区的精英,同时也震撼于很多工作时间不长的朋友都敢于上台演讲。
通过参加这次会议,让我收获到:
- 对国内Ruby社区的认识更加清晰。
- 很多比我还年轻的朋友的出色演讲让我更加坚定了利用Ruby on Rails实现我远程工作的决心。
- 认识到自己在这个圈子内的水平处于什么位置。
- 英语很重要,作为一个忠实的“听众”,当看到周边朋友们抓住机会就冲上去和大牛们用英语交流的场面我是那个汗颜啊……(不过后来在从北京回西安的高铁上,我和身边的一个澳大利亚哥们儿用英语聊了一路,这才发现原来说英语也没那么困难,而且周围刚工作的小姑娘们对我这英语水平还是报以很崇拜的眼神,好吧这个扯的有点远了……)
在 RubyConf China 2013 的签售活动上比较幸运的排在第一位与 Dave Thomas 合影留念:
6. 深入学习Ruby on Rails
有了先前这些经历,我认识到我的学习上还有很多不足和欠缺,所以我在练手的同时更加深入的去学习了Ruby on Rails的相关知识。
到目前为止,我已经能够比较完整和系统的建立起了对Ruby on Rails的认识,并且结合多年Web开发经验,对利用Ruby on Rails进行Web开发也不再犯怵了,基本上遇到问题都能够有解决的思路和信心。
和先前短期参与那个项目时的状态相比,可以说现在我已经是一只翅膀硬了,敢于并期待飞翔的“菜鸟”了!
7. 初步学会iOS开发
对于iOS的学习完全是出于我的兴趣加上对这个行业的认识所决定的。
现在这个时代是一个移动设备崛起的时代,或者说是一场革命,对于我们Web Developer来说,单单的掌握从前到后的Web开发技术已经不够了,我认为还必须加上移动设备开发才算完整,所以结合我个人对于Apple的喜爱,我选择了iOS开发而不是Android,从我个人来说,如果有一天就算要做Android的东西,我也可能会去选择Xamarin这样自己比较方便过渡的技术。
目前,我已经在这段时间学习了iOS开发的基本知识,并正在征服CodeSchool的iOS开发课程中,根据当前的进度,应该半个月后就能自己做点小东西玩了。
8. 通过开发西安Rubyist社区网站来实践所学知识
项目GitHub:xian-rubyists-site
这是我实践我先前所学Ruby on Rails知识和BDD思想的一个重要途径,由于先前事情太多,所以都是断断续续在做,现在终于有时间做下去了,所以感兴趣的朋友们可以关注下,也算是对我学习成果的一次检验吧。