在知乎上看到一個問題,如何確定自己是否適合做程序員?
好多答主都說需要智商高,
對計算機有興趣愛好,
抽象能力要好。
……
啊呸,也不知道這些剛下飛機的答主是不是程序員。
我在 it 行業工作了三年,換了幾家公司,所以就以我三年程序員的經歷,來說說做一名程序員需要什么。
1、喜歡運動,保持良好的身體去扛住 996
2、極強的心理素質,看著每天洗臉盆里的頭發絲毫不慌
3、強大的邏輯思維能力,便于和產品撕X
4、獨到的審美,可以瞬間在優衣庫中挑出最靚的格子衫
5、會修電腦、破解QQ密碼,不解釋!
6、忍受孤獨,實力單身
7、家里有礦,過了 30 歲就要準備退休的事了
如果你同時符合這七種要求,那你明天就可以來上班了。
咳咳,好了,玩歸玩,鬧歸鬧,別拿職業開玩笑,下面認真說一說做一名程序員都需要什么。
1、自學能力 + 持續學習
自學能力對于程序員來說是非常重要了,IT 需要的知識技術太多了,你工作用到的知識,大部分學校都沒有專門的課講授,更別指望工作后有誰專門教你,有的最多是技術分享,做一些介紹,想要掌握還是需要自己私下學習。
當然了,大部分技術工作都需要自學能力,但是程序員行業尤其重要。
重要到什么程度呢?
這么說吧,我剛工作那會用的框架,三年后基本都沒人用了,如果想繼續混下去,就要跟著趨勢學,否則就要被淘汰。
在工作中還會遇到非常多的問題,如果不是靠自己學習和鉆研,去解決大部分問題,那剩下的路就很難走了。
同事也都有工作,沒有人會一個一個問題給你解決,都是自己查方案,自己學習,自己解決。
所以,沒有持續的自學能力,千萬別做程序員。
2、習慣總結積累 + 輸出
上面說了,程序員在工作中會遇到很多問題,所以你的經驗大部分來自于踩坑。
如何判斷一個程序員能力高低?
可以從他對問題的看法,解決思路,還有對一個方案可能出現的問題這些方面判斷。
那你問這又和總結積累有啥關系呢?
有關系,程序員能力高低不是天生的,也不是職業時間越長能力越高。主要還是在工作中的總結積累,碰到一個問題,總結下來,加深自己印象,下次遇到同樣的問題可以快速想起解決方案。
光靠大腦記憶是有限的,并且沒有記錄,印象會更淺,每天都有問題,很容易忘了以前遇到同樣的問題是怎么做的。
如果你能把積累下來的問題,總結成文章,用清晰的邏輯表達出來,再給別人講明白,那你的能力就會有很快的提高了。
一般來說,程序員稱自己”碼農“都是自嘲,但是如果你不會總結積累,那可能就是真的碼農了。
3、專注力好
寫代碼和寫文章一樣,也是需要狀態的,狀態好,你就會思如泉涌,狀態差,輕則寫出來的代碼質量很差,重則 bug 成山。
當你調試問題或者捋思路的時候,可能需要花20分鐘進入狀態,此時如果你被一些因素打斷了,那你的思路可能就斷了,需要再花一些時間重新捋邏輯。
當你反復這個過程,等一天結束的時候你就會發現今天什么也沒干。不過專注力是可以訓練的,而且上班程序員一般也不會有很多外界干擾,自己注意好就可以。
4、英語四級
也不一定非要英語四級,但是至少要知道一些基本的專業詞匯,寫代碼的時候起名也能用上含義差不多的單詞,如果你工作之后還用拼音做變量,那可能就要被同事鄙視到天上去了。
四級過了,起碼能稍稍看懂英文文檔,工作之后好多地方還是需要看英文文檔的,例如 github 上面的一些文檔,stackoverflow上提問的問題,谷歌官方文檔等等。
總是指著翻譯軟件或者在線翻譯,效率很低的。
5、深入淺出的能力
你需要把專業的知識用簡單的語言解釋給非專業的人。
你的框架可能很復雜,技術很專業,但是程序員不光和電腦打交道,還要和產品、設計、運營同學等對技術了解不多的人打交道,在對需求的時候,就需要你用他們能理解的話,解釋你想表達的技術方案。
還有在公司內部做技術分享的時候,雖然大部分都是做技術的同學,但是技術棧可能不一樣,如果你一直基于自己的認知講,那對完全不了解的人可能是折磨。
我參加過多個技術分享,絕大部分的人都是基于所有人的技術棧都一樣講的,搞得我大部分時間都在刷手機。
好了,說了五點,也沒有提要有興趣愛好,為什么?
因為這不是必要條件,并且可能百分之八十的程序員都不是基于興趣愛好才選的這個行業,在我身邊看到的真正對技術感興趣,是自己的興趣愛好所在的,真的是少之又少。
但這并不影響我們熱愛這個行業,也正所謂,干一行愛一行。
最后說明一下,上面的段子基本都是自黑,程序員職業其實也是正常的職業,就和每個職業都一樣,都有外界的一些誤解。我身邊的同事基本都沒有格子衫,大部分也都有另一半,
為啥呢?
還不是程序員是一群優秀的人嘛!
本文首發于公眾號「后知后jue」,微信搜索關注回復「1024」,你懂的!