標籤:

普通的程序員和大神級的程序員有什麼區別?


謝邀。

其實我挺討厭「大神」這個詞,所謂的大神級程序員也是普通人,只不過影響力更顯著一點,真的,所謂神不神,並不單純指你能力多強,而是指你影響力有多大,比如Linus開發出git來解決版本控制的痛點,改進了全世界軟體開發的過程,這就是大神級影響力。有很多程序員在這個上面犯了錯誤,鑽研技術很賣力,但是並沒有讓自己的技能來影響他人,最多也只是提高自己技能而已。

最後,我不是大神級程序員,但我曾與大神級程序員一同工作。


優秀程序員的行為:

拿到任務,就開始仰望星空或天花板上那盞高懸的電燈棒,狀如老僧入定

忽而皺眉,忽而展顏一笑,忽而手舞足蹈,忽而在紙上指指戳戳,忽而口中念念有詞,忽而長吁……感覺有點神經病啊

桌子上擺的是代碼大全、設計模式、敏捷實踐之類的書籍,並且沒有灰塵

chrome或firefox的書籤欄里分門別類,類別多於10個,8個以上是技術相關的

容不得破窗戶,看見別人的爛代碼就想改過來

隨手就能在白板上畫出軟體的流程圖或者時序圖……

項目做完了,別人在打遊戲、看視頻、忙著回復QQ、向剁手族前進,他在想:這樣重構好呢,還是那樣……

你發現他總能說出些你不知道的技術來……

看這廝的代碼比看你自己的還好懂……

老得你叫他吃飯……

普通程序員的行為:

拿到任務就開始噼里啪啦敲鍵盤,一天寫了好幾千行代碼

沒事兒就被測試MM叫過去溝通……

都早上10點多了還想著昨晚的球賽,10點半就琢磨中午要吃拉麵、扯麵、刀削麵、牛肉麵、旗花面、臊子面、窩窩面還是炒細面……

過了一陣子,看到自己的代碼,感到很驚奇,認為是別人寫的……

回家就看電視、打遊戲、看球賽

周一上班不知道要幹啥,遲遲進入不了角色

哇,能Run啦,搞定啦

這誰寫的代碼,這麼爛……算了,管它

問別人問題的時候多,別人請教你的時候少

世界上最遙遠的距離不是生與死,而是你親手製造的 BUG 就在你眼前,你卻怎麼都找不到她……

以上文字摘自漫談程序員系列:看看你離優秀有多遠,對優秀程序員和普通程序員的一些行為做了一個總結。

行為只是一個人的外在表現,那麼這個問題的核心:大牛級別的優秀程序員比普通程序員到底厲害在哪?

1.代碼優化的能力

一般的程序員寫一個方法可能有幾百行代碼,寫一個類就想把所有功能實現,不考慮程序設計原則,也不考慮執行效率,更不去想如何讓我的程序質量更好。「代碼可運行」對一個優秀的程序員來說絕不是結束,而是開始。比如對於優化C語言來說,要選擇合適的演算法和數據結構、減少運算的強度等。優秀的程序員一定熟知各種演算法和數據結構,會靈活運用,致力於寫出更簡單、效率更高的程序。

2.考慮問題的思路

編程思路,是系統的計劃和設想,是程序員寫程序時的條理和線索。優秀的思路背後一定是不斷的積累。在熟知編程基礎的前提下,優秀的程序員會積累儘可能多的經驗,這份經驗讓他們更快的得出更好的思路。

3.解決問題的能力

解決問題的能力不是與生俱來的,還是要靠後天的經驗積累。在寫代碼的時候會遇到各種各樣的bug,優秀的程序員第一反應總是自己嘗試去解決這個問題,首先確定這個問題,根據運行時產生的崩潰信息或者編譯時出現的編譯錯誤,找到錯誤的根源。關於各類問題的解決,解決辦法總是能找到,只要願意主動尋求解決方案。

