導讀:作者根據自身軟體開發的經驗,加上整理比爾·蓋茨,Peter Thiel等各大名家曾經提過的理論及其中矛盾,試圖找出軟體開發生涯中的付出的努力、熱情以及私人生活的平衡。
在《Rework | 重來:更為簡單有效的商業思維 》這本書裡,Basecamp 的 David Heinemeier Hansson 和 Jason Fried 說要“開除工作狂”,但《從 0 到 1》的作者 Peter Thiel 卻說絕佳的工作條件,(比如像Google)是需要超過十倍的技術力來支撐的,沒有其他捷徑。
比爾·蓋茨在 1983 年說過:
你必須覺得這個行業很好玩。你得晚上回到家還找電腦雜誌來看,否則你的波長會跟不上(在微軟的)這些人。
所以我們應該相信誰呢?你的人生一定要活在程式設計中才能當個好的程式設計師嗎?
每週 40 小時工作時間
許多研究都指每週 40 小時是最有生產力的工時,不過 Malcolm Gladwell 在《異類:不一樣的成功啟示錄》中也提到,要邁向成功需要一萬小時的練習。而我的合氣道教授則說,練習愈多你就會變得愈強。
約翰·索內茲在《軟技能:程式碼之外的生存指南》一書中,一樣強調努力的重要性。儘管他認同“聰明工作”就夠了,但也承認他比尋常付出了更多努力,才在在職中創造了驚人的改變。
在一場對談中,Ruby on Rails 作者,知名程式設計師 DHH 也曾和連續創業者 Jason Calacanis 一同探討工作和生活的平衡。Calacanis 認為創業必須全心投入,而最後他們倆都同意“熱情”才是最重要的。
以我個人的經驗來說,當我做自己熱愛的事時,我會:
- 更有生產力
- 覺得充滿活力而非被工作淹沒
我周圍的優秀程式設計師都充滿熱情,而且每週工作超過 40 小時。我也觀察到,熱情和努力是發展未來技能的關鍵指標。
但是一個充滿熱情的人要怎樣在每週工作超過 40 小時的狀態下,依然維持生產力?
加入一點創新點子來維持活力
在《程式設計師思維修煉》一書中,Andy Hunt 提到了我們平常在背景執行的 R-mode 工作之外,還要找一些空閒來做一些“跳出常規思維”的創意方案。
極限程式設計鼓勵大家維持可持續的開發步調,《程式碼整潔之道:程式設計師的職業素養》作者 Robert C. Martin 又叫我們每週工作 80 小時才能保持“專業“。
對我來說,持續在一個專案上做結對程式設計(Pair Programming)6 到 8 小時就是極限,超過的話,造成的瑕疵就會大於做出的貢獻,讓我變成「淨負生產力程式設計師」(Net Negative Produced Programmer)。但如同我們同時做一點業餘專案(Side Project),那我一天可以堅持寫程式的時間就會變多。
我猜有熱情的人大概就是這麼做,他們會在主要的工作之外安排一些不同的主題來點綴。
- 他們看關於程式設計的書。
- 他們有自己的業餘專案
- 他們會讀程式設計的文章。
- 他們可能還會寫程式相關的部落格,他們可能會參加、舉辦或是主講一些聚會。
大部分的時候,做這些都不是為了完成更多工作,而是為了學到更多。我發現身邊的傑出程式設計師都充滿熱情,而且盡力去增進自己的技術,同時也注意到純粹過勞的工作狂通常生產力都不高。
為人父母的挑戰
我認為比爾·蓋茨 1983 年的那段話還沒有錯。如果你沒有熱情,那程式設計師很難做得久。
保持熱情的好處在於,我們可以擁有一個活力四射的工作環境,充滿變化和新奇,但反面來說,要跟上這樣的節奏可不容易。
當程式設計師愈來愈有經驗,就會開始對麻煩的工作失去耐心,然後想要擁有:
- 強大的程式語言和技術
- 有效率的工作環境
- 聰明的同事
不幸的是,當你為人父母,你可能只想有份穩定的薪水來養家,還有一些自己的時間來陪孩子。
這個時候就開始有點棘手了。你既不能跳槽到很酷卻高風險的新創公司去做一番事業,你也沒辦法熬夜擠時間出來增進你的技能。雪上加霜的是,儘管你擁有 10 年的工作經驗,懂得各種語言和技術,你的簡歷上要是沒有亮眼的關鍵字,很多公司連看都不看一眼,這簡直就是程式設計師版本的創新者窘境(創新者的困境),你就像那些老牌公司一樣要保證自己不會被新技術擠出市場。
缺乏熱情和養小孩,這兩點應該能解釋人們停止當個程式設計師的部分原因,而且我馬上就想到這種現象帶來的兩種後遺症:
- 我們常常要重新發明像輪子一樣基本的要素(就是你,那邊那個在寫 JS 框架的)
- 隨著老手的離去,我們可能會在沒有意識到的狀態下,忽視了一些可以讓我們更有效率的人際互動流程。