軟體是一種生物

更新於 發佈於 閱讀時間約 2 分鐘
最近同事工作上遇到了一些關於系統設計的問題來找我討論,聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」
是的,大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案

永遠要看情況

其實,不管是誰提出了怎樣的問題,現在要我給一個「方案」我大多只能告訴對方「這需要看情況」
舉個例子,以購物網站來舉例,我們在 PChome 上面購買商品,跟在 LINE 上面購買商品,都是「購買商品」這一件事情。然而會因為商品的類型(實體、虛擬)以及是否能夠退換貨、獲得紅利點數等等不同的「情況」必須將系統的設計做出不一樣的調整。
這就表示,大多數時候我們很很難用書本、網路教學等等提供的方法解決問題,因為同樣的概念,在不同的公司、產品會有無數種變化。

有生命的軟體

除此之外,很多時候我們會覺得當一段程式被寫出來之後,就不會再有變化。其實,軟體是根據人的想法去實現的,因此經過一段時間我們對他增加、刪減功能,這個軟體就改變了!
這就表示,我們的軟體是有生命的。跟生物一樣,會因為時間、環境產生改變,一個小型購物網站成長為一個大型電商需要的系統設計是不同的,因為要負擔的使用者、流量等級不同,用相同的程式碼很難對應這樣差異巨大的情況。
同時,如果所屬公司的計畫改變、所在國家的政策變化,也都會讓我們需要針對各種法律、行銷企劃等等情境,不斷的改變我們的軟體。
在一個軟體停止更新時,會用 EOL(End of Life,終止生命)來描述,確實是非常貼切的用語,因為當我們停止修改、更新,他就不會隨著現實狀況成長、變化,最後變得無法適應當下的時代。

維持軟體品質

如同我們需要運動、健身跟健康的飲食、作息一樣,我們對待軟體也需要思考該在哪裡調整、加入功能的時候是否會造成不良的影響。
這也是當代軟體開發中會對於 CI(Continuous Integration,持續整合)非常推崇的原因之一,因為我們需要持續的驗證今天吃了這個食物(功能)會不會造成不好的影響、這次調整了這個邏輯(穿搭)會不會影響原本的系統表現等等。
尤其軟體的構成在我們撰寫程式時,往往是由小而大的去觀察,因此常常忘記當系統變得極為複雜時相互影響的情況,在這樣錯綜復雜的系統之中,還需要經常性配合功能變化的重構(Refactor)來維持一個系統的穩定。
我們所處的時代變化的非常快,如果沒有小心的評估維持軟體品質的方法,很容易就會讓軟體生病,最後變得緩慢而笨重,最後不得不結束生命。

