1. 程式人生 > >程式設計師要注重溝通能力的提升

程式設計師要注重溝通能力的提升

你曾經在應聘一份程式設計工作的面試中被問及一些解謎類的問題嗎?我反正碰到過。我被問到的那個問題是:

你最喜歡的那個牌子的蘇打,有多少是在本省被消費的?

拜託,正確的答案不能是“關我什麼事”,除非你不想得到這份工作了。我當時對這個問題毫無頭緒,後來才知道這是一個“費米問題”(Fermi Question)。

譯者注:恩里科·費米(Enrico Fermi),美籍義大利裔物理學家,曾經榮獲1938年的諾貝爾物理學獎。他能夠通過非常少量或者不精確的資料,來得到比較好的估計,費米問題或費米估算因此得名。一個經典的費米問題的例子是,“在芝加哥有多少位鋼琴調琴師?”

謎題作為一種新生事物,在1990年代的程式設計師面試裡風靡一時。這在《How Would You Move Mount Fuji?》(如何移動富士山?)一書中有很好的記載,書中還強調微軟公司在招聘過程中就使用了謎題。

如果你已經知道你將去應聘的公司會問這類謎題,預先研究一下常見的面試謎題是很明智的。如果你覺得你已經對一般的謎題很在行了,那我就要來考驗你一下,看看下面這道史上最難的面試謎題吧:

換句話說,我討厭謎題!(但願那些謎題狂熱者們都能解答出來……)意料之中,我沒有通過那次面試。我當時很失望,因為那份工作還是挺酷的!

倒不是說我在“與程式設計師面談”一節裡給出的建議會更受歡迎,但我確實認為那要好得多!

在前一節,我給大家介紹了一種我自創的方法,那也是面試程式設計師最理想的方式:讓候選人在你的團隊面前就他們做過的某樣東西做10分鐘閒聊式的演講。你當然還可以用一些實際的需要動手的程式設計測試來作為補充,以確保那位候選人不是在招搖撞騙——儘管我堅信,如果你不是真的理解你正在談論的東西的話,你是不可能在一個技術性演講裡糊弄一群同仁的。(如果你真能這麼糊弄,你現在應該已經成為一家創業公司的CEO了!)

我在這裡要強調的是溝通能力。對於大部分程式設計師來說,在他們通過了“Fizz-Buzz”級別的能力測試之後,他們看起來已經相當不錯了。但只會寫程式碼還不夠。如果想從優秀髮展到卓越,你必須培養起有效溝通的能力:與你的同事溝通,與你的老闆溝通,與使用者溝通,最終與全世界溝通。

因為我們第一個小孩的出生,我和我的妻子在一家醫院裡待了5天。在住院期間,我們受到了很多名護士的協助——每天至少兩名不同的護士,有時還會更多,因為我們要去不同的科室就診,而且護士每天還有換班。這家醫院的護理質量總體來說是相當高的,但我們也為從最差的護士那裡和最好的護士那裡分別得到的護理之間的差距倍感困惑。幾天之後,我終於發現了一個共性——最差護士的溝通能力必定最差的!這些護士無法跟我們進行有效的溝通,比如:

  • 為什麼她們需要做某事
  • 可選方案有哪些
  • 提供建議
  • 排解我們的問題

這讓我們覺得,她們都是些死板的、只知道照章辦事的人,她們不會照顧人,或者她們沒有主見(必須不斷地請示上級)。當然,事實不是這樣的。我相信,她們都是完全合格的專業護士。但在必要的溝通缺失的時候,她們確實看起來很糟糕!我還得說句公道話,這些護士常常(也不總是)不是本地人(她們的母語不是英語)。

即使在最佳的條件下,招聘也不是件易事!但如果讓面試流程太過依賴於謎題就太冒險了。當然,程式設計師們最終可能把你扔給他們的蹩腳謎題解決了(我猜他們也許只是記住了答案)。但是,把那些解決方案有效地解釋給團隊中的其他人聽,難道這不同樣重要嗎?對於很多程式設計師來說,那是謎題中最難的部分。