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同窗分享給個人一句話:
「當你決定出發,最大的困難已不復存在!」
我信,我行!