讓你看看什么是真正的設(shè)計(jì)!
程序員X在一個(gè)IT咨詢(xún)公司工作,這一天他的Slack收到了來(lái)自老板的一條消息,可是這個(gè)經(jīng)常使用200G內(nèi)存的軟件又一次崩潰了,他看不到老板在說(shuō)什么,于是就直接去找老板。
他打開(kāi)了老板辦公室的門(mén),看到老板慌忙地把瀏覽器關(guān)掉, 問(wèn)道:“有什么事嗎?我正在工作。”
“我的Slack崩潰了,看不到你發(fā)的消息。”
“奧,是這樣,” 老板說(shuō),“下星期是我外甥女的7歲生日,我姐姐想讓我給她做一個(gè)慶祝生日的網(wǎng)站,你能幫忙嗎?”
“當(dāng)然,沒(méi)問(wèn)題!”
程序員回到了座位上,預(yù)定了第二天的會(huì)議。
“老板吩咐我們給他的外甥女做一個(gè)網(wǎng)站,怎么開(kāi)始呢?”
“那當(dāng)然得先選技術(shù)棧啊!” 另外一個(gè)程序員說(shuō)到。
他們花了兩周的時(shí)間來(lái)討論用什么技術(shù)棧,最終確定了一個(gè)列表, 這里僅僅是前端列表:
“不錯(cuò),不錯(cuò),我們有前端技術(shù)了,讓我們開(kāi)始吧!”
三個(gè)月以后
老板坐在辦公室吃三明治,這時(shí)候他想起了一件事情。
“X, 3個(gè)月前我讓你給我的外甥女建一個(gè)網(wǎng)站,現(xiàn)在網(wǎng)站到底在哪兒?”
“先生,我們正在開(kāi)發(fā)前端,我們寫(xiě)了測(cè)試,并且創(chuàng)建了后端的Mock,我們很快就會(huì)完成了!”
“什么?你在開(kāi)玩笑嗎?滾出去!”
程序員X知道老板為什么發(fā)火,因?yàn)槔习逯浪麄儾粦?yīng)該使用Fad.js,他們應(yīng)該使用Even-More-Fad.js。
項(xiàng)目啟動(dòng)6個(gè)月以后
前端完成了, 可是他們還需要一個(gè)后端, 于是程序員X又舉辦了一個(gè)會(huì)議。
“好了, 朋友們,我們得開(kāi)始寫(xiě)后端了, 對(duì)于用什么框架,歡迎各抒己見(jiàn)!”
20個(gè)程序員給了20個(gè)建議,基本上,每個(gè)人都選擇了自己最喜歡的,能讓自己獲得更好工作的框架。
經(jīng)過(guò)了一周的爭(zhēng)論,他們發(fā)現(xiàn)了一個(gè)新的編程語(yǔ)言,由Google和Facebook聯(lián)合推出,新的語(yǔ)言叫做“頑皮小腳本”。
于是每個(gè)人都同意用這個(gè)新語(yǔ)言。
程序員X幻想著這個(gè)項(xiàng)目完成以后,他就可以到Face-oogle去工作了。
項(xiàng)目開(kāi)始1年以后
項(xiàng)目進(jìn)展不順利,程序員X的頭上開(kāi)始冒汗了。
“頑皮小腳本” 有很多的Bug,他們不知疲倦地Fix,實(shí)際上是為Google和Facebook提供免費(fèi)勞動(dòng)力。
雖然他們還沒(méi)有開(kāi)始一行代碼的編寫(xiě),但是X知道再努力一下,成功就在不遠(yuǎn)處。
這個(gè)時(shí)候老板把他叫進(jìn)了辦公室。
“X,你這個(gè)白癡,一年前我讓你給我的外甥女建個(gè)網(wǎng)站,你到底在干什么?”
“先生,馬上就做完了,再給我兩周就行!”
“算了吧。去年我外甥女自學(xué)了一點(diǎn)HTML和Javascript, 她自己就把網(wǎng)站建起來(lái)了!”
程序員X震驚了!
一個(gè)HTML網(wǎng)站!到底是誰(shuí)做的!
“這太荒謬了, 她怎么去測(cè)試呢?她寫(xiě)測(cè)試用例了嗎?”
“她打開(kāi)瀏覽器,這兒點(diǎn)點(diǎn),那兒點(diǎn)點(diǎn)不就行了?”
“但是她是怎么Mock后端數(shù)據(jù)庫(kù)的?怎么集成微信、微博、QQ的?緩存呢?負(fù)載均衡呢?如果CDN掛掉了怎么辦?如果她想把網(wǎng)站改成SPA該怎么辦?!”
“滾出去,你這個(gè)白癡!”
程序員X回到了座位上,他到知乎上寫(xiě)了一個(gè)很長(zhǎng)的文章,抱怨這些剛進(jìn)入編程領(lǐng)域的孩子們不講究任何標(biāo)準(zhǔn),他們這樣會(huì)毀掉軟件產(chǎn)業(yè)。
文章得到了一千個(gè)贊同,每個(gè)人都同意現(xiàn)在入門(mén)編程的標(biāo)準(zhǔn)確實(shí)降低了。
原文鏈接:
https://www.pythonforengineers.com/the-attack-of-the-over-engineering-cowboy-programmers/
后記:這個(gè)小品文生動(dòng)地詮釋了什么是過(guò)度設(shè)計(jì)和過(guò)度工程,程序員X在沒(méi)有搞清楚真正需求的情況下就貿(mào)然開(kāi)始設(shè)計(jì),選擇了復(fù)雜的前端和后端,嘗試了各種熱門(mén)的東西,這樣的項(xiàng)目必?cái)o(wú)疑。
【本文為51CTO專(zhuān)欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】