從士兵到程序員再到SOHO程序員

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公司存在有特別嚴重的問題:公司一把手對技術一竅不通、毫無核心開發能力、技術水平低下、項目管理及其混亂、公司內部勾心鬥角……等等。也正是由於這些問題,讓我陰差陽錯的得到到了一個特別重要的「戰略緩衝期」:

  • 一方面,由於我先前積累的相比公司其餘人員更強的社交能力和項目經驗,我逐漸走上了項目管理崗位;
  • 另外一方面,堅持不斷的學習,讓我感受在技術上,我與身邊的人逐漸拉開了距離(我學會JQuery是在廣州返回北京的列車上完成的,當時的學習激情和效率至關之高),而這種進步的感受讓我開始對編程逐漸產生興趣,一發不可收拾。

2011年,我憑藉本身對技術發展的判斷,在國內相關資料還很匱乏的狀況下,開始購買國外的正版英文PDF教材自學ASP.NET MVC 2,以及很快便推出的ASP.NET MVC 3。經過這樣的學習,讓我得到了特別重要的幾項進步:

  • 不再怕看英文教材,這樣我可以比他人更早更快更準確的獲取並學習新的技術;
  • 經過對ASP.NET MVC的學習,讓我徹底從ASP.NET WebForm的傳統開發思想上解放了出來,對Web應用程序開發有了更加深刻和總體的認識,同時也對流行技術和TDD等思想有了更加全面的瞭解和學習;
  • 在學習過程當中,瞭解並學習了敏捷軟件開發這個至關重要的東西,而且直接影響到我對軟件行業的見解和對將來發展方向的認識。

2012年初,我已是項目管理部副主任,正當我努力改變公司項目管理混亂的狀況並嘗試推行敏捷思想的時候,一場突如其來的由高層勾心鬥角引起的栽贓嫁禍砸到了個人頭上。此時的我,已對北京的生活壓力和我的能力沒法徹底發揮感到心力交瘁,因此我毅然決然在春節前辭職,憑藉以前不斷學習積累的技術經驗和自學的ASP.NET MVC技術加入了提倡敏捷與我的發展的S公司西安第一分公司,從北京回到了我闊別9年的西安家中。

煎熬

2012年3月,S公司,一直到如今我都認爲很是不錯的公司,踐行敏捷,注重我的成長。

在S公司,我第一次接觸了歐美離岸外包項目,以及敏捷實踐,在這裏讓我對敏捷軟件開發有了深入認識和體驗,技術水平也有了進一步的提升。能夠說,在加入S公司以後的至關長一段時間內,我都是快樂的。

可是,隨着時間的推移,我所在的團隊和項目中的一些我沒法改變的客觀問題逐漸暴露出來:

  • 因爲我所在的項目是西安分公司的第一個大項目,團隊組建的比較倉促,招人時要求不夠高,技術水平與項目要求存在差距;
  • 團隊成員不肯主動學習技術,尤爲是去主動學習流行技術,致使相似JQuery這種東西在一年後依然用的磕磕巴巴,另外不少有益的東西沒法推行下去,好比TDD;
  • 團隊成員並不愛好編程,在我看來依舊是把編程當作混飯吃的工具,沒有什麼技術追求;
  • 團隊成員一些根深蒂固的觀念難以扭轉,敏捷依然停留在表面形式上,沒有紮根到內心,甚至到一年之後,不少敏捷開發中的重要內容,好比CodeReview和回顧都沒法堅持作下去;

這時,經過和公司經理的幾回技術交流中,我對Ruby on Rails有了初步的瞭解(先前只是據說過但沒有研究過),在進一步瞭解的過程當中,我逐漸發現Ruby語言和Ruby社區對個人吸引力愈來愈大,也讓我對開源軟件和開源文化有了愈來愈多的認識,以致於最終讓個人思想有了完全的改變:原來程序員的世界能夠這樣的快樂和活躍

隨着對Ruby及Rails如癡如醉般的不斷學習,我感到工做變得愈來愈不快樂,工做效率也愈來愈低,這種感受甚至能夠說是是一種煎熬。

在我看來,這些不快樂是因爲如下因素形成的:

  • .NET程序員受國內環境以及微軟技術的影響,社區活躍度不高,廣泛技術水平偏低,對流行技術和思想的接受速度太慢,難以在技術上找到共同語言或者同道中人。
  • 我的經歷所塑造的性格與周圍的同事差別太大,雖然嘗試不斷改變本身,可是這種過程至關艱難,而且很不舒服;
  • 我的技術進步與團隊成員造成的落差(世界上最遙遠的距離不是我努力學習,你不努力學習,而是我在努力學習你卻認爲我是在裝逼)。
  • 由於團隊的能力不足,形成項目在交付階段問題重重,而我我的又無力改變這一切。
  • 長期拴在一個項目之上,讓我沒法將業餘時間所學的東西用在實際當中。

自我改變

既然沒法改變環境,那麼只能改變本身,我開始尋找可以讓本身快樂起來的辦法——參加技術社區活動,去尋找志同道合的夥伴。

2013年,我在ruby-china上結識了Andy Wang和Allen Wei等西安地區的Rubyist,後來你們一拍即合的組織起了Xi'an Rubyist的線下技術交流活動。

因爲Andy和Allen均是SOHO多年的資深Freelancer,在與他們的接觸交流過程當中,我忽然意識到我所學的Ruby和Rails等技術與其餘技術不太同樣,在社區更加活躍、自由、新潮的同時,還有一項特別實惠的優點:在家辦公的可能性更大

在他們二人的鼓勵和支持之下和研究了他們的SOHO經驗以後,Ruby on Rails + SOHO這對組合彷佛能夠成爲解決個人煎熬狀態的首選解決方案:

  • 我能夠用一個我喜好的技術來工做,而不是用爲工做而選擇的技術;
  • 我能夠擁抱一個崇尚技術的社區,找到志同道合的人,選擇本身喜好的團隊;
  • 我能夠享受SOHO帶來的一系列提高生活質量的好處(至於都有什麼好處,ruby-china上已經有不少經典帖子來講明瞭,在此再也不重複);

換句話說,是時候走出個人溫馨區了,我須要再一次改變,技術在身,無可畏懼

因此,在持續了五個月的瘋狂學習以後,我選擇了辭職,走上了SOHO程序員之路。

在路上

如今,我在家中,心情舒暢,沒有了每天堵車上班的痛苦,也沒有了先前的煩惱。

寫下這篇文章,做爲SOHO程序員之路的開始,我知道後面的道路會有之前未曾有過的各類困難和挑戰,可是我很喜歡Terry Tai同窗分享給個人一句話:

「當你決定出發,最大的困難已不復存在!」

我信,我行!

相關文章
相關標籤/搜索