譯者注:乙個10倍效率的開發人員很快就知道了他們需要做什麼,要問什麼問題,什麼時候不問問題,並且是掌握事件優先順序別的高手。以下為譯文:
幾乎每個軟體開發人員或程式設計師都見過其他人編寫的**,說明了「任何人都可以編碼」。但你有沒有遇到過所謂的神話般的「10倍效率的開發人員」?作為乙個10倍效率的開發人員,在編寫**方面做得很少, 更多的是知道要寫什麼**。
我們許多人開始程式設計的時候都有特定的目的。比如,我開始程式設計的時候,是讓我能在睡覺和在學校的時候自動玩那個文本版的mud遊戲。我那時候是個寫指令碼的13歲小孩,甚至不知道什麼是程式設計。我可能有乙個想法,然後就寫**並測試 - 全部靠我自己。
當我們為其他人開發軟體時就變得很困難,因為我們常常缺乏相同型別的動機和興奮感,而它們驅使我們追求自己的願望。我們沒有自己的想法,而是花幾個小時在會議中嘗試了解這些想法,然後我們大部分時間都在修改別人的** - 或者提交自己的**。這導致一定程度的隔閡,進而降低了生產率。
要成為一名10倍效率的開發人員,你必須學會在這種環境中脫穎而出,甚至創立自己的公司來領導這項工作。
任何人都可以是乙個10倍效率的開發人員,至少在每一天的某個時刻。我相信所有開發人員都應該專注於提高生產力和團隊合作的三件事。
要成為一名10倍效率的開發人員,你需要幾年的工作經驗,無論使用哪種程式語言和工具集。你必須善於解決問題和編寫**;這是必須的。
重要的是你要明白,如何編寫**並不能讓你成為10倍效率的開發人員,10倍效率的工程師,10倍效率的程式設計師,或其他任何你想要的名字。
你知道5w:「誰(who),什麼(what),在**(where),為什麼(why),什麼時候(when)」。雖然這些都適用於軟體開發,我想關注那三個定義了10倍效率的開發人員的特點。這三項把普通開發人員與10倍效率的開發人員區別開來:
在企業界,開發人員經常從事他們不太感興趣和不理解的專案。對於大多數開發人員來說,這不是乙個大問題,只要他們收到了很好的指令,並且也得到了明確的輸出定義。
問題是開發人員通常沒有得到足夠的指令。相反,我們使用一種叫做 「敏捷開發」 的東西。我們收到乙個記事帖,上面有幾個字,並指望我們知道到底需要做什麼。
軟體開發就是溝通。開發人員需要知道我們在做什麼,我們試**決什麼問題,以及到底需要什麼樣的結果。我們知道的越多,就可以更快的完成。最重要的是,知道工作的目的和什麼會使工作成功是很關鍵的。
水平差的開發者會在乙個專案的錯誤方向上花幾個小時而不問任何問題。他們就是我所說的 負10倍效率的開發人員,因為他們一事無成,浪費了所有同事的時間。幾乎每個人都遇到過這些開發人員,與他們一起工作會讓人感到沮喪。你一定要小心,不要養成他們的習慣!
有些開發人員即使沒有很多細節也能很好地工作。他們有大量的創造力,並提出正確的問題。這些獨角獸可能是10倍效率的開發人員。他們知道如何解決問題,並經常提公升整個團隊的水平。
最重要的是,10倍效率的開發人員真的很擅長快速地確定需要完成什麼和問什麼問題。
也許軟體開發的最大障礙就是理解為什麼。如果你不明白你要解決的問題,那就很難解決了。
為什麼我在睡覺和上學的時候把幾個終端指令碼放在一起玩mud遊戲?當然是我想在比賽中達到最高端別。我清楚地知道為什麼,我盡我所能來實現目標。
同樣的方法也適用於任何軟體開發專案。了解他們所在的垂直行業和他們試**決的問題將會使開發人員更有效率。了解為什麼和理解垂直行業也有助於防止不必要的工作,騰出時間專注於那些會使產品或功能對使用者更有價值的事情。
問題是知道為什麼還不夠。作為乙個真正的10倍效率的開發人員,你必須對這個問題有熱情,並從裡到外地了解它。我相信,大多數10倍效率的開發人員本質上也是產品人,具有良好的產品願景。
時間對於軟體開發專案非常重要。確定專案任務的處理順序看似容易,但卻非常關鍵。你的工作可以幫助公司獲取乙個新客戶或者或清理掉舊的技術債務?
作為開發團隊,我們必須不斷地選擇我們要做什麼和什麼時候做。
所有軟體開發工作專案都屬於以下三類:
我們必須為客戶完成新功能。我們需要修復軟體中的 bug。我們想減少些技術債務或開發一些酷的新產品功能。這些都需要平衡取捨。
我們應該同時開展所有三個維度的工作專案。我們不能把所有的時間都花在技術債務上,但也許我們應該花一小部分時間在這上面。
開發人員還必須知道何時在其**中構建複雜的體系結構。我寧願保持**盡可能簡單,直到不新增架構就會死的時候我才會新增架構。
開發者也必須知道什麼時候避免追逐時髦的東西。他們傾向於使用新的工具和技術,但是這些東西可能只會減慢乙個專案,而不是更快地完成它。
10倍效率的開發人員擅長於優先順序排序,並了解何時將時間投入到架構中,而不是使用一坨義大利麵條般的**來實現某種工作。請記住,你的使用者並不關心你的軟體是如何工作的,也不管該架構有多花哨。他們只想它能解決問題。10倍效率的開發人員理解這一點。
現在讓我們來談談成為10倍效率的開發人員的重要技能:掌握是什麼(what),為什麼(why),什麼時候(when)。
從為什麼(why)開始
成為10倍效率的開發人員的第一步是對你要解決的軟體和問題變得充滿熱情。你需要從裡到外完全理解它。這首先是要對你工作的公司及其使命充滿激情。
不要因為別人告訴你要寫乙個按鈕(button),然後你就只寫乙個按鈕。努力在更高層次上去理解為什麼(why)。如果你持續關注為什麼,你對你的團隊和公司會有更大的價值。
做乙個好的開發者和優秀的問題解決者,而不是最好的程式設計師
我會把自己描述成乙個黑客開發者。我是那種能很快把一些醜陋的**拼湊起來並解決幾乎任何問題的人。我的**很少是美麗的,但它能解決問題。這才是最重要的。
你不必編寫完美的**與單元測試來成為乙個10倍效率的開發人員。你需要知道什麼時候要做和什麼時候不做這些事情。
乙個10倍效率的開發人員擅長解決特定的問題,並通過**滿足業務需求。你能做的最聰明的事情就是在你把專案交給其他人(他們更善於最後敲定一些架構和其他一些細節)之前就知道它能走多遠。
什麼時候(when)在你的內心,或者不在
知道什麼時候要建立乙個複雜的架構,而不是拼湊一些東西,需要經驗和你蜘蛛俠般的感官。你要麼有這種感覺,要麼你根本不知道。
我曾與一些最聰明的開發者共事過,他們總是很糟糕的優先考慮模式和架構,而不是功能和排期。他們總是過度實現或者一遍遍重構,爭取 「完美的**」,而不是 「可交付的**」。
10倍效率的開發人員必須利用他們的經驗和本能來知道什麼時候要專注於架構和完美,什麼時候就是把事情搞定。
知道該做什麼(what to do)和該問什麼(what to ask)
許多軟體開發歸結於溝通技巧。可惜的是,在我們要工作的專案上許多注釋和要求都不是很詳細。乙個10倍效率的開發人員知道如何閱讀這些,應用他們知道的業務裡的 「為什麼」,並提出相關的問題。
最好的開發者知道在尋求幫助之前要在某件事情上花多少時間。他們也知道要問什麼問題,以闡明需求來推進專案。
我已經寫了超過15年的**。可以說我是乙個10倍效率的開發人員,或者至少我能。我知道我擅長什麼,當我做我擅長的事情時,我可以很快地完成大量的工作。
如果你想做乙個新產品的原型,我就是你要找的人。如果你需要尋求angular,react或其他一些 前端的幫助,我絕對不是你要找的傢伙。在這些任務上我將是乙個負10倍效率的開發人員。
10倍效率的開發人員不是乙個神話。他們確實存在。他們很可能是開發經理、架構師、首席開發人員或公司創始人。如果他們不是的話,他們應該轉變。我後來成為了公司的創始人,到現在為止都兩次了。
當然,沒有人能在每一天的每個時候都是乙個10倍效率的開發人員。我們沒有精力或專注力每天以這樣的速度工作。我們不是機械人。
如果你理解軟體開發的 「是什麼(what),為什麼(why),什麼時候(when)」,你就可以是乙個更有效率和更好的團隊成員–甚至是乙個每天幾個小時內的10倍效率的開發人員。這會有很大的不同。
開發人員的開發效率
影響開發效率的因素,總結有五大方面 任務不明確 流程不順暢 需求變更多 責任心不夠 能力有瓶頸。針對這些因素,分別可以從以下五個方面來優化和改進。制定清晰的規範尤其是開發規範。無規矩不成方圓。營造良好的團隊文化氛圍,人性化的管理方式。愉悅狀態下的工作效率遠遠高於抑鬱狀態下的效率。定期舉行技術分享交流...
IT開發人員
其路五 轉行到市場 絞盡腦汁的想想,我所知道的人之中只有兩個開發人員去了市場,這兩個人都不能說是朋友,認識而已。他們都是主動要求去了市場,結果是這兩個人均在市場都是乾到一年左右,然後都自已開公司了。呵呵,很奇怪,極高的轉行成功率!不過仔細想想,我對這兩個人的思路佩服的五體投地。能下決心仍掉每月5 6...
開發人員必讀
對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...