4.不斷學習和充電

一般的程序員到達一定境界後很難有突破。現狀會讓他們不自覺的產生編程無非如此的錯誤觀念。優秀的程序員看到世界最新技術就能馬上主動去了解、去學習並且掌握。IT技術每經過幾年就會有一個質的飛躍。一旦脫離技術潮流,就很難趕上。優秀的程序員跟上每一步技術,在這個領域看得更遠,思維越開闊。

5.大局觀

優秀的程序員有意識地知道自己不應該再局限於簡單的技術問題,他們追求從全局上把握和設計一個較大的系統體系結構,從內核到外層界面,使用已掌握的技能解決問題,並且能夠考慮到系統的擴展性、安全性、穩定性等問題。

6.耐心

假如使一個程序實現某種功能有很多種方法,但在這些方法中,只有一兩種方法是最好的,優秀的程序員會花時間實踐,實踐後總結出那一兩種最好的方法。所以,要寫一個好程序是很需要耐心的,要成為一個優秀的程序員也是。

以上就是我對這個問題的見解,沒有一顆成為大牛的心,也就一個做碼農的命,咱們做IT的怎麼也得對技術有起碼的尊重不是?

註:希望繼續在IT行業突破提升自己的各位朋友,歡迎加群384053806,不管你自我感覺牛不牛B。


我前幾天在看我司大神寫的基礎框架,表示雖然看得懂,叫我寫鐵定寫不出


同樣是程序員,大神級的程序員和普通的程序員差別在哪裡?

從以下幾點來談談差別:

1.思路

編程思路,是系統的計劃和設想,是程序員寫程序時的條理和線索。優秀的思路背後一定是不斷的積累。在熟知編程基礎的前提下,優秀的程序員會積累儘可能多的經驗,這份經驗讓他們更快的得出更好的思路。

2.解決問題的能力

解決問題的能力不是與生俱來的,還是要靠後天的經驗積累。在寫代碼的時候會遇到各種各樣的bug,優秀的程序員第一反應總是自己嘗試去解決這個問題,首先確定這個問題,根據運行時產生的崩潰信息或者編譯時出現的編譯錯誤,找到錯誤的根源。關於各類問題的解決,解決辦法總是能找到,只要願意主動尋求解決方案。

3.代碼優化能力

一般的程序員寫一個方法可能有幾百行代碼,寫一個類就想把所有功能實現,不考慮程序設計原則,也不考慮執行效率,更不去想如何讓我的程序質量更好。「代碼可運行」對一個優秀的程序員來說絕不是結束,而是開始。比如對於優化C語言來說,要選擇合適的演算法和數據結構、減少運算的強度等。優秀的程序員一定熟知各種演算法和數據結構,會靈活運用,致力於寫出更簡單、效率更高的程序。

4.全局掌握

優秀的程序員有意識地知道自己不應該再局限於簡單的技術問題,他們追求從全局上把握和設計一個較大的系統體系結構,從內核到外層界面,使用已掌握的技能解決問題,並且能夠考慮到系統的擴展性、安全性、穩定性等問題。

5.學習先進的技術

一般的程序員到達一定境界後很難有突破。現狀會讓他們不自覺的產生編程無非如此的錯誤觀念。優秀的程序員看到世界最新技術就能馬上主動去了解、去學習並且掌握。計算機技術每經過幾年就會有一個質的飛躍。一旦脫離技術潮流,就很難趕上。優秀的程序員跟上每一步技術,在這個領域看得更遠,思維越開闊。

6.耐心

假如使一個程序實現某種功能有很多種方法,但在這些方法中,只有一兩種方法是最好的,優秀的程序員會花時間實踐,實踐後總結出那一兩種最好的方法。所以,要寫一個好程序是很需要耐心的,要成為一個優秀的程序員也是。

推薦閱讀

面試完後,感謝信該怎麼寫?

面試中遇到你不會的領域,該怎麼回答?

