幾乎每個軟件開發人員或程序員都見過其他人編寫的代碼,說明了“任何人都可以編碼”。但你有沒有遇到過所謂的神話般的“10倍效率的開發人員”?作為一個10倍效率的開發人員,在編寫代碼方面做得很少, 更多的是知道要寫什么代碼。
我們許多人開始編程的時候都有特定的目的。比如,我開始編程的時候,是讓我能在睡覺和在學校的時候自動玩那個文字版的MUD游戲。我那時候是個寫腳本的13歲小孩,甚至不知道什么是編程。我可能有一個想法,然后就寫代碼并測試 - 全部靠我自己。
當我們為其他人開發軟件時就變得很困難,因為我們常常缺乏相同類型的動機和興奮感,而它們驅使我們追求自己的愿望。我們沒有自己的想法,而是花幾個小時在會議中嘗試了解這些想法,然后我們大部分時間都在修改別人的代碼 - 或者提交自己的代碼。這導致一定程度的隔閡,進而降低了生產率。
要成為一名10倍效率的開發人員,你必須學會在這種環境中脫穎而出,甚至創立自己的公司來領導這項工作。
任何人都可以是一個10倍效率的開發人員,至少在每一天的某個時刻。我相信所有開發人員都應該專注于提高生產力和團隊合作的三件事。
三件事
要成為一名10倍效率的開發人員,你需要幾年的工作經驗,無論使用哪種編程語言和工具集。你必須善于解決問題和編寫代碼;這是必須的。
重要的是你要明白,如何編寫代碼并不能讓你成為10倍效率的開發人員,10倍效率的工程師,10倍效率的程序員,或其他任何你想要的名字。
你知道5W:“誰(Who),什么(What),在哪里(Where),為什么(Why),什么時候(When)”。雖然這些都適用于軟件開發,我想關注那三個定義了10倍效率的開發人員的特點。這三項把普通開發人員與10倍效率的開發人員區別開來:
是什么(What)
為什么(Why)
什么時候(When)
知道做什么
在企業界,開發人員經常從事他們不太感興趣和不理解的項目。對于大多數開發人員來說,國外域名 免費域名,這不是一個大問題,只要他們收到了很好的指令,并且也得到了明確的輸出定義。
問題是開發人員通常沒有得到足夠的指令。相反,我們使用一種叫做 “敏捷開發” 的東西。我們收到一個記事帖,上面有幾個字,并指望我們知道到底需要做什么。
軟件開發就是溝通。開發人員需要知道我們在做什么,我們試圖解決什么問題,以及到底需要什么樣的結果。我們知道的越多,就可以更快的完成。最重要的是,知道工作的目的和什么會使工作成功是很關鍵的。
水平差的開發者會在一個項目的錯誤方向上花幾個小時而不問任何問題。他們就是我所說的 負10倍效率的開發人員,因為他們一事無成,浪費了所有同事的時間。幾乎每個人都遇到過這些開發人員,與他們一起工作會讓人感到沮喪。你一定要小心,不要養成他們的習慣!
有些開發人員即使沒有很多細節也能很好地工作。他們有大量的創造力,并提出正確的問題。這些獨角獸可能是10倍效率的開發人員。他們知道如何解決問題,并經常提升整個團隊的水平。
最重要的是,10倍效率的開發人員真的很擅長快速地確定需要完成什么和問什么問題。
理解為什么
也許軟件開發的最大障礙就是理解為什么。如果你不明白你要解決的問題,那就很難解決了。
為什么我在睡覺和上學的時候把幾個終端腳本放在一起玩MUD游戲?當然是我想在比賽中達到最高級別。我清楚地知道為什么,我盡我所能來實現目標。
同樣的方法也適用于任何軟件開發項目。了解他們所在的垂直行業和他們試圖解決的問題將會使開發人員更有效率。了解為什么和理解垂直行業也有助于防止不必要的工作,騰出時間專注于那些會使產品或功能對用戶更有價值的事情。
問題是知道為什么還不夠。作為一個真正的10倍效率的開發人員,你必須對這個問題有熱情,并從里到外地了解它。我相信,大多數10倍效率的開發人員本質上也是產品人,具有良好的產品愿景。
知道什么時候做什么
時間對于軟件開發項目非常重要。確定項目任務的處理順序看似容易,但卻非常關鍵。你的工作可以幫助公司獲取一個新客戶或者或清理掉舊的技術債務?
作為開發團隊,我們必須不斷地選擇我們要做什么和什么時候做。
所有軟件開發工作項目都屬于以下三類:
我們必須做的事情
我們需要做的事情
我們想要做的事情
我們必須為客戶完成新功能。我們需要修復軟件中的 bug。我們想減少些技術債務或開發一些酷的新產品功能。這些都需要平衡取舍。
我們應該同時開展所有三個維度的工作項目。我們不能把所有的時間都花在技術債務上,但也許我們應該花一小部分時間在這上面。
開發人員還必須知道何時在其代碼中構建復雜的體系結構。我寧愿保持代碼盡可能簡單,直到不添加架構就會死的時候我才會添加架構。
開發者也必須知道什么時候避免追逐時髦的東西。他們傾向于使用新的工具和技術,但是這些東西可能只會減慢一個項目,而不是更快地完成它。