優(yōu)秀程序員有什么特征?
優(yōu)秀的程序員應該有什么特征
興趣
興趣是一個程序員進步的原動力,促使你不斷學習,不斷積累,不斷進步;
興趣可以讓你更大可能的打破環(huán)境約束,去嘗試自己喜愛的技術方向;
興趣可以讓你在遇到困難時有更強的戰(zhàn)斗力,提升突破難題的可能性;
興趣可以讓你抵御各種誘惑,保持對技術的專注;
興趣可以自然而然的讓你追求把事情做的更好;
培養(yǎng)興趣
培養(yǎng)興趣最簡單的做法是“獎勵”,當你完成一個看起來有難度的事情時,大腦會獎勵你:“哇塞,我好厲害”;當你完成一個工作上的難題時,老大會表揚你:“哇塞,你好厲害!”。
簡單的來說,興趣培養(yǎng)可以通過不斷的自我認可和外部認可來達成。為了避免培養(yǎng)過程中你被打敗,應當盡量去選擇做一些“超出你能力一些,但是努力是可以達成,短期內(nèi)可以看到成果”的任務。
以學習二郎為例(把下面的內(nèi)容當做清單寫下來,每做完一個打一個勾):
3天內(nèi)看完語法
1天內(nèi)搭建好環(huán)境
1天把前面1和2的事情寫個博客公布出去,記得:不要復制粘貼,字要自己打,圖要自己截
3天的時間學習HTML + JS + Ajax的,然后寫個簡單的待辦事項網(wǎng)頁應用界面
1天的時間學會使用牛仔或者受Mochiweb,作為網(wǎng)絡服務器使用
2天的時間完成HTML + Erlang的Todo應用的前后端
2天時間把3,4,5,6-的事情發(fā)表到博客上去
3天時間學習的PhoneGap引擎的基本使用
2天時間修改你的網(wǎng)頁頁面以適應的PhoneGap,然后打包為的Android / iOS的應用
2天購買一個VPS(大概幾百塊一年)并配置好二郎運行環(huán)境
將你的應用安裝到自己的手機上,發(fā)送給同學,根據(jù)反饋做修改
方法
善用搜索引擎,谷歌必須保證隨時可用
學會找到優(yōu)質(zhì)的信息來源:微信號,微博號,知乎精華帖,博客,郵件列表,github上
不斷逼迫自己做的更好
隨時記錄筆記,推薦:印象筆記
不斷實踐
多做總結和思考(按天,周,月,年)
做好知識管理(KM)
十五分鐘工作法和兩小時工作法
看二手信息,但是不要過于信任二手信息
邏輯
邏輯大概是指人們思考問題的過程和方式,而程序員思維經(jīng)常被當做貶義詞,因為多數(shù)情況下程序員思考問題像個計算機,并把這種思考模式帶到了生活當中。
然而我接觸到的大多數(shù)優(yōu)秀程序員都并非如此,他們邏輯清晰,條理分明,表達順暢,也許他們的詞語不見的華麗,但是基本都是易于理解。
優(yōu)秀程序員并不僅僅要求有很強的數(shù)理邏輯能力,也要有很好的生活,溝通邏輯能力,很多人先天性的認為程序員就不應該是善于溝通的,不太明白為何有這樣的看法(也許是因為某些天才程序員很孤僻?然而天才孤僻很正常,不管是不是程序員)。
至于誰是優(yōu)秀程序員,這里不敢隨便列舉,免得被扔磚還引發(fā)別人誤傷大概的標準有:
多數(shù)并不熱衷各種會議,更加偏愛純技術會議
在各自的領域都非常有建樹,看得見的成果
知識廣博不狹隘,不會是某某語言粉這樣
寫出來或者講出來的東西不會停留在入門階段,往往干貨可以讓一個團隊或者公司消化很久
極致
計算機是個可量化的學科,因此我們?nèi)菀字酪患虑樽龅娜绾危翰睿话悖^好,優(yōu)秀。
對于程序員來說,極致大約可以包括四大方面:
代碼開發(fā)效率
庫和框架熟悉嗎?讀過并掌握對應的源碼嗎?
接口設計合理嗎?
自動化程度如何?
語言熟悉程度如何?是否掌握語言的各種高階特性?
復雜到看不出問題還是簡單到明顯沒有問題?
熟悉混帳嗎?熟悉SVN嗎?他們的原理如何?最佳實踐呢?
代碼運行效率
統(tǒng)計過CPU / GPU /磁盤IO /網(wǎng)絡IO /內(nèi)存的消耗嗎?
一次磁盤IO耗時多少?
玩家更新一次信息,背后發(fā)生了什么?
一次系統(tǒng)調(diào)通通常耗時多久?
GC時發(fā)生了什么?可控嗎?
團隊協(xié)作效率
了解團隊中的協(xié)作節(jié)點在哪來?如何提升協(xié)作點的效率?
團隊的研發(fā)管理方式如何?有何利弊?
我們真的需要這么多人嗎?
全局把控程度
整個產(chǎn)品是如何開發(fā),測試,發(fā)布,更新的?
整個產(chǎn)品用到了哪些技術棧?哪些是你掌握的?
這么多反問,其實不太友好。
程序員應該想辦法保證自己所做的每一件事情都至少是“較好”的,而不僅僅是“剛剛好”。
耐性
中國社會由于種種問題,相對于西方發(fā)達國家來說社會整體比較浮躁,急于求成。無論一個人有多么的天才,總是需要一個積累的過程。
你得知道,越是希望獲得越是要學會忍耐,快往往意味著犧牲了質(zhì)量(可以一定程度克服)。
沒有多少人是年輕有為的,這個價值觀本身也不見得是對的和好的,年輕人應該奮勇激進,但是不應該追求盡早的“學有所成”。
慢即是快,簡單即復雜,簡單即強大!
迎難
人們對于困難的事情會有本能的畏懼,但是我們依然需要去克服困難有段大概是這樣的觀點:
人類有很多生理本能,造就了很多不好的習慣,例如遲到,拖延,貪吃,貪睡,貪玩,不愛學習;
學習,減肥等對人類來說是個偽需求---因為“逆本能”,然而能夠克服這些“生理本能”的影響的人往往都是優(yōu)秀的人
要想優(yōu)秀,保持迎難而上的心態(tài)!
視野
“站在巨人的肩膀上”,不僅僅告訴我們應該去繼承前人,更加重要的是這樣可以看得更遠,看得更多,站的高不一定格局高,站的低則往往格局低。
設想一下:假設你回頭15年前,但是你的記憶都保留(彩票號碼當然你得忘記掉),你對這15年的規(guī)劃是否會更加合理?
學科通常都是成體系的,對一個學科要認識的更深,沒有好的辦法,只有認識的更全面才可以。
對于程序員的學習內(nèi)容,我有幾個建議(可能這需要花5年,8年,10年或者更多):
1.至少一門靜態(tài)編程語言,一門動態(tài)編程語言,一門函數(shù)性語言
2.會網(wǎng)編程,app編程
3.會大數(shù)據(jù)相關的技術:存儲,挖掘,分析
4.掌握基礎:計算機體系結構,操作系統(tǒng)原理,數(shù)據(jù)結構與算法,編譯原理,計算機網(wǎng)絡,數(shù)據(jù)庫原理
關于程序員的信息來源,也有幾個建議:
1.看看綜合信息類的技術網(wǎng)站,現(xiàn)在有各種聚合技術媒體
2.看看國內(nèi)外先進技術的關鍵字,然后搜索關鍵字去了解新的動向
3.關注一些社區(qū),例如github,各種郵件列表等
合理的花一些時間,保持大致計算機軟件技術相關的內(nèi)容心里有數(shù)即可。
并非鼓勵程序員都變?yōu)槿珬#珬2⒉幌忍靸?yōu)于非全棧,而是鼓勵去看的更多,看的更廣,
閱歷對任何工種都是重要的,只是閱歷的內(nèi)容有所不同而已。
謙虛
謙虛直接影響了一個人接收外界信息的能力,嬰兒學習能力強大的原因之一在于:不做判斷,統(tǒng)統(tǒng)都接收了謙虛程度就像一張濾網(wǎng),可能會過濾不對的東西,也可能會過濾很多其實很好的東西。
謙虛到什么程度?不要謙卑就好。謙虛也可以自信,不要自負就好。
實踐
其實這只是變?yōu)閮?yōu)秀程序員的一個步驟而已,根據(jù)我的觀察,多數(shù)人學習編程時死在了這個山頭。
實踐是一種快速驗證學習內(nèi)容,強化學習結果的方式,大腦很復雜很難搞明白它的所有,不過我們至少知道:做過的事情大腦會更加記憶深刻。
自己是一個五年的前端工程師
這里推薦一下我的前端學習交流群:784783012,里面都是學習前端的,如果你想制作酷炫的網(wǎng)頁,想學習知識。自己整理了一份2018最全面前端學習資料,從最基礎的HTML+CSS+JS到移動端HTML5到項目實戰(zhàn)的學習資料都有整理,送給每一位前端小伙伴,有想學習web前端的,或是轉(zhuǎn)行,或是大學生,還有工作中想提升自己能力的,正在學習的小伙伴歡迎加入學習。
點擊:加入
