【IT雜談】十年程序員

知識庫 » 程序人生

十年程序員

作者: 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章