請不要讓程序員在黑暗中摸索
不知道各位有沒有玩過魔獸、X-COM、文明帝國、紅色警戒之類的策略游戲。
這些游戲使用了所謂的“戰(zhàn)爭迷霧”。剛進入游戲的時候,每一個玩家的地圖都是被黑暗籠罩的,想要前行的唯一途徑就是不斷的摸索。隨著我們不斷地移動,地圖越來越可見化。
這種戰(zhàn)略的劣勢是:玩家看不到周圍的危險、障礙以及機會。每一次的成功都需要一點點的運氣。
有木有感覺這種情景有點熟悉?
“戰(zhàn)爭迷霧”完美地形容了開發(fā)人員的工作處境。他們總是被要求去搞定某一段特定的代碼,但是卻不告知任務(wù)的相關(guān)情況,等于是在讓他們自己在黑暗中摸索。
對于開發(fā)人員,看到“整個的游戲地圖”很有必要。對全局有一個清晰的把握有助于他們做出正確的決策。下面這些問題是他們所需要知道的:
為什么要創(chuàng)建這個功能?它為客戶提供了哪些方便?
圍繞這個功能的代碼經(jīng)歷了怎么樣的一個發(fā)展過程?
此功能會影響應(yīng)用程序的其他哪些部分?
這是否會影響業(yè)務(wù)的其他部分?
我們?nèi)绾魏饬窟@個項目的成功(或失敗)?
當(dāng)開發(fā)人員掌握整個框架之后,才能有針對性地開始工作。他們的深思熟慮謀定而后動非常有助于項目的成功。
同時也有巨大的激勵效應(yīng)。Joe Stump總結(jié)道:
開發(fā)人員對于任務(wù)背后的問題往往得自己摸索,這意味著對于給定的對象可能開發(fā)人員并不能真正地思考到點子上。
但是如果夠負責(zé)的話,開發(fā)人員會沉浸于這個問題的思考,因為其工作具體說來,更為依賴于在商業(yè)上的成功。
舉個例子,如果我是后端開發(fā)人員,你告訴我去實現(xiàn)一些API端點,我需要考慮一下為什么你需要這些端點。
這突顯了了解每個項目背后的目的和任務(wù)的重要性:
目的:我們?yōu)槭裁匆@么做?
任務(wù):目標(biāo)是什么?做到怎么樣的程度算完成?
在了解了目的和任務(wù)之后,開發(fā)人員也就成為了規(guī)劃進程中有價值的合作伙伴。他們可以預(yù)見一些潛在的“地雷”,以免你踩到從而付出高昂的代價。在一篇雜志文章中,Paul Boag描述了將開發(fā)人員摒棄在一些相關(guān)會議之外的危險:
在Digg的鼎盛時期,Daniel Burka(Digg的首席設(shè)計師)和Joe Stump(其主要開發(fā)人員)之間就一個Digg按鈕曾舉行過一次會議討論。Daniel想要更改其設(shè)計,因為從他的角度看,變化不大。但是對于Joe 來說,他發(fā)現(xiàn)這個小設(shè)計將會對網(wǎng)站的性能產(chǎn)生很大的影響,迫使Digg因為這么一個按鈕而升級它的處理能力和服務(wù)器架構(gòu)。
你能做什么
首先我們應(yīng)該負責(zé)任地參與到產(chǎn)品、支持和工程規(guī)劃的會議討論中去。
會后,我們可以創(chuàng)建接下來所需要的有關(guān)規(guī)范文件。
管理人員不是將軍,開發(fā)人員也不是戰(zhàn)士
有時候,管理人員搞的好像這個項目是什么緊要機密一樣,只給出一些“需要知道的基礎(chǔ)知識”。
但是這種保護措施卻不會導(dǎo)致更好的代碼、更受歡迎的項目,也不會增加銷售。不要讓開發(fā)人員在黑暗中摸索,應(yīng)該邀請他們一起參與到整體的戰(zhàn)略討論中來。