軟體工程師在做什麼?為什麼我想當軟體工程師?

這是一個我仍在思考的問題,這邊紀錄我當前的想法而非結論。

  1. 學習
    我很喜歡從未知到已知的過程,從理解問題開始,了解手上的工具並建構解法
  2. 建構服務
    我覺得Api是很有趣的東西,它把資料的處理、計算抽象化,回傳給前端系統去渲染,進而建構出一種「體驗」。本質上工程師就是用這些數位工具,去模擬和建構某種技術,進而觸發人們心中的某種體驗。
    舉個例子,每天在用的聊天室,感覺像是我和朋友之間的一個小空間。然而本質上每則訊息就只是一個資料結構,儲存在資料庫中,只是程式依照邏輯取用這些資料結構,前端建構出一個空間,讓人有種「聊天室」的體驗。
  3. 編寫知識
    1. OOP, Data schema 是在對世界建模,反應著我們對世界的理解
    2. 程式碼流程,反應的是對流程、商業運作的理解,將混亂化作具體可被執行的演算法
  4. 處理複雜性
    這可以在所有設計的原則上看到
    1. Abstraction
    2. Easy to change, Don’t repeat yourself
  5. 回饋感
    自己過去讀統計時,讀完一個觀念不確定能用在哪裡,也不確定自己有沒有真的理解,沒有很明確的回饋,告訴我這個觀念是否已經被吸收了。
    然而程式的錯誤是很明確的,容易知道自己投入的方法是否有問題,並且能夠透過回饋去修正。

困惑

  1. A never ending craft
    我一直很好奇軟體作為一種創作的媒介,它的性質是什麼?還有這些性質對人的影響是什麼?
    不像是一個木雕或工藝品,在完成後有一個成品的狀態,帶有穩固性。軟體似乎永遠沒有完成的一天,永遠有bug、永遠要加新東西、永遠要應付變動、永遠沒有完成的狀態,是一個極度流動的媒介。
    這樣的感受,就像是在海邊蓋沙堡一樣,維持著一個隨時會垮掉的結構,讓我有種不穩定焦慮,了解到價值難以累積,成果懸在半完成狀態的感受。
  2. 透明性與流動性