Showing posts with label simplicity. Show all posts
Showing posts with label simplicity. Show all posts

Monday, November 14, 2016

Simplicity can yield functionality, robustness, speed and space

Simplicity can yield functionality, robustness, speed and space. 這段話出自 programming pearls 一書。很奇怪,我學程式設計也滿久了,漸漸才理解程式設計最核心的問題,就是把本來複雜的問題加以化簡。可以舉的例子太多了,用一個困擾我許久的問題來解釋這個概念。

以前我要做網站時,就會遇到疑問,到底要用:
(1) drupal, joomla, wordpress 等 CMS 的解法
(2) RoR, Django, laravel 等 framework 的解法
(3) 全手刻後端 + javascript 前端

而我以前待過的公司一連兩間都是採用第三種解法。其中最主要的原因之一,多少是因為精通 framework 的工程師不是那麼好找。沒有信心之下,大家還是決定先直接手刻後端的程式算了。總不能為了還不清楚會如何發展的規格,冒然引進一大堆,工程師自己都無法理解的 middle ware 。以前我覺得好像這樣子不是很好的解法,總覺得這樣子的決定,似乎是在工程師本身對各種工具掌握度不足而做的選擇。

後來,又有一些新的名詞冒了出來:
(1) API centric design: 後端只提供 Restful API。前端完全用 javascript 來做。
(2) micro services: 後端不要做成一隻程式,而是做成好幾隻小小的程式。每一個程式有各自的功能,彼此之間用 RPC/MQ 來溝通。
(3) Headless Drupal: 後端用 Drupal 來做,但是只提供 Restful API 給前端,前端還是用 javascript 來做。

看到這些新的名詞逐漸流行,我想應該也是很多人也跟我有類似的看法。需要解決的網站開發問題沒有那麼複雜,用簡單一點的 library, framework ,一切會單純許多。「簡單」才是最重要的事。

最近我因為工作需要,一連用了 nodejs 和 python 寫了兩個 API server。nodejs 我用的是 expressjs。python 我用的是 bottle 。應該都是最簡單的 framework 了。大概因為太簡單了,我寫完沒有多久,就完全忘記怎麼寫了。XD