天天看點

【轉】程式員的生産力始于需求而非工具

你真的知道影響程式員生産力的關鍵因素是什麼嗎?是VIM、Emacs、最新的Haskell Web架構,還是鐘愛的NoSQL資料庫呢?遺憾的是,如果你将關注點放在工具、架構或是流程上,那就說明你還是沒有真正了解這個問題。我認為,影響程式員生産力的關鍵因素在于起點:恰當的需求。

作為開發者緣何要關注需求,這難道不是業務人員的事情?

當然了,創始人/産品經理/團隊上司必須要關注這個問題:到底開發什麼才能讓客戶最終埋單呢?但如果從開發者的視角看待這個問題會是怎樣的呢?有時會出現這樣的情況,有人拍打桌子,大叫:現在就開始開發XYZ,馬上,立刻,如果中間出現問題,我們可以在開發過程中解決,這就叫做先發優勢?其實,我們稱之為:盡快開始,但永遠不會結束。很有可能你所開發的一半以上的東西都是不清晰的。

你怎麼知道自己完成了?

意料之中的,如果不能完全了解需求,那就會導緻遺漏,當問起什麼時候能夠開發完,你可能會忘記這個,忘記那個。那麼該如何測試不清晰的需求呢?這與你喜歡的BDD工具沒有任何關系。如果輸入不清晰,那麼測試也不會清晰,輸出就更不清晰了。

你總是自我激勵,對嗎?

不過更糟糕的是,頻繁的不清晰的需求是個信号,表示業務人員不确定客戶到底想要什麼。遺憾的是,這也表示你所開發的很多工作都是徒勞無益的。如果這種情況頻繁出現,就會對程式員的生産力造成很大的破壞,這将嚴重影響程式員的效率。

到底什麼才是恰當的需求?

那麼什麼才是恰當的需求呢?我認為恰當的需求的制定過程應該是下面這個樣子的:

需要業務人員與程式員共同讨論,并且經過雙方充分的溝通

需要不斷拆解、拆解、再拆解

不斷打磨,經得起推敲

我是個程式員,需求的事與我無關?

誠然,在大型組織中可能會有專門的業務分析師,他們的主要工作就是在将詳細的需求規範傳遞給實作團隊之前對其進行不斷的完善。在理想情況下,這麼做是完美無缺的,你隻需坐在那兒編寫代碼就行,不過實際情況卻并非如此。

無論怎樣,組織的規模越小,程式員需要處理的事情就越多。公司的創始人可能會拍着桌子大喊:作為程式員的你不僅要負責實作,還要關注需求的産生過程。

無論怎樣,你都應該成為一名專家

對于你來說,可能閱讀AngularJS 2.0的更新路徑要比與客戶讨論領域問題和需求更有趣。不過,我想說的是,你的技術、對架構或算法的了解隻是你每天工作的一部分。對于所有開發工作來說,基礎則是“恰當的需求”。

Behler的文章刊出後很快就引起了衆多開發者的共鳴,很多人也紛紛表達了自己的觀點,下面摘錄出一些典型回報以飨讀者:

Sasi Pallekonda說到:

說得太棒了!開發者不僅要考慮該使用什麼資料結構,還需要思考需求是如何比對最終使用者的,并且如何實作需求,讀了Behler的文章獲益匪淺。

Erik Gollot說到:

非常同意文中的觀點,我現在對如何編寫好的需求非常感興趣,因為根據我的經驗,使用者故事是遠遠不夠的。

Wes Higbee說到:

非常同意Behler的看法,對此我也做了深刻的思考,我認為:方向要比速度更為重要,隻有确定了方向,速度才是有意義的,否則再快的速度也是徒勞無益的。

Jussi Laasonen說到:

很多時候,人們都認為靈活軟體開發隻不過是“立刻開始建構XYZ”,但事實上,這麼做是完全錯誤的。

Fayez Naccache說到:

我已經在我們稱之為精益創業的組織中工作6個多月了。在這期間,我們沒有計劃、沒有詳細需求、沒有你所說的恰當的需求。我覺得工作起來非常困難,一點動力都沒有。我很喜歡文中的這句話:盡快開始,但永遠不會結束;還有無論怎樣,組織的規模越小,程式員需要處理的事情就越多。這對我現在的工作來說真是再恰當不過的描述了。

Eliseu Monar說到:

Eric Evans曾介紹過一種“普适語言”,可以消除團隊成員之間溝通的障礙,我非常喜歡這本書。Martin Fowler對此也有過介紹: 普适語言是Eric Evans在Domain Driven Design一書中所使用的術語,用于描述如何在開發者與使用者之間建構出一種通用且嚴格的語言。該語言應該基于軟體開發中的領域模型,是以它應該是非常精确的,因為軟體是無法處理模糊問題的。 Evans表示在與領域專家溝通時使用普适語言是非常重要的,這有助于測試和領域模型的實作。此外,普适語言(以及模型)還應該随着團隊成員對于領域了解的不斷增強而不斷演化。 普适語言的提出者Eric Evans對此則認為: 通過大規模使用基于模型的語言,我們可以建構出一個完整且可了解的模型,該模型由一些簡單元素構成,這些簡單元素最終能夠表達出複雜的概念。領域專家應該對那些笨拙且無法傳達領域含義的術語或結構持反對意見,開發者應該警惕那些影響設計的模糊之處與不一緻性。

程式員生産力這一話題是每一個開發人員都津津樂道的,那麼對于你來說,影響生産力的因素都有哪些呢,不妨分享出來我們一同讨論。

http://www.infoq.com/cn/news/2015/07/programmer-productivity?utm_source=infoq&utm_medium=popular_widget&utm_campaign=popular_content_list&utm_content=homepage#theCommentsSection

繼續閱讀