寫程式最困難的地方

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

沒有正確答案

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

情況永遠會變

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

扎實的基本功

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

封面圖片使用 Unsplashinsung yoon 的作品,有想聽的主題可以透過匿名提問告訴我,想了解專業的技術主題可以到弦而時習之找找靈感。
為什麼會看到廣告
avatar-img
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
「什麼時候會有訂飲料系統呢?」從加入五倍紅寶石軟體開發到現在已經過了五年,每次都會有人提出來,接下來就不了了之。我們是一間九成以上都是工程師的公司,理論上像這樣的系統不應該那麼困難才對,為什麼就是沒辦法做出來呢?
如果有在接觸軟體開發產業,很常見的一個說法是非本科(資訊、工程背景)的工程師底子差,做出來的東西很糟糕之類的。然而,事實真的是這樣嗎?又或者說,我們能夠如何解決這樣的問題?
最近正在製作一些工具加速自己開發網站的速度,能夠製作各種工具輔助自己工作是我還沒成為資深工程師之前一直相信的資深工程師條件之一。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
文學創作和寫程式之間,似乎是兩件充滿衝突的事情,有時候我會有點難以解釋發生在自己身上的這種二元特性。以前國高中學習的時候,學科被分割成國英數社自五個項目,其實我最喜歡的科目是國文和數學,在高中要分類組的時候,因為感覺自己除了國文數學之外,還喜歡歷史,所以選了一類組。但是,如今回首從高中選組之後到現在
Thumbnail
現行的文創法10-1條,無論立法者是有意還無意間選邊站,都有邏輯上的問題。如果用搶票機器人的購買者需要被判刑,那用搶票機器人的黃牛,理論上應該加重刑度,才符合邏輯。如果10-1條的出現,是因黃牛掃票行為而起,邏輯上第3項的適用對象應該改成與第2項相同的「黃牛」,才不會讓人有種開發者衰小坐牢的感覺。
Thumbnail
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
Ruby 這款程式語言被認為是學習簡單又好上手,但會寫 Ruby 並不代表你真正進入 Ruby 的世界,Ruby 大叔之前不斷鼓勵新手要融入 Ruby 社群,因為很多平常沒地方學到的專業知識都藏在社群裡,想接觸「臥虎藏龍」的 Ruby 社群,那就務必把這篇收藏起來。 Ruby 社群裡的「神秘導
Thumbnail
會寫程式是目前生成式AI的一項重大功能。許多人也預期未來AI會替代程式設計師寫程式,導致程式設計師失業。 但身為程式設計師的我想說:「不是程式設計師這個職業會消失,而是再也沒必要寫什麼程式了。」為什麼? 請聽我娓娓道來。
Thumbnail
不懂寫程式該如何架設網站?在上一篇文章介紹了多款 No Code 架設網站的工具,我想你已對架站的 No Code 工具有一定了解。如果你還未曾試過建立網站,今天就試試由零開始利用 Notion 架設一個簡單的個人網站。 Notion 網站架設準備工作 將 Notion Page 轉為一頁式網頁
然後....開啟新世界! 沒有想到只是就寫幾行字,程式跑出來的結果會這麼有成就感,而且因為使用過Bigquery跑SQL,覺得RStudio跑R的介面好簡潔友善,上課上得好有興致想繼續往下學習。 這樣的轉折,讓我覺得需要來記錄跟歸納原因,讓自己下一次的挑戰準備也能採用系統化的方法,更快的進入狀況。
Thumbnail
我們習慣被一種思維受限:別人怎麼做有效果,我們就照著做,應該會有用吧? 對,我相信有些適用,但事實上,事情不完全是這樣子運作。 在未知的道路上,你也可以發揮創意,彈性的嘗試不同的方法,因為通往成功的道路不是單一制式的。
Thumbnail
圖1 Google 試算表畫樂活五線譜 前言 這期是Google 試算表之不用寫程式系列,很多朋友看到要寫程式頭就很痛,當然VBA寫程式系列還是會有文章跟範例,適合進階學習的朋友參考。 網路上有很多朋友很想取得樂活五線譜的EXCEL程式,我甚至也用VBA做了一套,還含回測系統,不過這個對於新手投資
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
文學創作和寫程式之間,似乎是兩件充滿衝突的事情,有時候我會有點難以解釋發生在自己身上的這種二元特性。以前國高中學習的時候,學科被分割成國英數社自五個項目,其實我最喜歡的科目是國文和數學,在高中要分類組的時候,因為感覺自己除了國文數學之外,還喜歡歷史,所以選了一類組。但是,如今回首從高中選組之後到現在
Thumbnail
現行的文創法10-1條,無論立法者是有意還無意間選邊站,都有邏輯上的問題。如果用搶票機器人的購買者需要被判刑,那用搶票機器人的黃牛,理論上應該加重刑度,才符合邏輯。如果10-1條的出現,是因黃牛掃票行為而起,邏輯上第3項的適用對象應該改成與第2項相同的「黃牛」,才不會讓人有種開發者衰小坐牢的感覺。
Thumbnail
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
Ruby 這款程式語言被認為是學習簡單又好上手,但會寫 Ruby 並不代表你真正進入 Ruby 的世界,Ruby 大叔之前不斷鼓勵新手要融入 Ruby 社群,因為很多平常沒地方學到的專業知識都藏在社群裡,想接觸「臥虎藏龍」的 Ruby 社群,那就務必把這篇收藏起來。 Ruby 社群裡的「神秘導
Thumbnail
會寫程式是目前生成式AI的一項重大功能。許多人也預期未來AI會替代程式設計師寫程式,導致程式設計師失業。 但身為程式設計師的我想說:「不是程式設計師這個職業會消失,而是再也沒必要寫什麼程式了。」為什麼? 請聽我娓娓道來。
Thumbnail
不懂寫程式該如何架設網站?在上一篇文章介紹了多款 No Code 架設網站的工具,我想你已對架站的 No Code 工具有一定了解。如果你還未曾試過建立網站,今天就試試由零開始利用 Notion 架設一個簡單的個人網站。 Notion 網站架設準備工作 將 Notion Page 轉為一頁式網頁
然後....開啟新世界! 沒有想到只是就寫幾行字,程式跑出來的結果會這麼有成就感,而且因為使用過Bigquery跑SQL,覺得RStudio跑R的介面好簡潔友善,上課上得好有興致想繼續往下學習。 這樣的轉折,讓我覺得需要來記錄跟歸納原因,讓自己下一次的挑戰準備也能採用系統化的方法,更快的進入狀況。
Thumbnail
我們習慣被一種思維受限:別人怎麼做有效果,我們就照著做,應該會有用吧? 對,我相信有些適用,但事實上,事情不完全是這樣子運作。 在未知的道路上,你也可以發揮創意,彈性的嘗試不同的方法,因為通往成功的道路不是單一制式的。
Thumbnail
圖1 Google 試算表畫樂活五線譜 前言 這期是Google 試算表之不用寫程式系列,很多朋友看到要寫程式頭就很痛,當然VBA寫程式系列還是會有文章跟範例,適合進階學習的朋友參考。 網路上有很多朋友很想取得樂活五線譜的EXCEL程式,我甚至也用VBA做了一套,還含回測系統,不過這個對於新手投資