認(rèn)識(shí)上需要追求簡(jiǎn)單,實(shí)踐中也該同樣如此。的確,在人臉識(shí)別軟件開發(fā)實(shí)踐存在一定的復(fù)雜性。這是因?yàn)?,?shí)踐中遇到的背景知識(shí)是廣泛的。這些背景知識(shí),通常不會(huì)在一本或幾本參考書中找到答案。例如,當(dāng)你需要開發(fā)一個(gè)Linux版本的通信系統(tǒng)的時(shí)候,需要具備很多相關(guān)的知識(shí)。否則,會(huì)遇到很多困難。
我有過類似的經(jīng)歷。當(dāng)時(shí)接到了一個(gè)任務(wù):我們要準(zhǔn)備一個(gè)運(yùn)行在VMWARE中的應(yīng)用系統(tǒng)DEMO。這個(gè)DEMO將被部署在WAS(已部署WPS )上,系統(tǒng)運(yùn)行時(shí)調(diào)用部署在WPS上的業(yè)務(wù)流程接口,業(yè)務(wù)流程的節(jié)點(diǎn)上會(huì)調(diào)用公司的規(guī)則引擎,規(guī)則引擎被封裝成EJB部署在WAS上。所有的部署過程使用自動(dòng)化腳本。 整個(gè)任務(wù)的時(shí)間是一周。如果你不了解VMWARE、WAS、WPS、規(guī)則引擎、EJB、SHELL SCRIPT、JACL和應(yīng)用系統(tǒng)本身等,你該怎么做?沒有答案。估計(jì)只能像我們一樣瞎蒙吧。
相關(guān)背景知識(shí)的積累需要一個(gè)長(zhǎng)期的過程。在這個(gè)過程中,主要的工作就是收集信息。 收集信息是一項(xiàng)艱巨復(fù)雜的任務(wù)。但是,對(duì)軟件開發(fā)來說,這項(xiàng)任務(wù)是過程性的任務(wù),而不是我們的目標(biāo)任務(wù)。
可是,我總是很遺憾地發(fā)現(xiàn),很多人臉識(shí)別軟件開發(fā)人員都被這個(gè)過程性的任務(wù)蒙蔽了雙眼。他們中的一部分,始終徘徊在信息收集的門外(因?yàn)闊o法掌握足夠的信息而無力解決問題),他們中的另一部分,在積累了豐富的信息之后,盡管已經(jīng)不自覺地站到了一個(gè)更高的層次(可以用思想來指導(dǎo)行動(dòng))上,但是主觀上,他們?nèi)匀话研畔⑹占倪^程當(dāng)作了軟件開發(fā)的本質(zhì)內(nèi)容。
之所以在這里談?wù)撘恍┛此莆⒉蛔愕赖牟町?,是因?yàn)槲曳浅T诤跛枷胗^念上的差異。在我看來,出發(fā)點(diǎn)的不同,導(dǎo)致的結(jié)果可能完全兩樣。這也是我不斷強(qiáng)調(diào)在軟件開發(fā)思想上要堅(jiān)持簡(jiǎn)單化原則的原因。
其實(shí),信息量的多寡,根本不能反映人臉識(shí)別軟件開發(fā)能力的本質(zhì)差異。我們說必要的知識(shí)積累是軟件開發(fā)的起點(diǎn),但是軟件開發(fā)的本質(zhì)在于創(chuàng)造,所以運(yùn)用信息的能力才是關(guān)鍵。
從這個(gè)角度來看,很多企業(yè)應(yīng)用軟件組織對(duì)軟件開發(fā)技能的認(rèn)識(shí)其實(shí)都是錯(cuò)誤的。這些組織看重信息量,而忽視信息的使用方法。這也是我們?yōu)槭裁纯偸怯龅綇?fù)雜混亂的軟件架構(gòu)的原因之一。
致遠(yuǎn)服軟整理出:http://www.soft8.com.cn/如果你的企業(yè)正在招聘人才,請(qǐng)關(guān)注應(yīng)聘者解決問題的思路和看待問題的層次。信息量既不是生產(chǎn)好軟件的前提,也不是生產(chǎn)好軟件的必要條件。以后的章節(jié)中,我還會(huì)進(jìn)一步論述這個(gè)觀點(diǎn)。讓我們?cè)倩氐胶?jiǎn)單化的話題。簡(jiǎn)單化有什么好處呢? 越簡(jiǎn)單越準(zhǔn)確。
用例的撰寫就是一個(gè)明證:不需要修飾語,不需要副詞,不需要語氣詞和助動(dòng)詞。有效的用例只保留主謂賓,沒有任何內(nèi)涵和外延干擾意思的表達(dá)。用例簡(jiǎn)單到只有常識(shí)和術(shù)語,幾乎不可能帶來歧義。 對(duì)于團(tuán)隊(duì)特征更明顯的企業(yè)應(yīng)用軟件開發(fā)來說,簡(jiǎn)單化還是準(zhǔn)確溝通的最好保證。