蒼時弦也
蒼時弦也
資深軟體工程師
發表於

前言 - Rails 開發實踐

2021 年底,我開始思考什麼是「開心地寫程式」這件事情,如果單純是興趣也不跟其他人合作,那麼是很容易的。然而,如果想要將寫程式作為工作,就一定會面臨到跟其他人協力的問題,很多時候會是我們抱怨「寫這段程式的人在想什麼」的原因。

也就是說,如果能讓眾多的初階開發者(Junior Developer)寫出更好的程式,那麼對所有人來說都能夠更加專注在享受寫程式的過程。

技術迷思

我曾經有過認為擁有好的技術等於擁有寫好程式的能力。然而,技術這一個詞彙太過於含糊,我們很難明確的界定怎樣的技術是具備寫好程式的。

舉例來說,一個人實現想法的速度非常快,我們可能會覺得他的「技術很好」自然就覺得對方可能是一名優秀的工程師。不過,這也可能是他將寫測試、設計架構等等問題作為代價,換來極佳的開發速度。

正因如此,我們該重新思考一遍什麼是「寫好程式」的能力是怎樣的。我很喜歡在 Clean Architecture 書中對軟體的定義「容易改變的(soft)產品(ware)」的這個說法,因為我們要思考的是,該如何設計出一個讓人樂於維護的產品。

程式設計

在軟體工程師的世界中,我們大多用「開發(Develop)」來形容我們工作的形式,然而我們所學的是程式設計這個「設計」到哪裡去了呢?

因為商業上的需求,我們不斷的被向前推進,為了能夠前進我們發展出強大的「開發」能力,卻逐漸遺忘了「設計」的重要性,正因如此我們才需要重新回顧設計所給予我們的東西。

一個「產品」在軟體的世界中是怎樣的?當我們跟著教科書、線上課程、程式營學習「物件導向」時,隨意地將一些事物分類(Class)然後對這些類別進行抽象化,但這真的能夠與現實世界的產品連結起來嗎?

我們該思考,當一個「產品」被抽象化成概念轉換為軟體後,該如何劃分出他們的「類型(Class)」並且根據我們所知的資訊,轉變成一個能夠反映商業目的的「模型(Model)」

給所有人

這一系列是寫給所有人的文章,我透過自身開發的經驗,將許多軟體開發中複雜的概念抽離,精心挑選一套「馬上能用」的技巧組合,讓所有人都能夠透過這些技巧更好的撰寫程式。

我們將會從一個「產品需求」開始進行探索,並且一步步的將這個未知的黑箱打開,再逐步的思考如何建構「模型」來重現這個需求。雖然無法詳細的講述所有細節,但他是一個經過設計的開發流程,可以幫助你有系統的實現一個功能。

那麼,期待有一天我能看到更多人可以享受軟體開發的樂趣。