程序員追求的是什麼??

Tags: 問題, 程序員,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

評論

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

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

相關問題答案