寫程式最困難的地方

更新於 發佈於 閱讀時間約 2 分鐘
最近跟同事討論一個功能模組的設計有什麼問題,當我很流暢的找出問題點並且提供幾種不同的方向時。同事就問我說,要怎麼樣才有一個「標準做法」去設計這些系統呢?

沒有正確答案

我只能告訴他,這一切都要根據當下狀況判斷。在過去的學習經驗中,我們總是學著所謂的「標準答案」因此會很習慣的認為有一個標準做法。同時,在學習撰寫程式的時候,我們參考的教科書、文章、課程也都會有一個完整的案例。
在這樣的狀態下,就會發生所謂不知變通的狀況。也就是每一次都會想著要套用一個公式進去,然而這樣的系統很多時候會變得難以維護甚至完全不符合產品、客戶、使用者的需要。

情況永遠會變

即使我們能夠針對一個情況判斷,也仍然會因為人、時間等因素讓情況改變。這也是在上週的軟體是一種生物這篇文章所提到的觀點,我們是需要不斷的更新、改變設計來對應當下最為真實的狀況。
這就表示,即使我們再怎麼努力的設計一個當下「完美」的系統,依舊還是會面臨需要被調整跟修改的情況。這也是在軟體開發中最為困難的一個能力,要做到所謂的「剛好」是非常困難的。同時,在許多軟體開發的技巧中,會追求所謂的「解耦(Decoupling)」這個特性,就是為了盡可能的減少無法靈活調整的情況。

扎實的基本功

要能夠在這樣的狀況下應對自如,大多數時候需要扎實的基本功以及足夠的經驗。因為有經驗,就能夠快速的想像一個系統至少具備怎樣的特性、規格、盲點,進而避開這些問題,這也是為什麼在同一個領域轉換會比較常見的原因。
至於基本功,就是對於程式的運作、電腦科學的理解,也就是軟體工程師的素養所提到的「素養」問題。當我們嘗試去解決一個複雜的問題,最好的方法就是找到切分問題的方式,由大到小的分解,最後的結果就會回到這些關於電腦、程式運作原理的概念上。
然而,大多數新手容易遇到的是,剛開始工作都會被分配到「小單元」的工作,往往是由小而大的堆疊,因此常常看不見完整系統的樣貌。要解決這樣的狀況,由比較資深的工程師所規劃、設計並且切分的工作就變得極為重要。
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。