如何回答當前薪資?這才是正確答案!

如何回答:你為什麼想在這裡工作?

在拒絕應聘者時, 為什麼面試官很少給予真實的拒絕理由?

面試官:你為什麼要離開之前的公司?

歡迎關注我的微信公眾號:九章演算法(ninechapter),幫助你了解IT技術前沿,通過面試、拿到offer、找到好工作!


普通程序員寫的是程序

大神程序員寫的是情懷


大神各種各樣,你在一千個大神里找不出兩個一樣的,他們會為項目提供不同的獨到見解,可能是架構上的改進,也可能就是一行畫龍點睛的代碼。他未必需要去造輪子,可就算你們用同樣的輪子,你也會發現他也能和你轉的不一樣。這就是他們的價值。

普通程序員天下只有一種,你可以按需要分為前端,後端,或者php,java,js。。。。。。


大神:這個問題其實是這樣的,你看,xxxx……

我:沒有吧,看不出來啊,我試試.....卧槽,還真是,真牛逼,怎麼想的

大神:我沒想啊,一看就知道了

我:.....艹


這是我喜歡回答的問題,和一本我向很多人推薦過的書有關:《程序員的思維修鍊:開發認知潛能的九堂課

關於本書內容請自行去了解,回答你的問題只需要使用到裡面的一個概念就行:

德雷福斯技能獲取模型: Dreyfus model of skill acquisition 鏈接是wiki

德雷福斯兄弟考察了各個行業的從業人員之後,在1980年提出了這個模型。

這個模型的含義是:將所有需要專業技能的從業者能力劃分為5個等級,通過描述從新手到專家的成長,來讓我們了解到各個階段的從業者特徵,以及他們需要如何去做才能夠繼續成長。

為了讓你更好的理解這個模型的含義,貼幾個重點:

  • 他們的研究表明,從新手到專家要經歷巨大的變化。
  • 德雷福斯模型描述了我們的能力、態度、素質和視角在不同的技術水平下是如何變化的,以及為什麼會有變化
  • 德雷福斯模型描述了從新手到專家所經歷的5個階段
  • 這個階段不是用來描述你所有領域的,只是用來描述你在特定技能領域內所處的某個階段,一個人可以是程序員專家,他也是唱歌新手,他在廚師這個領域內甚至沒有級別,因為他從沒下過廚。

在這裡我們不討論什麼是普通程序員什麼是大神程序員,因為在不同場合下界定兩者的區別還是很難的。答主目前在開發領域處在第四階段,很多我的學生同事常常稱我為大神。但是拿答主的階段和 @vczh 之類的真正頂尖大神比,差距還是相當明顯,我見了他們也必須喊一聲大神。其實在開發領域內專家與專家之間差距也會蠻大的,只不過沒有劃分出第六個階段而已。

因此這個回答的目的是為了幫助程序員更好的了解自己所處的階段,並且通過針對性的成長來邁向第四階段,和題主真正所要尋求的東西是一致的就行。

新手:

  • 新手在該領域很少或根本沒有經驗
  • 新手非常在乎他們能否成功。沒有太多經驗指導他們,不知道自己的行為是對是錯
  • 如果給新手提供與情景無關的規則去參照,他們就會變得能幹起來

新手是每個開始學習任何技能的人一開始的階段 , 這一階段的人,經驗很少或者根本就沒有 , 所謂的經驗,指的是,通過實踐這項技術促進了思維的改變。 經驗指的並不是資歷,在開發這個行業尤其如此,重複做類似於吃飯喝水一樣的寫需求,這並不是經驗。拿工作1年的技術重複10年,也只能算做1年經驗,雖然面試官會把你當做「高資歷」的開發者,但是在用模型衡量時請不要做這種掩耳盜鈴的事情。

1.該領域很少或者根本沒有經驗,了解了什麼是經驗之後,我們來舉個栗子。

