- 解憂程序員:高薪編程、求職面試與成長轉型寶典
- 安曉輝
- 4935字
- 2019-01-04 16:37:01
問答|我適合做軟件開發嗎

最初我在運營微信訂閱號“程序視界”時,設置了兩個免費的互動欄目:“程序員的職業規劃”和“有問有答”。很快就不斷有人加我微信,找我聊程序員職場相關的話題。短短兩個月內,線下與5個人當面討論過,微信和QQ上聊過的人就太多了。
后來我把聊天記錄都匯聚在一起,回顧了一下,發現在初入行這個階段,有一些共性的問題,特此寫這篇文章,希望對將要加入計算機軟件行業,從事開發工作的朋友和剛剛開始做軟件開發的朋友有所幫助。
對于初入行的朋友來講,有很多的憂慮和擔心,我從整理的聊天記錄里發現了下面7個問題:
●我是否適合做軟件開發?
●哪個方向好,比較有前途?
●學哪種語言?
●怎么學?
●第一份工作怎么找?
●怎樣才能變優秀?
●怎么才能開始行動起來?
這次我會著重說第一個問題,捎帶著可能會提第7個問題,其他的問題我們留到后面去聊。
三位朋友的提問
2016年1月1日,“小眼睛”在微信上問:
您好,我是一名23歲的建筑系剛畢業學生,對目前的工作確實提不起興趣,沒有成就感,想嘗試考研轉到程序員行列,不知道自己是否合適,很迷茫,不知道您有什么好的建議嗎?
2016年1月6日,“想飛的小鳥”在QQ上問:
你好,我大學學的專業是電子信息科學與技術,畢業快5年,但畢業之后轉行從事了建筑建模工作近5年,而后跳槽,接著公司破產,現處于待業狀態。現在又想轉行做回IT,我馬上29歲,外面有些iOS和安卓開發的培訓,我在疑惑這些培訓是否靠譜,我的年紀對于重新學習IT會不會有點遲……
2016年1月9日,“誰奪走了我的愛”在微信上問:
您好!我29歲,在北大青鳥培訓Java、C#,初級課程學完,中級開始,但是學得并不是很好。總是處在迷茫中……
前面是幾位想要從事軟件開發工作的朋友問我的問題,昵稱是我隨便起的。還有一些朋友問到類似的問題,這些問題歸納起來,其實是一個問題:我是否適合做軟件開發?
我是否適合做軟件開發
這其實是一個非常難以回答的問題,業界并沒有一個標準,說哪種人適合做軟件開發,哪種人做軟件開發就一定能大有成就。
溫伯格在《程序開發心理學》一書的第8章,專門討論了性格因素對程序開發的影響。溫伯格認為:
相比較為穩定的智力因素,性格特征對軟件開發的影響更大,甚至遠遠超過人們通常的估計。
他提到了專業程序員需要的一些性格和能力,諸如“在高壓力的環境中堅持一個多星期的能力”“適應變化”“愛好整潔”“謙遜”“幽默感”等。然而他后來又說,我們從正在從事軟件開發工作的人身上來尋找適合這個職業的性格,可能錯過了那些適合這份職業但還未進入這個行業的優秀人員身上表現出來的其他性格。
MBTI把人分為16種性格類型,每一種都有相對適合的工作。其中,INTJ和INTP這兩種類型的典型職業里有提到程序員、計算機軟件設計/開發人員。
也許我們做個MBTI測試就可以明確自己是否適合做軟件開發?也不是的,我的MBTI類型是INFP,但我都做了十多年軟件開發了……
看起來似乎沒有一種明確的方法可以判定一個人是否適合從事軟件開發工作……這是一個令人沮喪的結論。
然而我們也不必因此而失落,實際上MBTI性格類型、還有霍蘭德職業興趣理論,都提供了一些手段幫助我們界定自己適合的職業范圍。溫伯格列出的一些性格特點也確實是程序員需要具備的。
所有這些都從群體特征上,幫助我們縮小了選擇范圍。但對一個個體而言,到底是否適合做軟件開發工作,還存在很多的具體因素需要區別對待。
驗證適合與否的實操方法
我知道一套具有很強可執行性的實操方法,能讓一個個體在比較短的時間內判斷出來自己是否適合從事軟件開發工作。非常簡單,就是:先評估性格和興趣特征,然后通過實踐去嘗試。
性格特征評估可以用MBTI,興趣特征可以用霍蘭德,都有標準的量表,這些理論和量表,得出的結論僅供參考,而且它們通常也不會板上釘釘那般給你一個方向,說“就這個了,去吧,信我者得永生”。
量表測試只提供一個相對適合的參考職業范圍,更重要的是我們如何通過實踐去驗證某個職業真的適合我們。
結合提問的朋友的情況,還有我自己的經歷,我覺得要從個人具體情況來談如何通過實踐驗證自己是否適合軟件開發,大概有三類:
●即將走向社會的學生。
●正在從事其他行業的職場人士。
●暫時無業者。
當下的職場狀態,會在很大程度上影響你的選擇。上面的劃分,正是從個人的職場狀態來的。
有的人可能很不滿意現下的工作但又忙得像高速旋轉的陀螺,根本停不下來,更別說花時間去實踐了。而對于學生來說,則會有比較充裕的時間在較輕的壓力下來驗證(沒壓力也可能難以有動力^_^)。對于無業者來說,如果沒有積蓄,也沒有父母或另一半的經濟支持的話,生活壓力會比較大,會大大地影響選擇;而如果還能過得去,就可以相對從容地去驗證自己是否適合從事軟件開發。
不論哪種情況,都不要隨隨便便把自己像“行貨”那樣交出去,政府、家人都不能為你負責,只有你自己才能為你的選擇擔起責任來。
注:王小波有篇雜文,《“行貨感”與文化相對主義》,可以看看。
好啦,現在可以來聊聊實踐驗證的三個步驟了。
1.職業信息搜集
想必你考慮是否要成為一個程序員時,已經了解了很多信息了。比如計算機軟件行業是怎樣一個行業、軟件是什么、開發人員怎么生產軟件、行業就業前景、典型的業內公司的情況等。
那這些信息夠不夠呢?要回答這個問題,得從職業的定義說起。
通常我們所說的職業指職能,比如醫生、教師、程序員,實際上包括兩個維度:職能和行業,職業的定義應該是這樣的:
職業=行業×職能
行業是指其按生產同類產品或具有相同工藝過程或提供同類勞動服務劃分的企業或組織群體的集合,如飲食行業、服裝行業、機械行業等。從這個角度看,構成行業的很重要的基礎因素就是知識組合,一個行業就有一套知識系統。
職能則著眼于企業內的崗位的技能分工,比如會計、出納、招聘專員、軟件開發工程師,要求的技能都不一樣。
基于這樣的認識,我們在搜集職業信息時,要了解行業信息、行業內產品信息、知識范疇、行業內的企業構成、行業的前景、企業內的崗位信息、對應崗位的人具體干什么事情、需要什么樣的技能、有什么樣的社會地位。
所有這些信息都是相對客觀的信息,可以從網絡、傳統媒體、圖書等各種渠道獲取到。要大量的,詳實的收集相關信息,這將有助于幫助我們判斷某個職業是否適合我們。
比如一個人對使用計算機完全不感興趣,對編程語言完全不感興趣,那基本上就可以排除做軟件開發的可能了。
2.生涯人物訪談
我們搜集了客觀的職業信息,還要了解從事某一職業的個體的感受,說白了就是從事某種職業的人的狀態如何。
以快遞行業為例。當我們想做快遞員時,了解快遞員的日常工作情況、正在做快遞工作的人員的感受,對我們的選擇影響非常之大。比如你很難接受在寒風和霧霾中開著電動三輪車走街串巷,那么快遞員職業就不適合你。
以軟件開發工程師為例。很多人搜集了職業信息之后會對CBD、高薪、27寸大顯示器、Mac Book、規律、專業、智慧等感興趣,覺得所有這些點都是自己想要的,就準備報名上培訓班了。然而,如果你不實際接觸一個從事軟件開發工作的活生生的人,就很難了解真實情況:需求經常變更、加班是行業潛規則、技術更新快、多數領導只關心進度不關心人、壓力大、Bug會讓你抓掉所有頭發、隨時可能被炒魷魚或者被告知公司關門……
所以,找到從事相關目標職業的人聊一聊非常有必要。我大學畢業時找工作,眼前一片茫然,不知道每個行業如何,也不知道找誰去問,可是我遠在農村種地的父親卻深知了解具體工作情況的重要性,居然拐彎抹角托了一長溜人打聽了四川成都一家航天研究所的情況。所以,有時我們找不到從事目標職業的人物,只是因為我們沒把生涯人物訪談當一回事兒,沒有意識到其重要性。
有時我們也會找錯人,比如我們想了解程序員的工作狀況,如果你找到一個祥林嫂式的人物,他強大的負能量和裹腳布一樣長的抱怨,很可能誤導你得出錯誤的結論。所以,我們要找那些看待事物比較客觀的人,有時為了避免受單一樣本的失真影響,還要多找幾個人。
其實每一個人談論的都是自己。看起來他在說公司、說產品、說團隊的氛圍、說加班的感覺、說需求的變更……其實都是在說自己的感受,而同一件事對人的影響,在不同的人身上差別很大,有人覺得無傷大雅,有人可能就痛不欲生。所以,我們在做生涯人物訪談時,也要有區別的對待、批判性的思考,不能學過河的小馬。
了解、接觸軟件開發到底是怎么回事兒非常必要,可能你找個行內人聊上一個小時,就能得出自己不適合干軟件開發這樣的結論。當然也可能你聊著聊著眼睛就會越來越亮,越聊越發現自己適合干這個,那就可以進入職業情景體驗環節了。
3.職業情景體驗
現在有很多兒童職業體驗館,可以讓孩子們在不同職業體驗主題店中扮演各行業成人職業角色,在玩樂中培養職業理想,規劃自己的未來。
對想要進入某個行業從事某種職業的成年人來說,職業情景體驗非常重要。如果你能在實際工作環境中待上一天,就可能改變你對某種職業的看法。
我個人認為,職業情景體驗分兩個層次:
●近距離觀察。
●實作體驗。
(1)近距離觀察
近距離觀察,可以在你無法立刻從事相關工作的情況下采用。比如你已離開學校,進入其他行業,就像前面提出問題的“小眼睛”那種情況,就可以先采取這種方式來觀察。具體展開,又有很多不同的方式。
●到軟件園附近,觀察過往的人的精神狀態。
●中午混在去吃飯的人群中,留意大家在聊什么,是吐糟需求又改了,還是Bug找不著,還是領導又強制加班了,這些信息都能得到,到軟件園附近的小飯館,也可以聽到很多有趣的談話。
●找一個從事軟件開發的朋友,到他的公司待一天,看看大家的工作狀況,多觀察幾個人,看他們的精神狀態。
●到車庫、必幫或者3w等咖啡館喝杯咖啡,支楞起耳朵聽聽周圍的人是不是為創業瘋魔了
……
只要有心,有很多途徑可以讓你較為深入地從活生生的人的角度來了解一種職業。
有時你看看從事某種職業的人的表現,就能篤定自己是否適合做這個。同一個行業的人會有很多共同表現,你看到的那些人可能就是你將來的樣子,你可以選擇是否成為那個樣子。To be, or not to be,往往就在一瞬間。
劉邦見到秦始皇出游,說了一句話——“大丈夫當如是也”,后來建立漢朝。
克林頓原本在讀音樂系,吹薩克斯管,17歲的時候遇到肯尼迪總統,后來決定從政當總統,真當上了總統。
這些例子可能離我們較遠,但他們確實說明了榜樣的力量。你要成為什么樣的人,就和什么樣的人在一起!所以,你近距離地觀察程序員的生活,留意上兩天,就可能會做出正確的決定。
(2)實作體驗
你觀察了某個職業人群,覺得自己就是要成為那樣的人,那就可以再往前走一步,看看是否真能做起來。
去做做看,這就是驗證是否適合軟件開發的終極武器。
正在上班的人可能會說工作挺忙的沒時間去做做看,其實時間總是有的,就看你是否真的渴望去做這件事。白天上班,那晚上呢、早上呢、周末呢?如果你真的重視一件事,就可以為它擠出時間來。當一個人不想做一件事時,總會找到理由的。
對于軟件開發來講,試試看的成本很低——因為自己一個人就可以開發點東西出來。
所以,我給那些想轉做軟件開發的朋友的建議,基本上都是這樣的:
先找本教授寫的編程語言的書(視頻等)來自學,看自己能否學進去,能否自己把環境搞起來做點小實驗,堅持一段時間,看看自己是否還有興趣,如果還有興趣,那就把它學完。也可以去報一個軟件開發培訓班,培訓可以帶你快速熟悉一個技術方向。但不能只依賴培訓,更重要的是堅持自我學習和自主練習。
一旦你能通過自我學習掌握一門編程語言,就可以繼續往下走,做更深入的體驗。比如自己去做一個解決實際問題的小軟件(像圖書管理系統、記賬、博客系統、待辦事項等),或者尋找免費兼職的機會,這樣你可以鍛煉自己掌握的技能,也可以進一步積累經驗,判斷自己是否適合繼續往前走。
如果有機會,能免費進入一個公司去實習或兼職也是非常好的,在一開始,重要的是鍛煉的機會。為將來正確的方向,花上一點時間和代價,非常值得。
四句話總結
洋洋灑灑好幾千字,其實總結一下,核心意思就四句話:
●從性格和興趣角度判斷是否適合做軟件開發。
●搜集客觀的職業信息,從知識、技能、工作內容上幫助判斷。
●通過生涯人物訪談了解別人對某種職業的感受和看法。
●通過近距離觀察和實作這兩種方式的職業情景體驗,進一步驗證軟件開發是否適合自己。
如果我們能按照上面的方法走完整個過程,我們的決定就會靠譜很多。