有個(gè)不懂技術(shù)的老板真是災(zāi)難!我前老板希望我做個(gè)框架,不希望每個(gè)項(xiàng)目代碼都需要重新寫(xiě),這樣非常耗時(shí)間,人力成本非常大,于是我就說(shuō)那我就寫(xiě)個(gè)通用框架吧,把一些通用性的東西封裝起來(lái),下次要用的時(shí)候直接配置一下最后反射就可以了,但是,在老板心里,他的卻想歪了!
![]()
老板心里想的是,寫(xiě)過(guò)的代碼寫(xiě)過(guò)一次就不用寫(xiě)了,所以,事情越往最后,寫(xiě)得代碼越少,直至最后一行代碼都不需要要寫(xiě),直接配置配置,程序就出來(lái)了!
我在上家公司的時(shí)候推進(jìn)了這個(gè)事情的發(fā)展,并且親自擬定了框架思路,后來(lái)因?yàn)轫?xiàng)目比較急,這個(gè)事情就不在我手上了。
于是,老板花重金招聘了一個(gè)“經(jīng)驗(yàn)豐富”的大齡程序員來(lái)搞這個(gè)事情,相信您也看出來(lái)了,這個(gè)“經(jīng)驗(yàn)豐富”被我打了雙引號(hào),明眼人都能看出來(lái)這個(gè)事情不簡(jiǎn)單!
其實(shí),所謂通用框架的思路無(wú)非就是插件式開(kāi)發(fā),在我們搞非標(biāo)設(shè)備的程序員眼里,能夠被插件化的東西無(wú)非就那幾樣,常用的邏輯、常用的硬件、可動(dòng)態(tài)的配置文件等等。
我們可以將這些邏輯、硬件、配置文件分別繼承統(tǒng)一的基類(lèi),然后軟件在加載時(shí)通過(guò)加載反射這些基類(lèi),然后動(dòng)態(tài)加載基類(lèi)的實(shí)現(xiàn)類(lèi),這樣就可以做到動(dòng)態(tài)的效果。
這么做的意義是啥呢?比如說(shuō)我們公司有一些PLC,上位機(jī)軟件需要跟PLC通訊,但是,不同廠家的PLC它的通訊邏輯是不一樣的,那么我們可以找到所有需要跟PLC通訊的共同點(diǎn),比如說(shuō)讀寫(xiě)一個(gè)Int、String、Boolean類(lèi)型的地址值,這時(shí)候所有廠家的PLC我們可以繼承PLC讀寫(xiě)的基類(lèi),然后實(shí)現(xiàn)Int、String、Boolean類(lèi)型的讀寫(xiě)函數(shù)即可。這樣,即使是一個(gè)項(xiàng)目中,中途換了PLC的品牌,我們也只需要將對(duì)應(yīng)的實(shí)現(xiàn)包丟到軟件中,讓軟件動(dòng)態(tài)加載PLC的實(shí)現(xiàn),從而做到一行代碼不改。
說(shuō)到這里,大部分人應(yīng)該都可以理解這種思路吧?
但是,越到最后,我發(fā)現(xiàn)老板的理解越來(lái)越恐怖了!
通過(guò)那個(gè)“經(jīng)驗(yàn)豐富”的程序員后面跟我們溝通得到的反饋,老板其實(shí)要的是一個(gè)“能干掉公司大多數(shù)程序員的東西”!
雖然老板嘴上沒(méi)有明說(shuō),但是我們后來(lái)理解了老板的意圖,說(shuō)簡(jiǎn)單點(diǎn),老板其實(shí)要的是一個(gè)低代碼或者無(wú)代碼的系統(tǒng),基本上通過(guò)拖拉拽和簡(jiǎn)單配置就能組裝一個(gè)上位機(jī)軟件。
但是,想要徹底不寫(xiě)代碼,或者寫(xiě)少量代碼,那么必須有一個(gè)前提,那就是你得先把所有項(xiàng)目的業(yè)務(wù)邏輯全部都理清楚,并且提前把相關(guān)代碼寫(xiě)好,這時(shí)候才能夠做到所有邏輯通過(guò)拖拉拽的方式,以流程的方式去運(yùn)行。
我不知道大家有沒(méi)有用過(guò)海康的VisionMaste或者康耐視的VisonPro,是的,老板要的其實(shí)就是這樣的東西,可是,因?yàn)閂isionMaster和VisionPro對(duì)于普通人來(lái)說(shuō),還是有一些上手成本的,所以,老板的要求還要更嚴(yán)苛,最好是一個(gè)普通人都能輕輕松松拖拉拽出一個(gè)上位機(jī)軟件系統(tǒng)來(lái)!
那個(gè)“經(jīng)驗(yàn)豐富”的程序員最后直接崩潰了,因?yàn)楣鈱?xiě)一個(gè)插件式開(kāi)發(fā)的框架并不難,難的是如何找出所有項(xiàng)目的共通點(diǎn),然后把所有邏輯封裝起來(lái)。
干到最后,他發(fā)現(xiàn),我們公司的項(xiàng)目幾乎找不出太多的共同點(diǎn)(因?yàn)樘菢?biāo))了,無(wú)論怎么搞,其實(shí)只能說(shuō)代碼工作量小了,但是編碼量頂多也就只能減少一半而已,然后就卡在了業(yè)務(wù)邏輯這塊。
最后,說(shuō)結(jié)果吧,這個(gè)“經(jīng)驗(yàn)豐富”的程序員最后被開(kāi)除了,因?yàn)樗麑?xiě)的框架沒(méi)有達(dá)到老板的期望,又因?yàn)榭ㄔ跇I(yè)務(wù)邏輯的整合這塊卡了很久,后來(lái)甚至都不知道怎么往下寫(xiě)了,然后就擺爛了,而老板又非常關(guān)心進(jìn)度,找他談了次話,得出的結(jié)論就是-這個(gè)東西根本不存在,因此,就把他開(kāi)了!
結(jié)語(yǔ)
你說(shuō)這叫什么事,花好幾萬(wàn)請(qǐng)來(lái)的大牛,干了幾個(gè)月,公司白白付了十幾萬(wàn)的工資,最后發(fā)現(xiàn)是一場(chǎng)空!而且,中途有些人已經(jīng)反應(yīng)過(guò)來(lái)了,老板的最終目的其實(shí)還是想省人力成本,假如他期望的系統(tǒng)真的能被實(shí)現(xiàn),我估計(jì)最后公司那十幾號(hào)人能留下的也沒(méi)多少了!
這也是我前公司人心散了的其中一個(gè)大原因吧!
現(xiàn)在想起來(lái),我提插件式開(kāi)發(fā)只是為了后面的項(xiàng)目更加省時(shí)省力,但是,如果老板提的思路如果真的能實(shí)現(xiàn),到時(shí)候老板可能把我都省了,招幾個(gè)年輕且工資要得比我少的程序員就把項(xiàng)目給干了!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.