優秀程式設計師的首要特質:判斷力

發表於2011-11-07

公司在招聘程式設計師時,可能更注重開發者是否聰明,是否有深厚的開發技能等,但 Tammer Saleh 在 EngineYard 中發表文章《The Number One Trait of a Great Developer》中表示,判斷力才是一名出色開發者所應具有的首要特質。下面是對該文的譯文:

我發現很多公司在招聘 Ruby on Rails 程式設計師時,往往注重開發者的三個主要特徵:足夠聰明、大技術社群中的知名度、深厚的 Ruby 開發技能。其實這些考察點並不正確。雖然這三大特性很重要,但他們卻忽略了一名出色開發者所應具有的首要特質:判斷力。

關於 Jack 和 Dianne 的故事

Jack 是一個搖滾巨星。Jack 喜歡談論世界上最酷會議中提到的最新發展趨勢。他很重視在一個新專案中使用三種以上的新技術。當請他做一個基於網際網路的控制後臺,用於將烹飪方法與廚具進 行匹配。他投入很大的精力開始做此事。最終該後臺中用到了 Google Protocol Buffers、node.js,具有可擴充套件性,卻很難維護。

Dianne 是一個優秀的程式設計師。最初 Dianne 是一個 Unix 管理員,兩年前才開始做 Ruby 開發。當被要求開發一個同樣的系統時,她首先問了以下幾個問題:

“預期會有多少廚具?”

“我們希望12個月內賣出500套廚具。”

“需要多長時間出一份報告?”

“大概一小時一次。”

“這網路的可靠性如何?”

“使用 WiFi,它很穩定。”

Dianne 使用 MySQL 資料庫寫了一個 RESTful API 結點。PostgreSQL 可能更適合,但她只懂 MySQL。

Dianne 採用的這個解決方案可以擴充套件到1萬個使用者嗎?不能,但這個系統並不需要這樣做。Dianne 的解決方案很簡單、容易理解,具有更好的維護性。Dianne 知道它並不是最簡潔的解決方案,但她卻知道任何更復雜的事都會超出她現在的能力。

判斷力很重要

當給定一個很有趣的“問題”時,沒有判斷力的開發者就會陷入精心設計最簡潔解決方案的陷阱中。他們總會有一種很自然的慾望而導致過度設計該解決 方案,要麼追求複雜度、速度和功能性,要麼很簡單地找機會演練一下他們所掌握的新技術。他們需要時常被檢查,以確保不會在半路掉進“兔子洞”裡。

更遭的是,他們並不知道什麼時候才超出他們的能力,所以他們總會在整個專案中留下程式碼炸彈。

僱傭有判斷力的員工

我會讓我的團隊判斷應聘者是否聰明,是否適合我們的文化。而我負責判斷他是不是有很好的判斷能力。為了做到這一點,我會帶他出去喝啤酒,並兩個主要的問題:

1. 對於 Ruby 和 Ruby on Rails 框架,你最不喜歡哪一部分?為什麼?

2. 請告訴我你最後一次使用的很有趣的技術?你從中學到了什麼?

這些問題可以很好地幫助你,讓一個開發者充滿熱情地談論他們在什麼時候充滿激情,在什麼地方情緒低落。從中你可以瞭解到很多,他們是怎樣的人, 他們來自哪裡。他們是否喜歡 NoSQL 這種資料庫?他們是否瞭解什麼時候不能使用它們?他們是否瞭解多執行緒程式設計中最難點?他們是否喜歡使用函數語言程式設計、雜湊函式,原因是什麼?

相關文章