因為種種原因想要轉行做程序員的人馒稍,總會有這樣的困惑:我是否適合做程序員?讓我們來看看知乎上Hugo Wu的回答
從人的角度看剃执。
衡量一份工作是否適合自己的標準至少有三個:你所擅長的漠秋、你所喜歡的、對你最有價值的(最能掙錢的)罕扎。如果你把世界上所有的工作按自己的標準分類到這三個組里聚唐,理想的狀態(tài)是這三個組存在交集上,然后你從這個交集里選一個腔召。然而不幸的是杆查,對有些人來講,這三者的交集為空臀蛛,還有更不幸的情況是任意兩組交集都為空亲桦,最不幸的情況是這三個集合本身都為空崖蜜。當一個人不知道自己擅長什么,也不知道自己喜歡什么客峭,也不知道什么對最自己的人生最有價值的時候豫领,就屬于這種最不幸的情況。根據(jù)題目描述不難推測出:程序員這個職業(yè)目前不在題主的擅長集舔琅,也不在熱衷集等恐,或許在價值集。
從程序員這個職業(yè)的角度看搏明。
判斷一個人是否適合做程序員的標準很多鼠锈。最關鍵的幾個是:
0. 理解力(或自學的能力):程序員的起點。具有這個能力的特點是星著,如卡馬克說的:“給我一冰箱的漢堡和互聯(lián)網(wǎng),我就能解決所有問題粗悯⌒檠”。如果你從小養(yǎng)成了個習慣或思維定勢——覺得沒有老師教就學不會样傍,那你不適合當程序員横缔。如果你學了的東西只是為了過考試,比如學完高中物理還買個仙人掌放電腦前防輻射衫哥,你也不適合當程序員茎刚。
1. 邏輯思維力(或推衍的能力):這個是做稱職程序員的底線。比如不能寫的代碼出個Exception就抓瞎不知道哪里出了問題撤逢,而是有能力從Exception順藤摸瓜反推出哪里出了問題膛锭。Code即邏輯,Code有問題即邏輯有問題蚊荣。沒有邏輯的人是無法找到邏輯漏洞的初狰,也寫不出條理清晰的代碼。
2. 抽象思維力:這個能力大體可以決定一個程序員的上限互例。沒有這個能力是做不出一切皆文件這種抽象的奢入,可以試試學習函數(shù)式編程,如果無法理解并使用高階函數(shù)媳叨,你不適合做程序員腥光。再來幾個更初級的例子。如果你學寫代碼的過程中糊秆,理解指針的指針的指針這個東西的時間超過了一天武福,那你不適合當程序員。(強調一下扩然,這里不適合是指你無法成為一個優(yōu)秀的程序員艘儒,你想做當然肯定是可以做的。)
3. 專注力:我理解的專注力只是興趣的衍生品,你打Dota打CS打個幾個小時能越打越精神界睁,為什么觉增?因為你覺得有趣兒。如果也覺得寫代碼有意思翻斟,那專注自然就不是個事兒逾礁。
4. 想象力與記憶力:這個不是說過目不忘的那種,只是說你大概記得有什么類访惜,都有什么函數(shù)嘹履,每個函數(shù)里的大體過程是什么樣的。然后走路债热、坐地鐵的時候就可以用想象力在腦子里做代碼的重構啦砾嫉,找Bug啦什么的,然后回到電腦前就噼里啪啦敲代碼窒篱。我聽說有人在夢里也能寫代碼焕刮,我還沒有鍛煉出這個技能。當然墙杯,這些能力不是必須的配并,你隨身帶個筆記本也行,就是效率低些高镐,影響職業(yè)成長的上限溉旋。
5. 英語:很遺憾地,目前多數(shù)有價值的東西都是英文的嫉髓。所以無障礙閱讀Stackoverflow的回答是起碼的观腊。
6. 閱讀速度:我想不出一個和合適的能力名與之對應。大體是指看書岩喷、看網(wǎng)頁恕沫、看和理解代碼的速度、如果有需要纱意,能從一大堆Log中迅速找出關鍵信息(當然不是僅僅閱讀速度的問題婶溯,還確定于你所能熟練使用的文本處理工具)、能抓到在屏幕上一閃而過的異常訊息(不是說能記住偷霉,而是說一眼就能感覺出有些不對勁迄委,然后回去細看。)有不少人也不笨类少,但是聰明反被聰明誤叙身,從小不怎么看書,閱讀速度上不去硫狞,一個Stackoverflow的回答信轿,有人掃一眼幾秒就抓到重點晃痴,有人要看3分鐘。有人看代碼速度财忽,一目十行倘核,再善用佳軟,再加強大的理解力和扎實的基礎知識即彪,找個Bug幾分鐘的事兒紧唱,有人看代碼瞪著屏幕一個單詞一個字地看,文件一多就閱讀障礙了隶校,如果理解力再差些漏益,找個同樣的Bug找一上午。當然這個技能不是很核心深胳,因為它無法獨立帶來價值(有人看小說快绰疤,但是看代碼慢,就是由于別的核心能力不足舞终,閱讀速度快也沒太大用)峦睡。但是這個技能很錦上添花、拉開差距(閱讀速度+理解力=更快的學習能力)权埠。好在這個技能算是可以鍛煉的,只是如果你比別人晚了20年開始鍛煉的話煎谍,怕是再努力也要幾年才能追趕上攘蔽。
7. 溝通:很多人都覺得程序員不需要溝通,其實只是板磚碼農不太需要而已呐粘。你起碼要能清楚地解釋自己的方案满俗,更好地溝通是能把自己的好想法推廣出去。當然作岖,如果你1-4都是非常NB的水平唆垃,你不溝通也沒有問題。桃李不言痘儡,下自成溪辕万。你一個人把大家的代碼都寫了,你一句話不講沉删,大家也會把你當神的渐尿。
以上幾個能力,0-6應該在學校就獲取到80%矾瑰,7在學校獲取到50%砖茸。能把上面幾點全部做到很好的人是極少數(shù),能把其中的2殴穴、3點做好大體就算“適合”做程序凉夯,能在軟件行業(yè)找到合適的崗位了货葬。只是如果只有2、3點能做好劲够,在軟件業(yè)的職業(yè)發(fā)展不會很理想震桶。