程序員的生產(chǎn)效率源于需求,而不是工具!
你確定你真的知道到底是什么促使一個(gè)程序員高效率的嗎?是因?yàn)槭褂昧薞IM和Emacs這些強(qiáng)大的編輯器,還是因?yàn)閼?yīng)用了***的Haskell Web框架,抑或是你最喜歡的NoSQL數(shù)據(jù)庫(kù)?
很抱歉,如果你注重的是工具、框架,甚至是進(jìn)程,那么我不得不說,你搞錯(cuò)了!程序員生產(chǎn)效率的真正起源是:正確的需求。
為什么你作為一名程序員也必須關(guān)心需求——而不僅僅是業(yè)務(wù)人員!
顯然,產(chǎn)品負(fù)責(zé)人必須滿足客戶的需求,因?yàn)檫@樣才能讓客戶心甘情愿地付出報(bào)酬。對(duì)此,開發(fā)人員又是怎么看的呢?
曾經(jīng)有位開發(fā)人員說出了大多數(shù)人的心聲:“直接構(gòu)建。出現(xiàn)了問題,就放到開發(fā)過程中處理。這樣,至少我們開了一個(gè)頭,不是嗎?“
我們將這種做法稱之為:馬上啟動(dòng),永不結(jié)束——一開始構(gòu)建的時(shí)候沒有什么準(zhǔn)確的目標(biāo),至少有一半的內(nèi)容是尚不清楚的。
你怎么知道你已經(jīng)搞定了?
由于并不是100%了解,所以在開發(fā)過程中狀態(tài)百出——不知道接下來該做什么,自以為快完成了卻這里忘記了,那里有遺漏,功能不匹配,等等等等。
再問一句,請(qǐng)問你打算如何去測(cè)試模糊不清的需求呢?對(duì)此,你最喜歡的BDD工具可是束手無策的哦。
如果輸入是不明確的,測(cè)試也是不明確,那么輸出就更加不明確了。
你總是特別有積極性,可能嗎?
所有開發(fā)人員都非常討厭的一種情況是,業(yè)務(wù)人員頻繁地給出不確定的需求。這表明業(yè)務(wù)人員本身也不知道客戶真正想要什么功能。
而這也意味著,很多你構(gòu)建的東西會(huì)被棄之于垃圾桶。一鼓作氣,再而衰,三而竭,程序員的積極性就是這樣給磨滅的。
那么什么樣的才算是正確的需求?
現(xiàn)在說說什么樣的才是正確的需求?是不是一句寫在索引卡上的話——“作為一個(gè)用戶我希望能夠使用亞洲建行信用卡”,好了,over,就ok了呢?
一個(gè)正確的需求包括(1)經(jīng)過業(yè)務(wù)人員和程序員雙向的溝通和研究;(2)反復(fù)解構(gòu),解構(gòu),再解構(gòu);(3)論證,其中包括我們常說的”angling“和”skinning“。
拜托!我是一個(gè)程序員,需求不是我的工作!
的確,在一些大型的公司中,通常會(huì)有專門的業(yè)務(wù)分析人員,其唯一的工作職責(zé)就是在遞交給實(shí)施團(tuán)隊(duì)之前先整理出詳細(xì)的需求說明。在理想的情況下,你只要照著說明編碼就行了,但是,這在現(xiàn)實(shí)中顯然是不可能的。
而且,企業(yè)越小,程序員的工作就混雜??赡苣愕睦习寰褪沁@么認(rèn)為的:你,作為一個(gè)”程序員“不僅要知道怎么實(shí)施,也應(yīng)該清楚需求。
無論如何,你都應(yīng)該專于此!
升級(jí)AngularJS 2.0路徑肯定比研究客戶的問題領(lǐng)域和需求要有趣的多——這是毋庸置疑的。
但是,你的技術(shù)技能,你的框架,還有你的算法都只是你每天日常工作的一部分。而所有開發(fā)工作的依據(jù)卻是:正確的需求。
***,歡迎分享你的感受。
譯文鏈接:http://www.geekwww.com/programmer-product-not-tools.html
英文原文:PROGRAMMER PRODUCTIVITY STARTS WITH REQUIREMENTS, NOT TOOLS!