2023-04-19

從一個旅遊網站說起

最近有個客戶讓我幫一個網站修復一些 bugs。

呀……當我第一次知道又要幫其他人執屎的時候,其實我是拒絕的!因為我覺得……呀……你不能叫我修、馬上修,第一,我要先看一下,……後來客戶跟我說這次真的是很簡單的,一個關於旅遊的資訊網站,只要修復些發不出 email 的小 bugs 就行。

一個小小的旅遊資訊網站,再加上只要修復些發不出 email 的問題。聽起來就算有坑也大不了那裏去啊,想到這裏我就含笑答應了。

結果拿到代碼一看,我不禁倒抽一口涼氣。

憑着我對這個 project 粗淺的認知,我試着畫一下它的架構圖。

 

整個架構的精粹就一個快字。開發者只要專注開發 Frontend 就行了,其他所有都是現成的,直接就可以重覆利用。能用現成 platform/service 嘅絕不自己搭建,devops 的功夫都省了。今天你 confirm design, 我明天就可以整個網站開發出來給你。畢竟時間就是金錢,天下武功惟快不破。

另外,同樣 Wordpress 套層皮就可以做到的事,若果我掏出上面張架構圖,就問你能不能值多點錢?


看到這裏,小朋友你是否有很多問號?

這樣的架購,維護起來會怎樣呢?如果客戶提出比較複雜的需求又能不能支持呢?

呵呵。

維護?小朋友你想多了,這種公司或開發者明顯打算做一次性生意,管殺不管埋,做完交貨就走人,維護關我鳥事。(不然都不會找到我)

複雜的需求?親,這邊建議你砍掉重練哦,整個網站重新做哦,最多這次給你九折親~

我不去猜測開發者爲什麼要這樣做,其實無非就是成本和時間問題,但能不能別將簡單的事性複雜化?哪怕你簡簡單單寫個 Wordpress theme 我也敬你是條好漢。


在這個項目裏,包含了:
  • 4 個 Repositories
  • 3 個不同的 nodejs versions
  • 2 個 Netlify accounts
  • 一堆 bugs
發不出 email 原因就是其中一個 nodejs version 太低,AWS Lambda 已經唔 support 了。結果爲了升級 nodejs version 又要重寫那些 Lambda functions。

你只要看過一眼 DB structure, 你就知這系統有多隨便,明顯不打算繼續開發和維護的。

最關鍵是,production 上面調用的 SendGrid templates 居然是在開發者的開發者帳號中,還丟失了。我也是嘆爲觀止。

當然,我負責執屎填坑當然是不爽的,但我認爲最慘的還是客戶,畢竟他們可能不理解手上這玩意兒有多垃圾。若果他朝一日真想滿足更多的需求或功能,除了推倒重來別無他法。我想這也是爲什麼 IT agent / vendor 公司一般給人技術垃圾印象的原因,因爲大部分的確只打算做一次性生意,坑一筆就跑。唉。