拿工資不僅僅是讓你寫代碼的
這是我對團隊每個新進員工說的第一件事情。這句話的意思是,我并不關心你是如何快速完成任務的,哪怕代碼很差,只要它像救生艇通氣門一樣管用就行。這句話也是我最喜歡的座右銘之一。
這個說法其實很合理:我們的工作是思考客戶提出的問題,然后制定解決方案。思考第一,代碼第二,公司請我們的最終目的不是寫代碼,而是想出解決方案。
話粗理不粗。
付你薪水不是讓你來思考的,也不是讓你來寫代碼的,你的目的是交付產品。如果不能交付有效的產品給客戶,那么你的知識,技能,態度,以及所有能讓人成為高效程序員的特性又有什么意義呢?!
沒有客戶會說:“嗯,如果能用空格代替tab鍵表示縮進,那代碼將更具可讀性。”也沒有客戶會要求我們使用單向散列存儲的密碼,事實上他們可能聽都沒聽說過。沒有客戶會強求我們想出所有可能的架構和平臺,然后擇優選用。更加沒有客戶會問及他們的項目使用的是什么代碼標準。
客戶不在乎代碼,也不在乎架構,更加不在乎整個系統是否臃腫不堪。他們想要的就是解決他們的問題。
真正的難點在于權衡以下這兩個極端:我們的工作就是寫代碼,亦或是認為,代碼和產品這兩個條件永遠無法同時滿足。
下面讓我們認識兩位新手程序員——Sam和Ted。ps:如有雷同,純屬巧合。
Sam是一名從剛從當地一所大學畢業的新員工,是個標標準準的學霸。她的面試和FizzBuzz測試表現都非常出色,現在她正式開始她的第一天程序 員生涯工作(被聘用了!)。你,作為項目負責人,指派給她第一個任務。因為她才剛開始,所以任務并不難,你(作為一名有經驗的開發人員)覺得大概一小時時 間就能搞定,不過,你基于保守估計,認為她可能需要用一天的時間。
最終她花了一個星期時間!從第二天開始,每次檢查的時候,她都信誓旦旦地說一切進展順利,代碼會寫得非常完美。最后終于完成了,果然如她所說的那樣:代碼完美得像藝術品。但是,請注意,她花了一個星期的時間才完成了這項本應該不超過一天的任務。
現在,來說說Ted。
Ted和Sam同一天被錄用。他的面試也很順利,盡管他完成問題的速度非常快。你也給了Ted一個相對簡單的任務:大概需要一天時間。
但是他只花了一小時!在你中午的休息時間,Ted就噌噌噌跑過來交任務了——瞧那驕傲自得沾沾自喜的樣子,仿佛在一個勁說“求表揚,求給贊!”但是 一看他的代碼,就只能呵呵了:很多復制粘貼來的代碼片段,亂七八糟的函數命名,組織混亂,霧里看花的解釋,等等等等,就像一鍋大雜燴一樣,你不認識我我也 不認識你。
你的團隊更屬意誰呢,Sam還是Ted?都不是。這兩個實際上都不能提供真正的產品?他們一樣糟糕:一個思考得太多,另一個則思考得太少。
所以,謹記這一點,付你薪水不僅僅是讓你來寫代碼的,也不是僅僅只需要思考,你還需要開發出能夠解決問題的產品。
對此,你的看法呢?歡迎各抒己見。
譯文鏈接: http://原網站已經失效/article/not-paid-coding.html英文原文: You're Not Paid To Write Code, You're Paid To Deliver A Product
翻譯作者: 碼農網 – 小峰