1. 程式人生 > >程式設計師追求的是什麼?

程式設計師追求的是什麼?

上週我收到三位Halmstad大學學生的電子郵件,他們正在做一個為期三月的專案,內容是關於程式設計師在工作中追求的是什麼,以及企業如何吸引有才華的程式設計師。下面是我對他們問題的答案,按重要程度排序。顯然人們會有不同的偏好,所以我很有興趣聽到你們贊同哪些反對哪些,以及你們認為遺漏了的要點。

1. 做軟體產品。我希望我參與編寫的程式成為公司的主要業務。這就排除了IT維護工作,因為這種工作只是間接地支援了真正的業務(不管它是什麼)。我也希望參與系統核心部分的工作,越重要的越好。如果我做的東西出錯了,它應該馬上成為一個緊急問題。最後,我不願意參與僅僅是配置、應用或整合其他公司的軟體 — 我希望自己來實現關鍵性的功能。

2. 優秀的同事。和對軟體開發充滿激情的聰明程式設計師一起工作是催人奮進的。我一次又一次地看到和同事一起談論一些問題或設計是如何產生比我們任何一個人自己悶頭想出來更好的思路的。這種合作方式不光是產生更好的程式碼,過程本身就是非常令人享受的。

你怎麼知道某人是不是一個優秀程式設計師呢?一個特別好的特徵就是看他們是否持續學習和提高他們的技能,例如通過讀書、看部落格、參加培訓課程、以及參加技術大會。這倒也不是一個必要條件,我就曾經和很多不幹這些事的很棒的開發者共事。最後,優秀的開發者會吸引其他的優秀開發者,因為以上原因。如果一個企業有很多優秀的開發者,它就更容易招到更多的優秀開發者。

【伯樂線上補充】:學習再學習。

正如第5點所說,我經常會在手裡拿一本計算機或程式設計相關的雜誌或書(不信,可以問我的朋友)。誠然,總有很多你不知道的技術,你可以從中學習以保持不落後。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習。——摘自《風雨20年:我所積累的20條程式設計經驗

3. 挑戰難題。程式設計師通過程式碼解決問題。開發的產品起碼在某些角度需要聰明的思路,比如低延遲、大量併發請求、或有限的硬體資源。不過,很多軟體產品都是由常規程式碼組成,沒有什麼難做的部分。所以你也不能只是盼著做“困難問題”而避開其他的所有需求。而且,組織好那些看起來很無聊的程式碼,讓它們容易理解和維護,這本身也是一個巨大的挑戰。

伯樂線上補充】:軟體開發界的另外一個小祕密是:編寫優秀程式碼和糟糕程式碼所花費的時間是一樣多。一位訓練有素的工程師,他/她會從第一行程式碼開始就考慮可維護性和程式碼的演化。沒有任何理由編寫“醜陋”的程式碼、長達數頁的函式,或是稀奇古怪的變數名。優秀的工程師編寫程式碼會遵循命名慣例,程式碼編寫緊湊、簡單和不過度炫耀聰明。程式碼的每一行,都應恰如其分地展現出其原有目的。在給不便理解的程式碼(塊)合理註釋時,別忘了命名規則。清晰明瞭的函式名和變數名可以讓程式碼不言而明。——摘自《明星軟體工程師的10種特質

4. 很酷的技術。這主要是關於使用有趣的程式語言(例如Clojure、 Erlang 或者 Go),但也包括框架和應用(例如Hadoop 或 Cassandra)。這可能是某些公司有問題的地方。如果它們的應用是用某個語言(比如C++)寫的,它就不會改了。所以如果你想改用一些新的語言,你可能需要換個工作。例如,如果你在斯德哥爾摩想用Erlang,你可以給Klarna 或 Campanja公司投個簡歷試試。

5. 使用者。編碼的樂趣之一是做出一些對別人有用的東西。做了東西卻沒人用就無聊了。要讓使用者(越多越好)關注你開發的努力並且給予有價值的反饋。唯一例外的可能是創業的時候,但是之後就要把吸引儘可能多的使用者作為最優先的事情。

6. 不錯的薪水。擁有大量優秀開發者的公司懂得優秀人才的價值。因為優秀和一般程式設計師之間的差別是巨大的,所以報酬向優秀開發者傾斜在經濟上是有道理的 — 其實在生產效率上的差別遠大於薪酬上的差別。反過來說,那些不捨得給程式設計師較好薪水的公司往往把程式設計師看作是可以隨意更換的“資源”。那麼這些公司在其他方面的表現恐怕也是你看不上的,不僅僅是低薪水。(推薦閱讀:《想招優秀的程式設計師,給他們付足夠的錢吧!》)

伯樂線上補充】: 一個優秀的程式設計師的效率會是一個普通的程式設計師的十倍之上。一個卓越的程式設計師的效率會是一個普通程式設計師的20-100倍。這不是誇張 — — 1960年以來的無數研究都一致的證明了這一點。一個差的程式設計師不僅僅是沒效率 — — 他不僅不能完成任務,寫出的大量程式碼也讓別人頭痛的沒法維護。——摘自《一些鮮為人知的的程式設計真相

7. 很好的工具。這個因素的重要性幾乎是不言自明的。一臺快速的計算機和幾個顯示器可以加快開發過程 — 誰會反對這一點呢?(好吧,那些光看成本不看效率的禿頭老闆可能會反對)

37signals Noah's desk

伯樂線上補充:37signals 員工 Noah 的工作臺——《37signals員工的辦公環境

8. 一週工作40小時。如果你總是要加班完成任務,肯定是你工作的單位有一些問題。而且,長時間工作也不等於有效率。

9. 最少的官僚主義。對於開發過程來說,或多或少會有敏捷開發方法的影子,看起來大家都採用了這種思路。根據我的體會,在大公司裡日常管理的那些瑣事基本上都是躲不開的問題。

10. 在家工作。 有時候能在家工作是有效的,不過我不常這麼做。我喜歡在辦公室裡,和同事交流。我曾經通過視訊會議、聊天工具和電子郵件在一個遠端辦公室工作,但這樣的工作效率還是不如現場合作的高。

11. 離家近。顯然這不容易強求,但是能不用每天花幾個小時在路上多好啊。

評論

如果你是諮詢顧問(而不是程式設計師),這個列表上某些項可能會不一樣。我總是願意在產品公司工作,主要因為我喜歡深入瞭解系統,看著它隨時間如何演變。所以我沒有作為諮詢顧問的第一手工作經驗,不過我覺得是這樣的:作為一個諮詢顧問,你更容易接觸到很酷的新技術,因為你有機會和很多不同的客戶一起工作。但是,即使你有很棒的同事,你可能也不會每天和他們在一起工作,因為你們會被派到不同的客戶那裡去。

這就是我在單位裡最看重的幾個因素,按重要程度排序。在現實生活中總會打一些折扣,但越是列在前面的因素,我就越不願意給它們打折扣。你看重的因素有哪些呢?

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!

任選一種支付方式