你們還記得自己第一次遇到程序報錯時的場景嗎,有試過去獨立解決嗎,大部分人的解決方式是靠猜或者尋求幫助,這是新手時期正常的表現,每個開發人員都是從這個階段一步一步走過來的。

而學會了異常、調試之後,碰見紅紅的報錯還心慌嗎。這個時候獲得了經驗的同學,就會通過提示信息來找尋問題的原因。NullPointException-&>啥意思呀,打開文檔(x度)查查看-&>馬丹到底是哪個對象為空了-&>還好提示了我是哪一行代碼-&>艾瑪我怎麼這麼傻又忘記初始化這個對象了。

這就是獲得經驗之後的思維轉變,如果你在學習完異常和調試之後,遇見報錯還是下意識地尋求老師和同學的幫助,那麼你可能會在新手時期停留很長時間直到工作。

子曰:「不憤不啟,不悱不發。居一隅不以三隅反,則不復也。」

這是做教師必須要知道的一段話,也是舉一反三的由來。如果你什麼事情都手把手教給他,而不去讓學生自己思考,通過嘗試去獲得真正的經驗,還不如不教。因為他的這種依賴行為不利於學習和成長,下一次碰見同樣的錯誤還是會來找你,相信我,這種事我見多了。

2.新手非常在乎他們能否成功。沒有太多經驗指導他們,不知道自己的行為是對是錯,是好是壞,for一個zample

以前沒做老師的時候,帶過幾個剛做開發的新手。因為考慮到純粹的新人上手肯定很困難,安排開發任務的時候給的都是非常輕非常少的,在他熟悉完項目之後給他一周的時間來完成這個需求,正常開發人員1個小時左右的開發時間就能達到基本交付要求。

然後可怕的事情發生了,數個小時到數天時間,新手們不敢下手敲代碼,對著IDEA半天就滑鼠點點自動生成了幾個介面和實現類,業務邏輯和SQL都不知道如何下手。更甚者我見過一個妹子每天上班開機對著電腦發獃8個小時持續了整整一周!!!

不要懷疑他們是如何找到工作的,網上搜一票面試題自己背背糊弄菜鳥級面試官超容易,不就是StringBuilder、i++、集合、OOP這種弱智問題么,最主要的原因是廉價啊,這種智障面試我見的多了,也不怪招了這麼多水貨。

不能寫代碼怎麼辦,公司不可能一天白送幾百塊錢讓你發獃的吧,都是同事看著被幹掉也不忍心,再招個這樣廉價的新人還是一樣要浪費自己的時間。那麼就教,教當然不能手把手敲,我一堆核心代碼放著不寫跑過來給你寫這種簡單需求怎麼可能。一般的情況下我會口述原理讓他自己動手。

把xx表和xx表關聯、xx欄位在xx表裡面。這樣子新手終於敢自己把SQL寫出來了。這個時候新手的特徵就顯露出來了,經常會出現下列情況:

Q:我這段SQL寫的對不對?A:對不對你自己放到測試庫里跑啊!問我我能給你個結果集啊?

Q:好像寫對了,然後呢?A:然後你就傳到前端展示去啊!

Q:好像都搞定了,然後怎麼辦?A:然後你就提交代碼讓測試去測啊!

Q:好像我剛剛的代碼出Bug了,怎麼改?A:打斷點調試……QAQ……= =!閃開!我來!

有沒有發現特點,在新手這個階段問的問題大多數都是自己都不確定的。因為新手處理任務時的心態比較緊張,在乎得失,有手足無措的感覺。有的時候哪怕自己已經做對了,但是不具備判斷對錯好壞的能力,還是會下意識來尋求權威的判斷。可以拿下文高級新手提的問題來做對比,會更明顯區分兩者。

3.如果給新手提供與情景無關的規則去參照,他們就會變得能幹起來

