2013 年 9 月 13 日,我从就职了一年半的 S 公司正式离职,并开始了我梦寐以求的“SOHO 程序员”之路。
这对于我来说,是一次人生道路上的重要选择,在这里,我想分享一下我是如何选择了这条道路的,同时也是对我到目前为止的程序员生涯做一个回顾。
爱好是驱使我走上程序员道路的源动力,很小的时候家里就有那种用磁带作为数据存储介质的古老电脑,可以说我基本上完整的经历了从 80 年代后期到如今这段时间内个人电脑的发展历程,而电脑也成为了我生活中必不可缺的重要组成部分,所以从事一个能够与自己爱好相符合的工作是一件非常快乐的事情,而如何能够 让爱好与工作快乐的结合起来 则是我一直所追求的目标。
我的第一份工作是军人,高中毕业,北京,汽车兵,2 年义务兵 +3 年一级士官。这是一个与绝大多数科班程序员所不同的人生道路,甚至很多人根本无法将这两个职业联系到一起去,所以这不同的经历也塑造了我与绝大多数程序员不同的性格、思想和处事方法。
在 5 年的军旅生涯中,部队的特殊环境塑造了我受用至今——并且我坚信会受用终身的几个重要品质: 坚韧 、 果断 、 不服输 、 敢吃苦 。另外,还有两个经历给了我特别重要的两件东西:
其实程序员这条路并不是我曾经优先选择的内容,如前面所讲,我的第一理想是做一辈子军人,在当时,程序员这个选项应该是排在前三以外的。
走上这条路,完全是机缘巧合。2007 年初,在我一级士官即将服役期满的时候,我父亲的好友(也是对我影响最大的人之一)给我了一个到他的公司当程序员的机会,同时也告诉我了一句相当重要的话: 如果你不把自己最喜爱的爱好当专业来干,那么就是在浪费时间。
所以,我开始学编程也就是从那时开始的。
我的编程入门语言是在部队服役后期突击学习的 Delphi,只可惜 2007 年的 Delphi 已经进入晚年,除了很多老软件公司还在使用它来维护已有产品以外,国内的软件行业已经是 Java 和.NET 的天下,但是不管怎样,Delphi 让我第一次了解了编程是怎样的。
2008年,退伍后的我加入了父亲好友的E公司,由于公司发展和业务需要,我从刚刚入门还远未熟练的Delphi转型到.NET平台,开始使用C#进行WinForm开发。
但是这一年的我,对编程并没有产生真正的兴趣,学习也并不主动,可以说浪费了很多的时间。另外,因为先前所说过的部队经历让我的人际交往能力比公司其他同事更强,所以我做的更多的实际上是项目调研、需求分析、产品维护这样的工作。但是现在想一想,其实这些工作对现在的我来说十分的重要,因为通过这些工作,我 走遍了半个中国的省会城市 ,让我在 5 年的部队封闭生活之后 开拓了眼界,接触了各种人和事 ,同时还积累了大量 客户需求与分析工作的经验 。
2010 年,由于国内软件行业的客观环境,以及公司所属某集团公司的内部政策变化,公司的经营遇到了困难。我跟随父亲的好友空降到了 H 公司——一个隶属于某大型电力建设集团旗下,拥有央企背景的软件公司。
为了能够顺利的进入这个公司,并符合公司业务需要,在这一年的上半年,我开始学习 ASP.NET 以及 WebForm 框架,正式走向 Web 应用程序的开发道路。但是这个时候的我,依然没有对编程产生真正的兴趣,直到加入 H 公司之前,我的 ASP.NET 学习水平仍然非常的基础,仅仅能够达到做简单应用的水平,所以那时候的我对于进入一个“拥有央企背景”的“大软件公司”是相当忐忑不安的。不在父亲好友的建议下,认真学习了那个时候很多.NET 程序员都不认真学习的 Javascript,所以相对于其他入门级别的 ASP.NET 程序员来说,我能够做出一些看上去比较“专业”的 Web 前端效果,这在我进入 H 公司初期起到了一定的“隐藏真实实力”的效果。
加入 H 公司之后的两个月时间,我在进一步熟悉了解公司情况和业务的同时开始发奋深入学习 ASP.NET。可能是因为从小就对电脑特别熟悉的缘故,所以当我真正专心下来学东西的时候,进度变的相当之快,短短两个月时间,已经让我对 ASP.NET 的了解有了突飞猛进的变化,也让我的信心逐渐增强,在我眼中,我已经与其他同事没有明显的技术差距了。
但是就在技术实力逐渐丰满的同时,我发现 H 公司存在有特别严重的问题:公司一把手对技术一窍不通、毫无核心开发能力、技术水平低下、项目管理及其混乱、公司内部勾心斗角……等等。也正是因为这些问题,让我阴差阳错的获得到了一个特别重要的“战略缓冲期”:
2011 年,我凭借自己对技术发展的判断,在国内相关资料还很匮乏的情况下,开始购买国外的正版英文 PDF 教材自学 ASP.NET MVC 2,以及很快便推出的 ASP.NET MVC 3。通过这样的学习,让我获得了特别重要的几项进步:
2012 年初,我已经是项目管理部副主任,正当我努力改变公司项目管理混乱的情况并尝试推行敏捷思想的时候,一场突如其来的由高层勾心斗角引发的栽赃嫁祸砸到了我的头上。此时的我,已对北京的生活压力和个人能力无法完全发挥感到心力交瘁,所以我毅然决然在春节前辞职,凭借之前不断学习积累的技术经验和自学的 ASP.NET MVC 技术加入了提倡敏捷与个人发展的 S 公司西安第一分公司,从北京回到了我阔别 9 年的西安家中。
2012 年 3 月,S 公司,一直到现在我都认为非常不错的公司,践行敏捷,注重个人成长。
在 S 公司,我第一次接触了欧美离岸外包项目,以及敏捷实践,在这里让我对敏捷软件开发有了深刻认识和体验,技术水平也有了进一步的提高。可以说,在加入 S 公司之后的相当长一段时间内,我都是快乐的。
但是,随着时间的推移,我所在的团队和项目中的一些我无法改变的客观问题逐渐暴露出来:
这时,通过和公司经理的几次技术交流中,我对 Ruby on Rails 有了初步的了解(先前只是听说过但没有研究过),在进一步了解的过程中,我逐渐发现 Ruby 语言和 Ruby 社区对我的吸引力越来越大,也让我对开源软件和开源文化有了越来越多的认识,以至于最终让我的思想有了彻底的改变: 原来程序员的世界可以这样的快乐和活跃 。
随着对 Ruby 及 Rails 如痴如醉般的不断学习,我感到工作变得越来越不快乐,工作效率也越来越低,这种感觉甚至可以说是是一种煎熬。
在我看来,这些不快乐是由于以下因素造成的:
既然无法改变环境,那么只能改变自己,我开始寻找能够让自己快乐起来的办法——参加技术社区活动,去寻找志同道合的伙伴。
2013 年,我在 ruby-china 上结识了 @yorzi 和 @allenwei 等西安地区的 Rubyist,后来大家一拍即合的组织起了 Xi'an Rubyist 的线下技术交流活动。
由于 @yorzi 和 @allenwei 均是 SOHO 多年的资深 Freelancer,在与他们的接触交流过程中,我突然意识到我所学的 Ruby 和 Rails 等技术与其他技术不太一样,在社区更加活跃、自由、新潮的同时,还有一项特别实惠的优势: 在家办公的可能性更大 。
在他们二人的鼓励和支持之下和研究了他们的 SOHO 经验之后,Ruby on Rails + SOHO 这对组合似乎可以成为解决我的煎熬状态的首选解决方案:
换句话说,是时候走出我的舒适区了,我需要再一次改变, 技术在身,无可畏惧 。
所以,在持续了五个月的疯狂学习之后,我选择了辞职,走上了 SOHO 程序员之路。
现在,我在家中,心情舒畅,没有了天天堵车上班的痛苦,也没有了先前的烦恼。
写下这篇文章,作为SOHO 程序员之路的开始,我知道后面的道路会有以前不曾有过的各种困难和挑战,但是我很喜欢 @poshboytl 同学分享给我的一句话:
“当你决定出发,最大的困难已不复存在!”
我信,我行!