2013年9月13日,我从就任了一年半的S公司正式离职,并开始了我求之不得的“SOHO程序员”之路。前端
这对于我来讲,是一次人生道路上的重要选择,在这里,我想分享一下我是如何选择了这条道路的,同时也是对我到目前为止的程序员生涯作一个回顾。程序员
爱好是驱使我走上程序员道路的源动力,很小的时候家里就有那种用磁带做为数据存储介质的古老电脑,能够说我基本上完整的经历了从80年代后期到现在这段时间内我的电脑的发展历程,而电脑也成为了我生活中必不可缺的重要组成部分,因此从事一个可以与本身爱好相符合的工做是一件很是快乐的事情,而如何可以让爱好与工做快乐的结合起来则是我一直所追求的目标。编程
个人第一份工做是军人,高中毕业,北京,汽车兵,2年义务兵+3年一级士官。这是一个与绝大多数科班程序员所不一样的人生道路,甚至不少人根本没法将这两个职业联系到一块儿去,因此这不一样的经历也塑造了我与绝大多数程序员不一样的性格、思想和处事方法。ruby
在5年的军旅生涯中,部队的特殊环境塑造了我受用至今——而且我坚信会受用终身的几个重要品质:坚韧、果断、不服输、敢吃苦。另外,还有两个经历给了我特别重要的两件东西:框架
其实程序员这条路并非我曾经优先选择的内容,如前面所讲,个人第一理想是作一生军人,在当时,程序员这个选项应该是排在前三之外的。工具
走上这条路,彻底是机缘巧合。2007年初,在我一级士官即将服役期满的时候,我父亲的好友(也是对我影响最大的人之一)给我了一个到他的公司当程序员的机会,同时也告诉我了一句至关重要的话:若是你不把本身最喜好的爱好当专业来干,那么就是在浪费时间。学习
因此,我开始学编程也就是从那时开始的。orm
个人编程入门语言是在部队服役后期突击学习的Delphi,只惋惜2007年的Delphi已经进入晚年,除了不少老软件公司还在使用它来维护已有产品之外,国内的软件行业已是Java和.NET的天下,可是无论怎样,Delphi让我第一次了解了编程是怎样的。blog
2008年,退伍后的我加入了父亲好友的E公司,因为公司发展和业务须要,我从刚刚入门还远未熟练的Delphi转型到.NET平台,开始使用C#进行WinForm开发。ip
可是这一年的我,对编程并无产生真正的兴趣,学习也并不主动,能够说浪费了不少的时间。另外,由于先前所说过的部队经历让个人人际交往能力比公司其余同事更强,因此我作的更多的其实是项目调研、需求分析、产品维护这样的工做。可是如今想想,其实这些工做对如今的我来讲十分的重要,由于经过这些工做,我走遍了半个中国的省会城市,让我在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上结识了Andy Wang和Allen Wei等西安地区的Rubyist,后来你们一拍即合的组织起了Xi'an Rubyist的线下技术交流活动。
因为Andy和Allen均是SOHO多年的资深Freelancer,在与他们的接触交流过程当中,我忽然意识到我所学的Ruby和Rails等技术与其余技术不太同样,在社区更加活跃、自由、新潮的同时,还有一项特别实惠的优点:在家办公的可能性更大。
在他们二人的鼓励和支持之下和研究了他们的SOHO经验以后,Ruby on Rails + SOHO这对组合彷佛能够成为解决个人煎熬状态的首选解决方案:
换句话说,是时候走出个人温馨区了,我须要再一次改变,技术在身,无可畏惧。
因此,在持续了五个月的疯狂学习以后,我选择了辞职,走上了SOHO程序员之路。
如今,我在家中,心情舒畅,没有了每天堵车上班的痛苦,也没有了先前的烦恼。
写下这篇文章,做为SOHO程序员之路的开始,我知道后面的道路会有之前未曾有过的各类困难和挑战,可是我很喜欢Terry Tai同窗分享给个人一句话:
“当你决定出发,最大的困难已不复存在!”
我信,我行!