因此,在給新手安排任務的時候,丟給他一個大的模糊的需求概念時,他往往會比較迷茫。新手需要更高層次的人來幫忙把事情拆解,安排成明確的指令,一步一步照著做就行,因為這時他們已經失去了思考,完全交給了所謂的權威

新手還非常在乎成功,他們非常渴求能夠馬上將當前的目標完成。這個癥結之所以存在,也是因為他們缺乏經驗,因為 他們害怕面對問題,而快速成功意味著不用遇到太多甚至是沒有問題。他們從沒有想過這個方法到底對還是錯,只是想要知道這個方法能否成功而已,而我們知道,在軟體開發這方面,方法能夠奏效並不代表這個方法就是適合的。

高級新手:

  • 他們可以獨自嘗試任務,但仍難以解決問題
  • 他們想要快速獲取信息。他們不想在此刻尋根究底或重新溫習一遍基礎知識
  • 能夠根據過去的經驗,逐步在正確的情景中採納建議,但比較吃力
  • 他們沒有全面的理解,而且的確不想有

大部分人都處於高級新手的階段,因為從新手到高級新手的跨步還是很容易的。這一階段的人已經具備一定的經驗,自我解決問題的能力已經得到大幅度提升, 能夠根據自己過去的經驗尋找解決問題的方法,但是仍在某方面欠缺獨立的能力。大部分人稱高級新手所缺乏的能力為情境匹配,我更喜歡叫它知其然而不知其所以然。

來看看剛剛那些新手成長為高級新手之後會問的問題先:

Q:xx這個欄位在哪張表裡面啊?A:xx表,下次記得自己翻文檔。

Q:這報的什麼錯啊,我沒見過。A:閃開!我來!

Q:哎我這個SQL就是查不到想要的結果,怎麼改?A:閃開!我來!

Q:他這個欄位有時候會出現Null,但是我又要判斷,怎麼改?

A:把常量字元串放前面,以後碰到這種情況都這樣。

String s = pojo.getFlag();
if("s".equals(s)){
}

有沒有發現,高級新手已經在嘗試單獨解決任務了。除了沒遇到過的問題和不知道的問題還保有依賴性之外,重複性的工作已經能夠勝任。與新手相比所獲得的明顯進步是:能獨立分清楚對錯,對開發任務不再有明顯的恐懼感。事實上達到這個標準,你就可以去大部分公司做開發了,如果多工作個幾年,升一下評級或者跳槽變成「高級」開發工程師,其實挺容易的。

但是高級新手相比於勝任者還欠缺的能力就是:1.缺乏獨立思考的能力,無法系統地總結出整體的經驗,只具備已經獲得過的經驗和能力。2.不會嘗試去刨根問底,得到解決方案之後將其當成自己「重複知識體系」的一部分。如同舉一偶不能反三偶,遇到一樣的就能解決,遇到類似的往往不能解決。這不怪你的同事,大家這麼忙,幫你個小忙直接解決就算了,又不是你的老師還要教你如何去思考問題。

其實阻礙高級新手跨向勝任者還有個最直接的原因:不會使用搜索引擎,不會閱讀客觀的文檔,只會從前輩身上得到經驗,運氣好碰到個大牛還好,敢問就總能學到東西,如果在一家都是小菜雞的公司開發能力想要有很大的進步怎麼可能。在這種情況下局限你的並不是智商,而是思維模式。

勝任者:

  • 能夠建立問題域的概念模型,並有效的使用他們
  • 開始尋求和運用專家的意見,並有效利用
  • 這一水平的人通常被認為「有主動性」和「足智多謀」
  • 既可以指導新手,也不會經常騷擾專家

其實大部分小公司團隊只具備前3個階段的開發人員,或者有少部分第4階段的開發人員,這已經足夠勝任目前所需要的互聯網項目,因為大部分公司是業務驅動,他們不追求在技術領域的領先地位。