封面圖片使用 Unsplashinsung yoon 的作品,有想聽的主題可以透過匿名提問告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
電腦程式處理資料,目前還不能像我們人類一樣可以自動判斷是什麼東西,常會困擾初學者,為什麼要那麼囉嗦分那麼多種資料類型 ? 所以,設計程式要對資料型態非常熟悉與了解,寫起程式來才會得心應手有效率,在輸入與輸出時要注意資料型態的一致,不同的資料型態會造成程式錯誤或得到不是自己想要的結果。例如指定資料型態
Thumbnail
本篇文章針對小企業與對生成式AI、AI寫程式有興趣的讀者,提供如何利用Google Apps Script結合生成式AI,快速製作自動化收據開立系統的實用指導。即使沒有程式設計背景,讀者也可以透過簡單的步驟學習如何與AI互動,定義任務,與AI協作完成自動化工具。
Thumbnail
這篇會跟大家分享 AI 寫程式的一些經驗,包括使用的工具、方法、心得,詳細跟大家分享這個歷程,如果你也想要嘗試,希望可以給你一點啟發。
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
今天想跟大家聊聊軟體開發中那些年大家踩過的「坑」,沒錯,就是那些看不見的陷阱,常常搞得我們焦頭爛額的坑,痛到想哭。 需求改來改去 本來覺得這次的需求挺清楚,覺得「這很簡單,幾天就能搞定」,結果寫完第一個版本,需求就改了。還沒喘口氣,需求又變了!連改了五六次,改到懷疑人生。 會議太多,程
你有沒有遇過這樣的情況?當你設計一個系統時,一開始覺得一切順利,結果過了不久,客戶突然要求增加新功能。問題來了,每次改需求,你的程式碼都變得一團混亂,越改越多錯誤,最後讓你崩潰了。 軟體開發中需求變動是常態,但每次修改都得動到核心程式碼,難免會增加出錯的風險,也讓開發效率大打折扣。今天就要來聊聊「
1. 沒有從整體架構著手,過早進入細節: 很多學生一開始學習程式設計時,容易陷入只關注某個程式碼段或技術細節,卻忽略了先掌握整體系統的全貌。這就像在蓋房子時,還沒設計好整體藍圖就直接開始裝修內部,最終只會導致整體混亂。事實上,先了解系統的目的、架構、以及如何運作,是有效解決問題的關鍵。如果
Thumbnail
這篇涵蓋了 Notion 建立網站的基礎,還有免費的教學資源,讓你不用寫程式,就能用 Notion 快速建立個人網站! Notion 簡易入口網站適合學生、求職、接案、小店家使用,能快速產出一個網站,節省成本又快速方便。
Thumbnail
OpenAI 的 GPT-4o 才發表一個月,更強大的大語言模型又出現了。OpenAI 競爭對手 Anthropic 今宣布推出其最強的新視覺模型「Claude 3.5 Sonnet」,在性能方面擊敗世界上所有其他模型,而且比前一代 Claude 3 更快、更便宜。
Thumbnail
文學創作和寫程式之間,似乎是兩件充滿衝突的事情,有時候我會有點難以解釋發生在自己身上的這種二元特性。以前國高中學習的時候,學科被分割成國英數社自五個項目,其實我最喜歡的科目是國文和數學,在高中要分類組的時候,因為感覺自己除了國文數學之外,還喜歡歷史,所以選了一類組。但是,如今回首從高中選組之後到現在
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
電腦程式處理資料,目前還不能像我們人類一樣可以自動判斷是什麼東西,常會困擾初學者,為什麼要那麼囉嗦分那麼多種資料類型 ? 所以,設計程式要對資料型態非常熟悉與了解,寫起程式來才會得心應手有效率,在輸入與輸出時要注意資料型態的一致,不同的資料型態會造成程式錯誤或得到不是自己想要的結果。例如指定資料型態
Thumbnail
本篇文章針對小企業與對生成式AI、AI寫程式有興趣的讀者,提供如何利用Google Apps Script結合生成式AI,快速製作自動化收據開立系統的實用指導。即使沒有程式設計背景,讀者也可以透過簡單的步驟學習如何與AI互動,定義任務,與AI協作完成自動化工具。
Thumbnail
這篇會跟大家分享 AI 寫程式的一些經驗,包括使用的工具、方法、心得,詳細跟大家分享這個歷程,如果你也想要嘗試,希望可以給你一點啟發。
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
今天想跟大家聊聊軟體開發中那些年大家踩過的「坑」,沒錯,就是那些看不見的陷阱,常常搞得我們焦頭爛額的坑,痛到想哭。 需求改來改去 本來覺得這次的需求挺清楚,覺得「這很簡單,幾天就能搞定」,結果寫完第一個版本,需求就改了。還沒喘口氣,需求又變了!連改了五六次,改到懷疑人生。 會議太多,程
你有沒有遇過這樣的情況?當你設計一個系統時,一開始覺得一切順利,結果過了不久,客戶突然要求增加新功能。問題來了,每次改需求,你的程式碼都變得一團混亂,越改越多錯誤,最後讓你崩潰了。 軟體開發中需求變動是常態,但每次修改都得動到核心程式碼,難免會增加出錯的風險,也讓開發效率大打折扣。今天就要來聊聊「
1. 沒有從整體架構著手,過早進入細節: 很多學生一開始學習程式設計時,容易陷入只關注某個程式碼段或技術細節,卻忽略了先掌握整體系統的全貌。這就像在蓋房子時,還沒設計好整體藍圖就直接開始裝修內部,最終只會導致整體混亂。事實上,先了解系統的目的、架構、以及如何運作,是有效解決問題的關鍵。如果
Thumbnail
這篇涵蓋了 Notion 建立網站的基礎,還有免費的教學資源,讓你不用寫程式,就能用 Notion 快速建立個人網站! Notion 簡易入口網站適合學生、求職、接案、小店家使用,能快速產出一個網站,節省成本又快速方便。
Thumbnail
OpenAI 的 GPT-4o 才發表一個月,更強大的大語言模型又出現了。OpenAI 競爭對手 Anthropic 今宣布推出其最強的新視覺模型「Claude 3.5 Sonnet」,在性能方面擊敗世界上所有其他模型,而且比前一代 Claude 3 更快、更便宜。
Thumbnail
文學創作和寫程式之間,似乎是兩件充滿衝突的事情,有時候我會有點難以解釋發生在自己身上的這種二元特性。以前國高中學習的時候,學科被分割成國英數社自五個項目,其實我最喜歡的科目是國文和數學,在高中要分類組的時候,因為感覺自己除了國文數學之外,還喜歡歷史,所以選了一類組。但是,如今回首從高中選組之後到現在