由一把手槍的設(shè)計引發(fā)軟件開發(fā)者的深思
這是一把小型的Feinwerkbau P11空氣壓力手槍。它的售價大概1500美元,看起來主要是給競賽活動設(shè)計的。黑色的管是槍膛,發(fā)射子彈用的。銀色的管裝的是壓縮空氣。
如果你有一把壓縮空氣動力的手槍,你自然很想知道剩余的空氣還有多少?但我并不認為它的這種設(shè)計經(jīng)過了周全的考慮。
我對槍的了解并不很專業(yè),但我知道我不喜歡把槍口對著臉來看氣壓值。
每當我看到這樣的事,我都會停下來思考,是否在軟件開發(fā)領(lǐng)域里我也犯了同樣的錯誤。糟糕的設(shè)計并不會只出現(xiàn)在槍上。
業(yè)務(wù)領(lǐng)域?qū)<?& 軟件
軟件設(shè)計上出現(xiàn)的錯誤并不總是那么容易的被發(fā)現(xiàn),但經(jīng)常的,錯誤的產(chǎn)生會歸結(jié)到同一個問題上。做設(shè)計時你必須要知道基本的業(yè)務(wù)領(lǐng)域知識。這并不是說為了開發(fā)一個烹飪網(wǎng)站,你需要成為一個世界著名的烹飪大師,而是你至少需要知道其中的基礎(chǔ)知識。
如果你不知道這種專業(yè)領(lǐng)域知識,那就找一個知道的合作伙伴。過去的這幾年里,我開的一個應(yīng)用程序就是和一個不懂技術(shù)但卻懂得這個行業(yè)的人合作的。人們往往會低估這樣一個不能在編寫代碼上貢獻力量的人的價值,但實際上他的價值很大。他的對行業(yè)的專業(yè)知識不僅僅能讓我們做出正確的產(chǎn)品,而且他還認識那些可能會有興趣買這個產(chǎn)品的人。
一個好的創(chuàng)意和開發(fā)軟件的能力并不一定能帶來成功。和一些處在可能會使用這個產(chǎn)品的原始用戶的目標市場中的人合作,會大大的增加你成功的機會。如果你找對了人,你不僅可以獲得他在這個領(lǐng)域的專業(yè)知識,而且能得到他的一個由很多遇到了相當?shù)膯栴}、需要你的軟件替他解決問題的人組成的關(guān)系網(wǎng)。
也許有些人會指出,一個制造槍支的公司很可能擁有很多關(guān)于空氣動力槍領(lǐng)域的專家,比我要專業(yè)的多。這很可能是事實。我對槍械領(lǐng)域知識有一個基本的了解,聽過一些講座。任何時候我們學習槍械知識,頭一個要知道的事情是,不要把槍口沖著自己的臉。
這就引起了一個重要的問題。擁有專業(yè)領(lǐng)域知識和運用這些知識是兩回事。
測試軟件
對于軟件,我們做大量的測試。讓程序能跑起來,然后讓一些人使用它。有時候你會發(fā)現(xiàn),人們使用它的方式和業(yè)務(wù)領(lǐng)域?qū)<宜f的人們會使用它的方式是脫節(jié)的。這并不是說你的專家不專。他們也許在他們的領(lǐng)域里是個專家,但這并不意味著他是一個擅長把他的知識解釋給你聽的專家。經(jīng)常的在開發(fā)過程中,他們會告訴你,你需要實現(xiàn)X,而當他們使用了開發(fā)出的這個功能后,他們改變了想法,告訴你應(yīng)該實現(xiàn)Y。
這并不是一件多么糟糕的事情,這是開發(fā)出正確東西過程中的一些自然屬性。你所能做的,是讓這些教訓盡早的出現(xiàn),使遭受到的影響最小化。
我不久前做了一個項目,我們把大部分的精力都放到了Web應(yīng)用的公眾所面對的前端部分。后端是一團糟。它可以運行,但很運行的很糟。但這樣能讓我們迅速的發(fā)布這個應(yīng)用,獲得真實世界的用戶體驗。此時我們準備重新開發(fā)它的后端,使用過它的用戶對他們需要的東西有了更清楚的認識。很多最初他們認為需要修改的東西,現(xiàn)在看來是不合適的。而當初我們很多的假設(shè)現(xiàn)在看來也是錯誤或需要修改的。
領(lǐng)域?qū)<彝ǔo你指引正確的方向,但除非有人真的使用了你的程序,你不會知道是否真的把事情做正確了。
原文:http://www.aqee.net/why-you-need-domain-knowledge/
【編輯推薦】