其實勝任者的佔比不少,他們所表現出來的最大特徵就是「有主動性」和「足智多謀」。知道如何去建立完整的經驗體系,知道如何去解決未遇到過的問題。勝任者通常是前2個階段的領導者,也是更高級別和低級別之間的紐帶。這個領導者並不一定指的是崗位職稱上的領導者,而是實際開發過程中的領導者,他們往往會扛起主要的開發任務,偶爾會參與任務的分配和調度。在一些小公司這種人還能夠成為一些比較高大上的崗位如:「技術總監」或者「項目經理」。

和勝任者一起工作是舒服的,明確好任務分配之後,勝任者做自己的本職工作時通常都會不聲不響地輕鬆完成。不需要再去指導任何細節方面的問題,因為他們具備自己尋找解決方案的「主動性」,有時候也會幫助低級別的同事解決問題,所以被視為「足智多謀」。

遇見未知的問題時通過國內的搜索引擎能搞定80%的問題,國外的搜索引擎能搞定99%的問題。需要使用新的輪子時,查個官網翻個文檔就能直接上手解決。低級別開發者所看見的「大神」「大牛」其實大部分都是這樣的水平。大部分勝任者能夠具備判斷優劣的能力,他們知道哪種實現是更好的,以及為什麼會更好。但是不一定都會去選擇使用更有效率的方式。

因為勝任者不會嘗試去做自我改進,或偶然或必然的建立好自己的經驗體系之後,勝任者不會去嘗試優化自身的代碼。當一個項目架構能夠勝任目前業務需求之後,往往勝任者的專註點又回到了重複性的開發任務中,而沒有嘗試去升級和完善更好的架構。其實大部分情況下為了開發進度而不去做優化是正常的,但是因為忽略慣了而去忽略往往是勝任者最大的缺陷。

這裡所描述的勝任者不會去做的行為包括但不限於架構升級、優化現有代碼、技術分享和學習。其實勝任者和精通者在實力上的差距已經非常小了,但是在心態上的差距仍然存在。先來看看精通者所具備哪些特徵。

精通者:

  • 需要全局思維。他們將圍繞這個技術,尋找並想了解更大的概念框架
  • 他們能夠糾正以往不好的工作表現,自我改進開始出現
  • 他們會學習別人的經驗
  • 擁有理解和運用格言經驗之談的能力。這些經驗之談,是可以應用於當前情景的基本原理
  • 有足夠的經驗,知道下一步會發生什麼,如果沒有發生又需要改變什麼
  • 可以有效的運用軟體模式
  • 可以充分利用思考和反饋

既然勝任者能夠勝任我們的開發需求,那麼精通者以及專家又會應用在哪些場合中呢?

我很喜歡 @子柳 大神所分享的一系列淘寶架構演變,這一偉大而艱巨的任務只有精通者以及專家才能夠完成。 淘寶技術發展(引言)_子柳_新浪博客

如果你有幸能夠進入一家專註於互聯網技術且有遠見的公司,成為精通者將會變得容易許多。這裡所說的遠見指的是公司在決策中支持且歡迎更多更優秀的技術出現,例如建立和升級公司內部的框架和庫、學習和嘗試最新技術、成立新的技術部門或技術崗位、挖掘尖端人才、保持公司技術領域的深度和廣度。因為他們清楚地知道互聯網時代技術的更新換代到底有多快,不去學習就絕對會被淘汰。

我曾經做過一線城市某大型醫療項目, 為國家衛計委開發四級甲等衛生信息平台,這個東東當時在業務領域上是國內最頂尖的,技術領域離頂尖還差點。使用到的是億級資料庫,因為以前從未接觸過如此大型的資料庫,正常的SQL寫法已經完全無法達到衛計委的評分要求,必須在一切細節上做到最好。這裡可以貼一段其他人的案例:實戰:上億數據如何秒查 - 杭偉 - 博客園 看不懂的可以直接看存儲過程的SQL長度。

