伯樂線上導讀:「卓越程式設計師和優秀程式設計師有哪些區別?」這個問題來自 Quora。本文摘編了兩個熱門回覆。
Russel Simmons (Yelp 前 CTO & 聯合發起人)2.5 k 贊
對這個問題來說,我的答案不具有普遍性,但是我確實注意到在一些卓越的程式設計師身上有一些不凡的品質。
- 能夠在完美主義和實用主義之間找到平衡——卓越的程式設計師既能夠做出熟練、快速但是劣跡斑斑的解決方案,也能用簡潔、優雅並且健壯的方法解決問題,他們能夠明智地選擇適合於所給問題的解決方法。一些稍欠火候的程式設計師看起來缺少對於必要細節的極致追求。另一些則被困在完美主義者模式中。
-
樂意進行除錯與Bug修正——平庸的程式設計師經常對除錯感到厭惡和恐懼,即便是他們自己的程式碼也是如此。卓越的程式設計師則會以丘吉爾般的堅韌潛入和深挖。如果最終證明bug在他們自己的程式碼之外,他們可能也不會對此感到高興,但是一定會找到它。
- 良性的懷疑態度——一個優秀的程式設計師會得出一個看起來可行的解決方案後收工。但是一個卓越的程式設計師直到進行了大量的測試之後才會相信他們自己的程式碼。這在資料分析和系統管理中也很常見。普通程式設計師可能在看到一個看似無害的不符合之處時,並不在意。如果一個卓越的程式設計師看到同樣的東西,他就會懷疑這可能是造成更大問題的導火索,並且深入研究。卓越的程式設計師總是傾向於做更多的事。
Davin Lafon ,1.4 k 贊
1.優秀的程式設計師會寫自己必須寫的程式碼,而卓越的程式設計師還會寫自己本不需要寫的程式碼。
2.從程式碼的行數來講,成為卓越的程式設計師並不是意味著他們可以多快地寫出一個程式碼庫,而是可以多快地在不丟棄功能和效能的條件下縮減其程式碼。
3.如果你開始跟他們爭論“最好的程式語言是什麼”這個問題,他們會微笑著還是看起來厭煩地換個話題?或者他們開始向你喋喋不休地講述?如果是最後一種,那他就不是一個卓越的工程師。
4.與程式碼或者語言無關。也與“痴迷”、“訣竅”、“天賦”或者其他任何裝逼術語無關。很簡單地——他們是否對軟體工程的理解超越了程式碼的級別?他們是否對軟體工程的理解達到了架構級別?或者他們是否能夠深謀遠慮?他們能否在對問題的數學抽象和和軟體工程之間平滑地轉化?他們能夠和股東工作並且理解他們對於系統的需求嗎?還是他們開發出自己想要編寫的系統,然後認為這就是你真正應該想要的系統?有人可以成為卓越的黑客或者程式設計師,但那並不意味著他是一個卓越的軟體工程師。我這麼說並沒有用來價值衡量——一個卓越的程式設計師的確就是一個卓越的程式設計師…但是你畢竟不能讓一個天才焊接工去設計一座橋。
5.當其他人都在屋子裡迷戀某個解決方案或者新的東西時他們能否“發現缺陷”,更甚,他們是否能用他們能聽懂的方式向屋子裡的人解釋這個重要的缺陷。
6.能否傾聽?如果不能,那就不是卓越的軟體工程師。