幾乎每個(gè)軟件開(kāi)發(fā)人員或程序員都見(jiàn)過(guò)其他人編寫(xiě)的代碼,說(shuō)明了“任何人都可以編碼”。但你有沒(méi)有遇到過(guò)所謂的神話般的“10倍效率的開(kāi)發(fā)人員”?作為一個(gè)10倍效率的開(kāi)發(fā)人員,在編寫(xiě)代碼方面做得很少, 更多的是知道要寫(xiě)什么代碼。
我們?cè)S多人開(kāi)始編程的時(shí)候都有特定的目的。比如,我開(kāi)始編程的時(shí)候,是讓我能在睡覺(jué)和在學(xué)校的時(shí)候自動(dòng)玩那個(gè)文字版的MUD游戲。我那時(shí)候是個(gè)寫(xiě)腳本的13歲小孩,甚至不知道什么是編程。我可能有一個(gè)想法,然后就寫(xiě)代碼并測(cè)試 - 全部靠我自己。
當(dāng)我們?yōu)槠渌碎_(kāi)發(fā)軟件時(shí)就變得很困難,因?yàn)槲覀兂3H狈ο嗤?lèi)型的動(dòng)機(jī)和興奮感,而它們驅(qū)使我們追求自己的愿望。我們沒(méi)有自己的想法,而是花幾個(gè)小時(shí)在會(huì)議中嘗試了解這些想法,然后我們大部分時(shí)間都在修改別人的代碼 - 或者提交自己的代碼。這導(dǎo)致一定程度的隔閡,進(jìn)而降低了生產(chǎn)率。
要成為一名10倍效率的開(kāi)發(fā)人員,你必須學(xué)會(huì)在這種環(huán)境中脫穎而出,甚至創(chuàng)立自己的公司來(lái)領(lǐng)導(dǎo)這項(xiàng)工作。
任何人都可以是一個(gè)10倍效率的開(kāi)發(fā)人員,至少在每一天的某個(gè)時(shí)刻。我相信所有開(kāi)發(fā)人員都應(yīng)該專(zhuān)注于提高生產(chǎn)力和團(tuán)隊(duì)合作的三件事。
三件事
要成為一名10倍效率的開(kāi)發(fā)人員,你需要幾年的工作經(jīng)驗(yàn),無(wú)論使用哪種編程語(yǔ)言和工具集。你必須善于解決問(wèn)題和編寫(xiě)代碼;這是必須的。
重要的是你要明白,如何編寫(xiě)代碼并不能讓你成為10倍效率的開(kāi)發(fā)人員,10倍效率的工程師,10倍效率的程序員,或其他任何你想要的名字。
你知道5W:“誰(shuí)(Who),什么(What),在哪里(Where),為什么(Why),什么時(shí)候(When)”。雖然這些都適用于軟件開(kāi)發(fā),我想關(guān)注那三個(gè)定義了10倍效率的開(kāi)發(fā)人員的特點(diǎn)。這三項(xiàng)把普通開(kāi)發(fā)人員與10倍效率的開(kāi)發(fā)人員區(qū)別開(kāi)來(lái):
是什么(What)
為什么(Why)
什么時(shí)候(When)
知道做什么
在企業(yè)界,開(kāi)發(fā)人員經(jīng)常從事他們不太感興趣和不理解的項(xiàng)目。對(duì)于大多數(shù)開(kāi)發(fā)人員來(lái)說(shuō),這不是一個(gè)大問(wèn)題,只要他們收到了很好的指令,并且也得到了明確的輸出定義。
問(wèn)題是開(kāi)發(fā)人員通常沒(méi)有得到足夠的指令。相反,我們使用一種叫做 “敏捷開(kāi)發(fā)” 的東西。我們收到一個(gè)記事帖,上面有幾個(gè)字,并指望我們知道到底需要做什么。
軟件開(kāi)發(fā)就是溝通。開(kāi)發(fā)人員需要知道我們?cè)谧鍪裁?,我們?cè)噲D解決什么問(wèn)題,以及到底需要什么樣的結(jié)果。我們知道的越多,就可以更快的完成。最重要的是,知道工作的目的和什么會(huì)使工作成功是很關(guān)鍵的。
水平差的開(kāi)發(fā)者會(huì)在一個(gè)項(xiàng)目的錯(cuò)誤方向上花幾個(gè)小時(shí)而不問(wèn)任何問(wèn)題。他們就是我所說(shuō)的 負(fù)10倍效率的開(kāi)發(fā)人員,因?yàn)樗麄円皇聼o(wú)成,浪費(fèi)了所有同事的時(shí)間。幾乎每個(gè)人都遇到過(guò)這些開(kāi)發(fā)人員,與他們一起工作會(huì)讓人感到沮喪。你一定要小心,不要養(yǎng)成他們的習(xí)慣!
有些開(kāi)發(fā)人員即使沒(méi)有很多細(xì)節(jié)也能很好地工作。他們有大量的創(chuàng)造力,并提出正確的問(wèn)題。這些獨(dú)角獸可能是10倍效率的開(kāi)發(fā)人員。他們知道如何解決問(wèn)題,并經(jīng)常提升整個(gè)團(tuán)隊(duì)的水平。
最重要的是,10倍效率的開(kāi)發(fā)人員真的很擅長(zhǎng)快速地確定需要完成什么和問(wèn)什么問(wèn)題。
理解為什么
也許軟件開(kāi)發(fā)的最大障礙就是理解為什么。如果你不明白你要解決的問(wèn)題,那就很難解決了。
為什么我在睡覺(jué)和上學(xué)的時(shí)候把幾個(gè)終端腳本放在一起玩MUD游戲?當(dāng)然是我想在比賽中達(dá)到最高級(jí)別。我清楚地知道為什么,我盡我所能來(lái)實(shí)現(xiàn)目標(biāo)。
同樣的方法也適用于任何軟件開(kāi)發(fā)項(xiàng)目。了解他們所在的垂直行業(yè)和他們?cè)噲D解決的問(wèn)題將會(huì)使開(kāi)發(fā)人員更有效率。了解為什么和理解垂直行業(yè)也有助于防止不必要的工作,騰出時(shí)間專(zhuān)注于那些會(huì)使產(chǎn)品或功能對(duì)用戶(hù)更有價(jià)值的事情。
問(wèn)題是知道為什么還不夠。作為一個(gè)真正的10倍效率的開(kāi)發(fā)人員,你必須對(duì)這個(gè)問(wèn)題有熱情,并從里到外地了解它。我相信,大多數(shù)10倍效率的開(kāi)發(fā)人員本質(zhì)上也是產(chǎn)品人,具有良好的產(chǎn)品愿景。
知道什么時(shí)候做什么
時(shí)間對(duì)于軟件開(kāi)發(fā)項(xiàng)目非常重要。確定項(xiàng)目任務(wù)的處理順序看似容易,但卻非常關(guān)鍵。你的工作可以幫助公司獲取一個(gè)新客戶(hù)或者或清理掉舊的技術(shù)債務(wù)?