當時真正的技術大牛給我上了一課,手把手教我如何去優化每一個SQL細節,雖然現在時間久遠從業重心不再偏向SQL,已經忘記不少查詢技巧,但是響應時間在不用存儲過程的情況下從十幾分鐘壓縮到2秒再壓縮到500ms內所耗費的心血和知識簡直無法想像。這是勝任者無法勝任的業務需求,雖然以後所接觸到的項目沒有再用到這種極限壓縮效率的場合,但是我的SQL編寫習慣下意識得到了改進。

才發現子柳大神也玩知乎,他的另一個回答很好的解釋了精通者以及專家所適用的場合:

為什麼很多看起來不是很複雜的網站,比如 Facebook 需要大量頂尖高手來開發?

精通者還有一個更重要的特點,這個特點也是精通者能夠成為專家的關鍵,就是他們能夠通過有效的反饋和思考來不斷調整自己或者不斷進步。反饋和思考是非常重要的,這是掌握任何技能所必須的能力。

專家:
? 他們有豐富的經驗,可以在恰當的情景中選取和應用這些經驗
? 專家根據直覺工作,而不需要理由
? 專家知道哪些是無關緊要的細節,哪些是非常重要的細節

他們是這個領域的魔法師或者部分規則的制定者。專家在某些場合下運用直覺解決問題,這種直覺不是胡亂的猜想,而是建立在強大經驗體系的支撐上獲得的直覺。他們可能會對得到的結論完全說不清楚,只是「覺得這樣做是正確的」。關於這個領域更多的信息已經無法分享給大家,只能說我目前仍未達到任何領域的專家。

專家是各個領域知識和信息的主要來源。他們總不斷地尋找更好的方法和方式去做事。他們有著豐富的經驗,可以在恰當的情境中選取和應用這些經驗。他們著述、寫文章、做演講。他們是當代的魔法師。

=============================分割線=============================

如果你看到這裡,非常感謝!想必你也已經了解到了普通程序員和大神程序員的區別所在。

那麼趕快給自己做一個評估,了解清楚自己所處的階段。通過努力實踐來讓自己向更高級別的從業者邁進吧!


這麼有禮貌,那就回答下。

比如:

一個任務,做了和做好。

一個問題,能實現和實現跟科學優雅。

一個方案,怎麼才能解決和幾種不同的解決方案和其中的優缺點。

一個技術,看的明白和知道這個技術在幹什麼。

一個項目,現在沒毛病和未來擴展靈活可維護性。

一個代碼,知道怎麼跑和知道為什麼這麼跑。

前者是使用者,後者是發明者。


想起一句話

弱的程序員以為牛b的程序員無所不能


大神造輪子,principal 配置輪子,senior 用輪子


我認為沒有很複雜,就三個區別:1、基礎是否紮實,理論知識是否成體系;2、足夠多的經驗;3、是否有大局觀,開發的功能、產品,是否便於延展。


責任心是很關鍵的,雖然有責任心的不一定成為大神,但大神一定有責任心。


簡單說就是約炮和談戀愛的區別

和代碼


大神級程序員會來知乎回答問題?


直覺

出了bug,高手憑直覺就能猜到你的代碼是怎麼寫的,哪個環節遺漏了。


在程序員眼裡,女的都是女神,比你早來3年都是大神。


結合自己這段時間的學習C# 源碼來講,我覺得大神級的程序員應該是用最適配的的數據結構,最優的的演算法,最恰當的設計模式去開發項目,不僅如此,寫代碼應該想畫家畫畫一樣,寫出的代碼是優雅而好看的。


普通程序員 功能實現

大神程序員 功能實現1% + 功能穩定99%


學生寫作文和作家寫作品的區別


推薦閱讀:

現在的IT行業出國留學的優勢是否還那麼明顯?
程序員有哪些浪漫的情話或事情?
IT 人都怎麼保護自己的眼睛?
通宵熬夜對身體危害有多大?怎樣將它帶來的負面影響降至最低?

TAG:IT行業 | IT人 |