【IT雜談】十年程式設計師

走在路上的WWB發表於2012-02-14
知識庫 » 程式人生

十年程式設計師

作者: dreamhead  釋出時間: 2012-02-14 14:01  閱讀: 173 次  原文連結  全屏閱讀  [收藏] 

  十年程式設計師(一)

  2012年,終於可以和人家說,我有十年工作經驗了。幸運的是,十年後,我還在寫程式碼。

  十年前,促使我選擇寫程式作為一生追求的是我對寫程式的好奇以及實現功能後的成就感,但那時,在對自己未來充滿信心的同時,內心深處依然惴惴不安。縈繞心頭的烏雲是所謂30歲程式設計師的說法。

  那時,很流行的一個論調是,程式設計師只能做到30歲。人到30歲之後,智力在下降,體力在下降,再加上家庭的瑣事,人很難再寫程式了。

  那時的自己尚年輕,沒有體會到30歲後的狀態,很難知道這種說法的真偽,所以,內心裡還是會有一絲絲恐懼。有時,我會假想,29歲的最後一天我還能寫程式,30歲生日一覺醒來,我的程式設計能力便煙消雲散了。

  大概當我有5年工作經驗時,那個擾人的論調依舊,只是年齡上,從30歲變成了35歲。我暗自慶幸,我又可以多寫五年程式了。也是那一年,我進入了ThoughtWorks,在這裡,我遇到了一群瘋狂熱愛程式碼的人,我所能做的就是暗自打磨自己的程式設計技藝。

  在ThoughtWorks幾乎五年了,這期間,我跨過了30歲的門檻。時至今日,我依然能寫程式,我最擔心的事情沒有發生,而且,我寫程式的能力似乎還在提升。相比於剛開始寫程式的小朋友,

  • 我在動手之前,就可以對自己要實現的內容有個更好的理解。
  • 我的解決方案會更簡單,更容易理解。
  • 我分解出的任務步驟更小,更容易實現。
  • 我寫程式時考慮的方面會更多
  • 我會更多的考慮寫出的程式對於全域性的影響

  在這期間,我也逐漸釋然。其實,不是30歲能不能程式設計,而是那個時候,30歲的程式設計師本來就沒有多少,這也是我5年的時候,論調成了35歲,是因為這一代人已經長過了30。這不,今年就有人開始討論一些40歲程式設計師的問題了。

  十年程式設計師(二)

  隨著自己在ThoughtWorks經歷的事越來越多,對這個曾暗自困擾我許久的問題,我也有了新的思考:真正可怕的不是X歲後能不能程式設計,而是X歲後只能程式設計。

  為數不少有工作經驗的人進入到ThoughtWorks之後,會感覺很不適應,因為這裡很多剛剛畢業工作一兩年的小朋友寫程式都很厲害,他們自身在寫程式的優勢就不那麼明顯了。結對的時候,他們不斷被這些小朋友們挑戰,有些人就會很鬱悶,因此離開ThoughtWorks的例子也是有的。

  單就純粹的程式碼輸出能力而言,經過一段時間的刻意練習,人和人之間往往不會相差很多,相比較而言,在編寫一段程式碼時,可以考慮到的方面,不同人會因為經驗和視野差異極大。比如,要一個新手實現一個需求,他就會奔著程式碼直衝過去,而一個有經驗的人,則會考慮許多方面,為什麼要做這樣一個需求,實現這樣一個需求有哪些技術方案,實現這樣一個功能是不是會對現有架構有什麼影響,寫這樣一段程式碼是不是需要對現有程式碼進行某些重構,等等。

  如果一個人具備的所謂工作經驗,僅僅是所謂程式碼輸出的經驗,那他的實際價值就會大打折扣。

  事實上,在ThoughtWorks的開發團隊裡面,我們也是鼓勵一個人嘗試不同的東西,比如,有人可以幫助QA做測試,有人可以去嘗試去做業務分析,有人會在公司內部做分享等等。做這些工作本身並不能讓我們的開發技能得到大幅度提升,但這些不同的嘗試會讓人不同的看問題的角度,如果我沒有了解過業務分析,我就不會考慮一個事情本身的價值,傾向於別人告訴我做什麼,我就去做什麼。如果沒有帶過團隊,我就不會考慮,怎麼把一個設計做得簡單,讓別人更好理解和接受。

  道理說白了很簡單,一個人的價值取決於他有多大的不可替代性。如果一個人只能按照別人的要求寫程式碼,他的技能就是很容易替代的。

  十年程式設計師(三)  

  經驗是什麼?有一段時間,我一直在問自己這個問題。

  許多所謂有著“相同工作經驗”的人,表現的差異卻極大。即便在ThoughtWorks,一同起步的畢業生,幾年下來,個人的差距也是非常明顯的。有人已經可以帶團隊了,有人成為了技術專家,有人卻只能在團隊裡低著頭忙活著自己的一畝三分地。

  面對一個問題的時候,我所能想到的就是我的經驗。

  我所能想到的,取決於我做過的事情。習慣於在舒適區練習的人,因為做著本質上類似的東西,面對問題時,腦子裡想到的東西只會侷限在很窄的範圍內。很多貌似工作了很多年的人,其實,只是在不斷重複最初一兩年的事情而已,唯一的差別或許只在熟練程度而已。所以,工作經驗和工作年限是截然不同的兩個東西。

  只有跳出自己的舒適區,嘗試一些不同的東西,才會開啟一個人的思路,讓人得到真正意義上的提升。

  ThoughtWorks的經歷讓我開始把目光投向程式碼以外的許多東西,事實上,在ThoughtWorks裡,凡是程式碼寫得好的人,幾乎都是具有多方面技能的:能寫程式碼,能設計架構,能分析業務,能做測試,能帶團隊,能面試,能做諮詢,甚至能建設新辦公室。

  正是因為能做的事情很多,所以,再坐回到計算機面前寫程式碼時,想到的就不僅僅是區域性的一點點程式碼,而擁有的是更好的大局觀:

  • 我要知道Story的價值所在,保證我寫的東西真正有意義。
  • 我要多從各個角度考慮一下這個問題,以免出現bug。
  • 我要寫出乾淨的程式碼,以便其他人更好維護。
  • 我做出的設計要讓團隊成員都能更容易的理解
  • 我要讓團隊成員更好的成長
  • 我要站在的客戶的角度思考這個問題
  • 我要在客戶面前更好的維護團隊利益
  • 我需要考慮整個辦公室人員的成長
  • ⋯⋯

  記得有人對我說,你做了很多有意思的事:從最早的Ruby on Rails交付專案,到後來的諮詢,再到現在基於DevOps on Cloud的持續交付。在我看來,得到這些機會,恰恰是因為我具備了做很多事情的能力。

  能做的事情越來越多,路也就越來越寬,得到的機會也就越來越多,得到鍛鍊也就越來越多,能力也就越來越強,能做的事情也就越來越多。不知不覺中,一個人就會進入到一個正向反饋迴圈中。

  幸運的是,十年來,我一直在成長,不管是主動還是被動


  版權宣告:轉載時請以超連結形式標明文章原始出處和作者資訊及本宣告
  http://dreamhead.blogbus.com/logs/188002525.html

相關文章