首頁 > 移動應用 > 正文

程序員的重復勞動陷阱

2019-07-02 10:50:41  來源:博客園

摘要:同樣是一樣的計算機專業畢業,進入職場的職位和工作都差不多,為何有些程序員短短幾年就成長為全能選手或領域專家,有些程序員還在做CRUD?
關鍵詞: 程序員
  同樣是一樣的計算機專業畢業,進入職場的職位和工作都差不多,為何有些程序員短短幾年就成長為全能選手或領域專家,有些程序員還在做CRUD?
 
\
 
  不知道大家有沒有這樣的感覺,每次加入一個新的公司/組,一開始總是要學這個學那個,可能會花很多時間看現有的代碼,然后花一些時間實現一點點小的功能。
 
  等到經過一段時間后,自己對工作越來越得心應手,提來的類似需求馬上就可以做,以做得多做得快為驕傲,覺得這樣可以更受老板青睞,可以升職加薪。
 
  我在畢業第三年的時候加入前公司,在加入公司的第一個季度,我主要再做一些邊緣工具以及理解系統,從第二個季度開始在組里的核心業務上開發。
 
  當時自己為了能夠快速的出成果,會從組里所有的任務里挑看著比較容易實現的做,往往一天就可以做完一個或者兩個任務。
 
  做完一個任務后,發現backlog里面有相似的任務,我也“趕緊”搶過來assign給自己,然后快速的做完,提交code review。
 
  從那個季度開始我每個季度做的工單越來越多,超過組里的所有其他成員,自己也對自己的“高效”洋洋得意,覺的自己工作的非常充實,進步很大。
 
  然而在這個過程中,我已經不知不覺得掉到“重復勞動”的陷阱中去了。
 
  我們在寫代碼的時候,有一個原則交叫DRY(Don't Repeat Youself)原則,簡單通俗的說就是不要copy paste代碼,能抽象成函數的抽象成函數,能抽象成基類的抽象成基類。
 
  但是程序員的工作本身也應該遵循一樣的道理,那就是盡量不要做重復的工作。
 
  重復勞動對程序員的危害
 
  回到開篇的問題,同樣是一樣的計算機專業畢業,進入職場的職位和工作都差不多,為何有些程序員短短幾年就成長為全能選手或領域專家,有些程序員還在做CRUD?
 
\
 
  大部分的技術學習曲線類似于上圖,經歷過短暫的入門期和相對長一些的積累期之后,可能大部分技術都會進入到高效期。
 
  在入門期和積累期的時候可能技能使用的效率會低一些,進入到高效期之后,隨著技能使用的效率大大提高,工作所產生的“輸出”也越來越大。因此“高效期“給人以充實的假象。
 
  一旦自己的某項技術進入到高效期,在此基礎上的提升會非常困難,可能之前工作三個月所掌握的新知識,比之后一年在工作中積累的要多。
 
  有時候我們看一個程序員工作了5年,但是他可能第一年學習并熟悉所用的技術,接下來4年都在做相同的工作,解決類似的需求,那么他的5年工作經驗等于1年乘以5。
 
  而有些程序員,他每工作一段時間之后,都會鉆研技術更深的部分,或者去學習新的技術,總是保持著在嘗試自己并不擅長的領域,那么這樣的程序員,他的5年工作經驗會比前一種程序員要多。
 
  如何擺脫重復勞動的循環
 
  既然重復勞動的危害這么大,那么我們是否可以擺脫重復勞動的循環呢?
 
  有的時候,程序員自己也不想老是重復的干類似的東西,但是無奈被派發的任務重復的很多,似乎自己可以選擇的不多。
 
  在我自己在第三年大量重復勞動之后,我的經理找到我談話,說我不應該這樣重復自己,同樣的事情做一兩次就好了,再重復的做對自己的幫助不大。
 
  我分享一下我是怎么樣避免重復的勞動的:
 
  1.找到Pattern,解決一類問題而不是一個問題。
 
  當你解決了N次類似的需求的時候,是否可以把這些問題抽象出來,是否可以去自動化的實現這類需求?
 
  改了N次bug之后,是否可以發現bug的規律,能夠開發出靜態分析工具來抓住這些bug?
 
  2.嘗試用新的技術解決同樣的問題。
 
  有時當項目的實現并沒有多少規定的時候,我們可以在一定的自由度下嘗試新的工具。
 
  今年年初的時候我去嘗試修改一個已有的內部工具前段,持著學習新技術的心理,我用Redux重新實現了前段,而不是在原有的jQuery的前段基礎上修改。
 
  3.嘗試換崗。
 
  換崗位可以直接的讓你接受不同的項目,做一些不同的事情。我在上家公司的第一組待了近三年才換組,現在來看應該更早的時候嘗試不同的事情。
 
  換崗位也會帶來一些其他的問題,比如到新崗位之后可能會影響晉升速度,需要重新建立自己的權威等等。
 
  4.換工作。
 
  換工作是一個終極大招,它會帶來很多其他的變化,不建議只是為了脫離重復勞動而換工作。
 
  如果沒有養成良好的學習習慣,那么換一份新工作之后也很有可能陷入到新的重復勞動的循環中。
 
  重復勞動不可以完全避免
 
  重復勞動是否可以完全避免呢?
 
  我覺的是不可以避免的。以上的內容都是基于程序員成長的角度去分析問題,重復勞動是有害的。
 
  但是將程序員的勞動視為價值輸出的話,熟練的價值輸出確實也是程序員的價值之一,可以爭取到更高的薪酬。
 
  我們站在組織的角度上來看,重復的需求永遠存在,這些重復的需求需要被完成。
 
  如果在人員配置有限的情況下,不可避免的單個個體成員需要去進行一定的重復勞動。而由于時間上的緊迫性,可能必須要用高效粗暴的方法來實現。
 
  如果你是公司的初創成員,需要在初期做大量的重復工作來從無到有的實現新的產品,那毫無疑問這是應該做的,因為這樣的重復勞動帶來的收益可能是巨大的。
 
  希望大家在工作中都可以正確的認識到重復勞動的陷阱,讓自己能夠保持持久的成長。

第二十九屆CIO班招生
法國布雷斯特商學院MBA班招生
法國布雷斯特商學院碩士班招生
法國布雷斯特商學院DBA班招生
責編:pingxiaoli
dnf帕拉丁