2013年9月13日展辞,我從就職了一年半的S公司正式離職蕉朵,并開始了我夢寐以求的“SOHO程序員”之路。
這對于我來說关顷,是一次人生道路上的重要選擇糊秆,在這里,我想分享一下我是如何選擇了這條道路的议双,同時也是對我到目前為止的程序員生涯做一個回顧痘番。
愛好使然
愛好是驅(qū)使我走上程序員道路的源動力,很小的時候家里就有那種用磁帶作為數(shù)據(jù)存儲介質(zhì)的古老電腦聋伦,可以說我基本上完整的經(jīng)歷了從80年代后期到如今這段時間內(nèi)個人電腦的發(fā)展歷程夫偶,而電腦也成為了我生活中必不可缺的重要組成部分,所以從事一個能夠與自己愛好相符合的工作是一件非尘踉觯快樂的事情兵拢,而如何能夠讓愛好與工作快樂的結(jié)合起來則是我一直所追求的目標(biāo)。
士兵生涯
我的第一份工作是軍人逾礁,高中畢業(yè)说铃,北京访惜,汽車兵,2年義務(wù)兵+3年一級士官腻扇。這是一個與絕大多數(shù)科班程序員所不同的人生道路债热,甚至很多人根本無法將這兩個職業(yè)聯(lián)系到一起去,所以這不同的經(jīng)歷也塑造了我與絕大多數(shù)程序員不同的性格幼苛、思想和處事方法窒篱。
在5年的軍旅生涯中,部隊的特殊環(huán)境塑造了我受用至今——并且我堅信會受用終身的幾個重要品質(zhì):堅韌舶沿、果斷墙杯、不服輸、敢吃苦括荡。另外高镐,還有兩個經(jīng)歷給了我特別重要的兩件東西:
- 一個是長期的部隊軍級機關(guān)工作鍛煉了我的為人處事/社會交往能力;
- 另一個是在兩次考軍校失敗導(dǎo)致職業(yè)軍人夢想失利后畸冲,通過自身努力重新從人生低谷找回自我價值的經(jīng)歷告訴了我嫉髓,努力+堅持=回報。
北漂程序員
其實程序員這條路并不是我曾經(jīng)優(yōu)先選擇的內(nèi)容邑闲,如前面所講算行,我的第一理想是做一輩子軍人,在當(dāng)時监憎,程序員這個選項應(yīng)該是排在前三以外的纱意。
走上這條路,完全是機緣巧合鲸阔。2007年初偷霉,在我一級士官即將服役期滿的時候,我父親的好友(也是對我影響最大的人之一)給我了一個到他的公司當(dāng)程序員的機會褐筛,同時也告訴我了一句相當(dāng)重要的話:如果你不把自己最喜愛的愛好當(dāng)專業(yè)來干类少,那么就是在浪費時間。
所以渔扎,我開始學(xué)編程也就是從那時開始的硫狞。
我的編程入門語言是在部隊服役后期突擊學(xué)習(xí)的Delphi,只可惜2007年的Delphi已經(jīng)進入晚年晃痴,除了很多老軟件公司還在使用它來維護已有產(chǎn)品以外残吩,國內(nèi)的軟件行業(yè)已經(jīng)是Java和.NET的天下,但是不管怎樣倘核,Delphi讓我第一次了解了編程是怎樣的泣侮。
2008年,退伍后的我加入了父親好友的E公司紧唱,由于公司發(fā)展和業(yè)務(wù)需要活尊,我從剛剛?cè)腴T還遠未熟練的Delphi轉(zhuǎn)型到.NET平臺隶校,開始使用C#進行WinForm開發(fā)。
但是這一年的我蛹锰,對編程并沒有產(chǎn)生真正的興趣深胳,學(xué)習(xí)也并不主動,可以說浪費了很多的時間铜犬。另外舞终,因為先前所說過的部隊經(jīng)歷讓我的人際交往能力比公司其他同事更強,所以我做的更多的實際上是項目調(diào)研癣猾、需求分析权埠、產(chǎn)品維護這樣的工作。但是現(xiàn)在想一想煎谍,其實這些工作對現(xiàn)在的我來說十分的重要,因為通過這些工作龙屉,我走遍了半個中國的省會城市呐粘,讓我在5年的部隊封閉生活之后開拓了眼界,接觸了各種人和事转捕,同時還積累了大量客戶需求與分析工作的經(jīng)驗作岖。
2010年,由于國內(nèi)軟件行業(yè)的客觀環(huán)境五芝,以及公司所屬某集團公司的內(nèi)部政策變化痘儡,公司的經(jīng)營遇到了困難弥雹。我跟隨父親的好友空降到了H公司——一個隸屬于某大型電力建設(shè)集團旗下传藏,擁有央企背景的軟件公司。
為了能夠順利的進入這個公司余指,并符合公司業(yè)務(wù)需要醉途,在這一年的上半年矾瑰,我開始學(xué)習(xí)ASP.NET以及WebForm框架,正式走向Web應(yīng)用程序的開發(fā)道路隘擎。但是這個時候的我殴穴,依然沒有對編程產(chǎn)生真正的興趣,直到加入H公司之前货葬,我的ASP.NET學(xué)習(xí)水平仍然非常的基礎(chǔ)采幌,僅僅能夠達到做簡單應(yīng)用的水平,所以那時候的我對于進入一個“擁有央企背景”的“大軟件公司”是相當(dāng)忐忑不安的震桶。不在父親好友的建議下休傍,認真學(xué)習(xí)了那個時候很多.NET程序員都不認真學(xué)習(xí)的Javascript,所以相對于其他入門級別的ASP.NET程序員來說尼夺,我能夠做出一些看上去比較“專業(yè)”的Web前端效果尊残,這在我進入H公司初期起到了一定的“隱藏真實實力”的效果炒瘸。
成長、回家
加入H公司之后的兩個月時間寝衫,我在進一步熟悉了解公司情況和業(yè)務(wù)的同時開始發(fā)奮深入學(xué)習(xí)ASP.NET顷扩。可能是因為從小就對電腦特別熟悉的緣故慰毅,所以當(dāng)我真正專心下來學(xué)東西的時候隘截,進度變的相當(dāng)之快,短短兩個月時間汹胃,已經(jīng)讓我對ASP.NET的了解有了突飛猛進的變化婶芭,也讓我的信心逐漸增強,在我眼中着饥,我已經(jīng)與其他同事沒有明顯的技術(shù)差距了犀农。
但是就在技術(shù)實力逐漸豐滿的同時,我發(fā)現(xiàn)H公司存在有特別嚴重的問題:公司一把手對技術(shù)一竅不通宰掉、毫無核心開發(fā)能力呵哨、技術(shù)水平低下、項目管理及其混亂轨奄、公司內(nèi)部勾心斗角……等等孟害。也正是因為這些問題,讓我陰差陽錯的獲得到了一個特別重要的“戰(zhàn)略緩沖期”:
- 一方面挪拟,因為我先前積累的相比公司其他人員更強的社交能力和項目經(jīng)驗挨务,我逐漸走上了項目管理崗位;
- 另一方面玉组,堅持不斷的學(xué)習(xí)谎柄,讓我感覺在技術(shù)上,我與身邊的人逐漸拉開了距離(我學(xué)會JQuery是在廣州返回北京的列車上完成的球切,當(dāng)時的學(xué)習(xí)激情和效率相當(dāng)之高)谷誓,而這種進步的感覺讓我開始對編程逐漸產(chǎn)生興趣,一發(fā)不可收拾吨凑。
2011年捍歪,我憑借自己對技術(shù)發(fā)展的判斷,在國內(nèi)相關(guān)資料還很匱乏的情況下鸵钝,開始購買國外的正版英文PDF教材自學(xué)ASP.NET MVC 2糙臼,以及很快便推出的ASP.NET MVC 3。通過這樣的學(xué)習(xí)恩商,讓我獲得了特別重要的幾項進步:
- 再也不怕看英文教材变逃,這樣我能夠比他人更早更快更準(zhǔn)確的獲取并學(xué)習(xí)新的技術(shù);
- 通過對ASP.NET MVC的學(xué)習(xí)怠堪,讓我完全從ASP.NET WebForm的傳統(tǒng)開發(fā)思想上解放了出來揽乱,對Web應(yīng)用程序開發(fā)有了更加深入和整體的認識名眉,同時也對流行技術(shù)和TDD等思想有了更加全面的了解和學(xué)習(xí);
- 在學(xué)習(xí)過程中凰棉,了解并學(xué)習(xí)了敏捷軟件開發(fā)這個相當(dāng)重要的東西损拢,并且直接影響到我對軟件行業(yè)的看法和對未來發(fā)展方向的認識。
2012年初撒犀,我已經(jīng)是項目管理部副主任福压,正當(dāng)我努力改變公司項目管理混亂的情況并嘗試推行敏捷思想的時候,一場突如其來的由高層勾心斗角引發(fā)的栽贓嫁禍砸到了我的頭上或舞。此時的我荆姆,已對北京的生活壓力和個人能力無法完全發(fā)揮感到心力交瘁,所以我毅然決然在春節(jié)前辭職映凳,憑借之前不斷學(xué)習(xí)積累的技術(shù)經(jīng)驗和自學(xué)的ASP.NET MVC技術(shù)加入了提倡敏捷與個人發(fā)展的S公司西安第一分公司胆筒,從北京回到了我闊別9年的西安家中。
煎熬
2012年3月诈豌,S公司腐泻,一直到現(xiàn)在我都認為非常不錯的公司,踐行敏捷队询,注重個人成長。
在S公司构诚,我第一次接觸了歐美離岸外包項目蚌斩,以及敏捷實踐,在這里讓我對敏捷軟件開發(fā)有了深刻認識和體驗范嘱,技術(shù)水平也有了進一步的提高送膳。可以說丑蛤,在加入S公司之后的相當(dāng)長一段時間內(nèi)叠聋,我都是快樂的。
但是受裹,隨著時間的推移碌补,我所在的團隊和項目中的一些我無法改變的客觀問題逐漸暴露出來:
- 由于我所在的項目是西安分公司的第一個大項目,團隊組建的比較倉促棉饶,招人時要求不夠高厦章,技術(shù)水平與項目要求存在差距;
- 團隊成員不愿主動學(xué)習(xí)技術(shù)照藻,尤其是去主動學(xué)習(xí)流行技術(shù)袜啃,導(dǎo)致類似JQuery這種東西在一年后依然用的磕磕巴巴,另外很多有益的東西無法推行下去幸缕,比如TDD群发;
- 團隊成員并不愛好編程晰韵,在我看來依舊是把編程當(dāng)做混飯吃的工具,沒有什么技術(shù)追求熟妓;
- 團隊成員一些根深蒂固的觀念難以扭轉(zhuǎn)雪猪,敏捷依然停留在表面形式上,沒有扎根到心里滑蚯,甚至到一年以后浪蹂,很多敏捷開發(fā)中的重要內(nèi)容,比如CodeReview和回顧都無法堅持做下去告材;
這時坤次,通過和公司經(jīng)理的幾次技術(shù)交流中,我對Ruby on Rails有了初步的了解(先前只是聽說過但沒有研究過)斥赋,在進一步了解的過程中缰猴,我逐漸發(fā)現(xiàn)Ruby語言和Ruby社區(qū)對我的吸引力越來越大,也讓我對開源軟件和開源文化有了越來越多的認識疤剑,以至于最終讓我的思想有了徹底的改變:原來程序員的世界可以這樣的快樂和活躍滑绒。
隨著對Ruby及Rails如癡如醉般的不斷學(xué)習(xí),我感到工作變得越來越不快樂隘膘,工作效率也越來越低疑故,這種感覺甚至可以說是是一種煎熬。
在我看來弯菊,這些不快樂是由于以下因素造成的:
- .NET程序員受國內(nèi)環(huán)境以及微軟技術(shù)的影響纵势,社區(qū)活躍度不高,普遍技術(shù)水平偏低管钳,對流行技術(shù)和思想的接受速度太慢钦铁,難以在技術(shù)上找到共同語言或者同道中人。
- 個人經(jīng)歷所塑造的性格與周圍的同事差異太大才漆,雖然嘗試不斷改變自己牛曹,但是這種過程相當(dāng)艱難,并且很不舒服醇滥;
- 個人技術(shù)進步與團隊成員形成的落差(世界上最遙遠的距離不是我努力學(xué)習(xí)黎比,你不努力學(xué)習(xí),而是我在努力學(xué)習(xí)你卻認為我是在裝逼)鸳玩。
- 因為團隊的能力不足焰手,造成項目在交付階段問題重重,而我個人又無力改變這一切怀喉。
- 長期拴在一個項目之上书妻,讓我無法將業(yè)余時間所學(xué)的東西用在實際當(dāng)中。
自我改變
既然無法改變環(huán)境,那么只能改變自己躲履,我開始尋找能夠讓自己快樂起來的辦法——參加技術(shù)社區(qū)活動见间,去尋找志同道合的伙伴。
2013年工猜,我在ruby-china上結(jié)識了Andy Wang和Allen Wei等西安地區(qū)的Rubyist米诉,后來大家一拍即合的組織起了Xi'an Rubyist的線下技術(shù)交流活動。
由于Andy和Allen均是SOHO多年的資深Freelancer篷帅,在與他們的接觸交流過程中史侣,我突然意識到我所學(xué)的Ruby和Rails等技術(shù)與其他技術(shù)不太一樣,在社區(qū)更加活躍魏身、自由惊橱、新潮的同時,還有一項特別實惠的優(yōu)勢:在家辦公的可能性更大箭昵。
在他們二人的鼓勵和支持之下和研究了他們的SOHO經(jīng)驗之后税朴,Ruby on Rails + SOHO這對組合似乎可以成為解決我的煎熬狀態(tài)的首選解決方案:
- 我可以用一個我喜愛的技術(shù)來工作,而不是用為工作而選擇的技術(shù)家制;
- 我可以擁抱一個崇尚技術(shù)的社區(qū)正林,找到志同道合的人,選擇自己喜愛的團隊颤殴;
- 我可以享受SOHO帶來的一系列提升生活質(zhì)量的好處(至于都有什么好處觅廓,ruby-china上已經(jīng)有很多經(jīng)典帖子來說明了,在此不再重復(fù))涵但;
換句話說哪亿,是時候走出我的舒適區(qū)了,我需要再一次改變贤笆,技術(shù)在身,無可畏懼讨阻。
所以芥永,在持續(xù)了五個月的瘋狂學(xué)習(xí)之后,我選擇了辭職钝吮,走上了SOHO程序員之路埋涧。
在路上
現(xiàn)在,我在家中奇瘦,心情舒暢棘催,沒有了天天堵車上班的痛苦,也沒有了先前的煩惱耳标。
寫下這篇文章醇坝,作為SOHO程序員之路的開始,我知道后面的道路會有以前不曾有過的各種困難和挑戰(zhàn)次坡,但是我很喜歡Terry Tai同學(xué)分享給我的一句話:
“當(dāng)你決定出發(fā)呼猪,最大的困難已不復(fù)存在画畅!”
我信,我行宋距!