人們很容易高估提前乙個月上線的收益,而低估了這之後擦一年屁股的成本。原文:beware of developers who do negative work
在每個程式設計師的職業生涯中,都遇到過負產出的開發者。負產出的概念可能聽上去有點怪,乙個人什麼都不做可以零產出,但是怎麼會有負產出?
舉個例子,我以前就共事過乙個很糟糕的開發者,他任期六個月裡提交了兩次**修改,這兩處修改功能不正常並且搞壞了產品中的其他功能,他的第三次提交撤銷了這兩次修改的**。
聽上去他的產出是零。然而有好幾個開發者碰到了他這些**的報錯,他們需要追查是自己的**產生了問題還是其他人的,他們需要和他討論修復這個問題的細節,他們也參與了最終判定這段**不值得修復,最好的解決方案是刪掉。
最終整個團隊浪費了十幾個小時在這件事情上,這個開發者沒有產出並且,降低了其他開發者的生產率。
這種例子我還能舉出來很多。
我遇到過很多開發者寫出來能工作的**……但是太過複雜需要其他開發者花大量時間才能搞明白。當然,理解其他人的**總是要花一點時間,但**容易理解的程度還是有顯著區別的。
我們來簡單算一下這裡面的成本:
糟糕的開發者花 5 個小時寫了一段錯綜複雜的**,團隊中另外四個開發者搞明白這段**各花了 10 小時。
淨支出:(4 * 10) + 5 =45 小時成本
好的開發者花 10 個小時寫一段簡明易懂的**,團隊中另外四個開發者理解它只需要每個人 1 小時。
淨支出:(4 * 1) + 10 =14 小時成本
差別:45 - 14 =31 小時。
這些數字還會呈幾何級地增長。我見過特別糟糕的**導致乙個優秀的開發人員也要花兩周時間去完成乙個合理情況下兩個小時就能搞定的任務。事實上兩個小時也是寬鬆的了,如果一開始那部分**就有良好的設計實現,完成任務只需要 30 分鐘。
負產出還有種更糟糕的情況是乙個開發者固守著過時的程式設計經驗並且在公司裡有相當大的影響力。這種開發者憎惡新東西或者改變工作習慣,他們濫用影響力以保持自己不需要接受新事物,結果就是團隊中的其他開發者受到負面影響。
我曾經在乙個公司工作,有段時間大家在探索整合多個開發者工作的新方式。舊方法每次要花費數小時時間,當時我們每週要進行兩次。我們已經確信新方法可以把每次的時間花費減少到幾分鐘,然而當時有個資深開發者不喜歡這個改變並且他有權否決相關進展。我們花了六個月時間才繞過他把方案推進完成。
4 小時 x 每週 2 次 x 26 周 =6 個月時間裡浪費了 208 小時
唉……這相當於乙個人工作五周的時間。
你能想象什麼都不幹麼連續五周麼?如果這些時間完全從你的生命中浪費掉?
幸好這 208 個小時分攤在很多程式設計師身上,但依然是個糟糕的事情。這只是那個公司裡發生的事情之一,導致這個事情的原因同樣導致了其他很多事情,產生了大量內耗。
這也牽出了負產出開發者導致的人力成本。大部分人都希望在工作中獲得成就感,他們希望自己的時間花在有價值的事情上,對開發者而言就是希望交付有價值的軟體產品,浪費時間對此是有傷害的。我們大部分都希望和有才能的人共事,對團隊造成負擔的人會打擊士氣,他們是我們成功的障礙,也讓我們覺得工作的價值受挫。
開發者在市場上的供不應求使得他們非常容易解決這個問題:換個工作好了。這顯然不是公司希望看到的結果。
如果負產出開發者帶來的成本如此高昂,他們是怎麼得到聘用的?部分可以解釋為面試流程需要改進,但不那麼受關注的另一部分是降低招聘標準的動機。
公司往往在某個時期會有大量的工作要短時間內完成,公司內的開發人員不夠完成目標的時候就需要招聘更多開發者。因為當今的招聘市場是賣方市場,程式設計師有議價優勢而公司則需要花相當一些時間來做甄別。這就是降低招聘標準的動機**。當工作量湧來的時候,一些人就開始慌忙招聘。他們覺得辦公室裡有更多的人口總能完成更多的工作。
然而事實遠不是這樣。並非所有的開發者都能給團隊帶來正面價值。我理解緊張的時間表帶來的壓力,但倉促招聘並不是這個問題的解決之道,而總是會讓問題變得更糟。不好的開發者不僅拖慢你的計畫,還會擠走公司裡的優秀開發者,最終公司的進度會比完全不招乙個人更慢。
譯 適合dba和開發者的mysql最佳實踐
這是今天開始在南非秘魯利馬開始舉行otn lad tour的上,我要進行的乙個mysql演講,適合dba和開發者的mysql最佳實踐 通過了解適合於dba和開發者的mysql最佳實踐,學習正確的技巧來讓你的mysql投資效益最大化。必須理解mysql和其他關聯式資料庫產品的不同點,才能讓mysql的...
優秀的開發者 vs 糟糕的開發者
優秀的開發者是乙個藝術家,乙個享受創作過程的工匠。糟糕的開發者只將自己當作負責產生 的碼農。優秀的開發者了解客戶的問題。糟糕的開發者只了解手頭的技術問題。優秀的開發者會不斷努力去理解 為什麼 然後去實現,同時能夠把握大局。糟糕的開發者專注於構建類 方法和配置檔案,而不理會大局。糟糕優秀的開發者了解產...
優秀的開發者 vs 差的開發者
如果你認為使用 優秀 和 差 來區分開發者不妥的話,也可以將這些看作是初級開發者和資深開發者之間的區別。但無論如何,多看看其他的優秀開發者 或資深開發者 是如何做的,對於自身技能 工作方式的提公升有很大的幫助。優秀的開發者是乙個藝術家,乙個享受創作過程的工匠。差的開發者只將自己當作負責產生 的碼農。...