封面圖片使用 UnsplashSarah Dorweiler 的作品,有想聽的主題可以透過匿名提問告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
你有沒有遇過這樣的情況?當你設計一個系統時,一開始覺得一切順利,結果過了不久,客戶突然要求增加新功能。問題來了,每次改需求,你的程式碼都變得一團混亂,越改越多錯誤,最後讓你崩潰了。 軟體開發中需求變動是常態,但每次修改都得動到核心程式碼,難免會增加出錯的風險,也讓開發效率大打折扣。今天就要來聊聊「
Thumbnail
我們可能會有一種迷思,不管開發什麼系統,開發團隊都袛會有一種方式來工作。反正不管怎麼樣,系統最終也一定是能開發出來的。那麼選擇開發生命週期又跟我何干?本篇將會介紹專案經理應該如何為不同特性的專案選擇最合適的管理策略,即生命週期。
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
本文講述了設計師進行產品規劃時需要融入商業策略,並深入瞭解用戶需求和使用方式的重要性。同時,透過使用者訪談和對各種競品的研究,設計師可以建立良好的商業策略思維,以實現產品的成長和用戶滿意度。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
在這個資訊爆炸的時代,我們每天都會接觸到大量的資訊。然而,要從中找到我們真正需要的信息,卻並非易事。此外,我們的工作和生活中也常常需要進行一些繁瑣的任務,例如寫作、翻譯、搜索等。這些任務往往耗時費力,讓人感到疲憊不堪。推薦最強的AI助理Monica、‎Gemini、Recraft圖片或ICON創作
Thumbnail
社群媒體對人們的負面影響與操縱已成為矽谷巨頭公司前骨幹成員討論的焦點。透過這些平臺,使用者的時間與個人資料被轉化成商品販售給廠商,因此社群媒體平臺為了獲取更多商業利益,不惜一切手段搶佔使用者的注意力。此外,社群媒體的出現導致了青少年的自殺率上升,讓人更脆弱、焦慮、憂鬱。同時,社群媒體還無形中建立同溫層,讓人無法接受外面的世界,更容易被操縱。這些市場行為和效應不僅對個人,甚至可能對國家和世界產生深遠的影響。
Thumbnail
近年來,人工智能與機器學習(AI/ML)技術快速發展,醫療設備數量呈現明顯增長趨勢。本文根據世界衛生組織國際臨床試驗註冊平臺(ICTRP)的臨床試驗數據進行全面分析,瞭解AI/ML SaMD的發展趨勢及地理分佈特徵,並強調了國際合作臨床試驗的必要性。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
你有沒有遇過這樣的情況?當你設計一個系統時,一開始覺得一切順利,結果過了不久,客戶突然要求增加新功能。問題來了,每次改需求,你的程式碼都變得一團混亂,越改越多錯誤,最後讓你崩潰了。 軟體開發中需求變動是常態,但每次修改都得動到核心程式碼,難免會增加出錯的風險,也讓開發效率大打折扣。今天就要來聊聊「
Thumbnail
我們可能會有一種迷思,不管開發什麼系統,開發團隊都袛會有一種方式來工作。反正不管怎麼樣,系統最終也一定是能開發出來的。那麼選擇開發生命週期又跟我何干?本篇將會介紹專案經理應該如何為不同特性的專案選擇最合適的管理策略,即生命週期。
Thumbnail
如果所有裝置都可以透過單一檔案管理器統一管理這會有多方便? 紅茶最近在Github上找到專案,名叫Spacedrive。這個專案的宗旨,開發團隊希望未來只需要一個App就可以連接所有裝置和雲端空間,來更方便的管理自己手上的檔案。
Thumbnail
本文講述了設計師進行產品規劃時需要融入商業策略,並深入瞭解用戶需求和使用方式的重要性。同時,透過使用者訪談和對各種競品的研究,設計師可以建立良好的商業策略思維,以實現產品的成長和用戶滿意度。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
在這個資訊爆炸的時代,我們每天都會接觸到大量的資訊。然而,要從中找到我們真正需要的信息,卻並非易事。此外,我們的工作和生活中也常常需要進行一些繁瑣的任務,例如寫作、翻譯、搜索等。這些任務往往耗時費力,讓人感到疲憊不堪。推薦最強的AI助理Monica、‎Gemini、Recraft圖片或ICON創作
Thumbnail
社群媒體對人們的負面影響與操縱已成為矽谷巨頭公司前骨幹成員討論的焦點。透過這些平臺,使用者的時間與個人資料被轉化成商品販售給廠商,因此社群媒體平臺為了獲取更多商業利益,不惜一切手段搶佔使用者的注意力。此外,社群媒體的出現導致了青少年的自殺率上升,讓人更脆弱、焦慮、憂鬱。同時,社群媒體還無形中建立同溫層,讓人無法接受外面的世界,更容易被操縱。這些市場行為和效應不僅對個人,甚至可能對國家和世界產生深遠的影響。
Thumbnail
近年來,人工智能與機器學習(AI/ML)技術快速發展,醫療設備數量呈現明顯增長趨勢。本文根據世界衛生組織國際臨床試驗註冊平臺(ICTRP)的臨床試驗數據進行全面分析,瞭解AI/ML SaMD的發展趨勢及地理分佈特徵,並強調了國際合作臨床試驗的必要性。