跨越不同領域的軟體開發經驗— 如何讓你的系統設計能真正解決問題

更新於 發佈於 閱讀時間約 5 分鐘
延伸閱讀
0 →1 ? 1 →100 ? 軟體顧問到底在顧什麼?:https://revteltech.pse.is/sw-consult-what

軟體開發一個很迷人的地方是可以在架空的世界(電腦世界)中重新思考、解構並處理真實世界的問題。但要怎樣真正有效的解決問題就很看各家功力了。

這篇文章我們暫且放下溝通及流程規劃的議題,聚焦來看看純粹領域差異造成的困難以及該怎麼面對。

raw-image

混搭風 … 過往接觸過超過 10 個領域

回顧過往曾經觸碰過的領域真的滿多,茲列舉幾個

  • 導航系統上的感測器軟體開發及測試
  • 睡眠偵測 IoT 設備的系統架構規劃
  • 備孕產品的 APP 內容設計及開發
  • 獨角獸等級的電商 APP 開發
  • 港區物流的後端流程系統規劃開發
  • 美股看盤 APP 的開發及產品設計
  • 隨選電系的電商及後端架構規劃
  • 印刷領域 ERP 及電商邏輯規劃

其實還可以往下列舉,對我來說每次的課題都是學習及挑戰。

跨越這麼多領域不會累嗎?當然還是會的。但生活總是要過,只能試著搞定他囉!

設法有效率認知去模型領域 — 參考後端設計方法

每個不同領域都有自己的特性及知識背景,過往我會從三個角度下去思考跟掌握:

  1. 靜態的背景知識
    每個領域必然有屬於自己的一組底層知識結構,散見在名詞定義等地方。先將這部分掌握可以快速理解在這個知識體系中哪些部分是重要的。比如在電商領域中庫存就是一個重要概念,不同的庫存模型一定程度反映了這個商業系統的收費及販售框架
  2. 動態的運作邏輯
    系統必然是動態的,基於背景資訊之間的互動描述了這個系統的複雜度及運作圖像。比如基於庫存這件關鍵字下去觀察,其外圍的保留及消減邏輯便是這個電商系統的重要流程
  3. 連結的隱性流程
    系統畢竟是人和軟體的綜合體,藉由 1 跟 2 的分析之後下一步便是要觀察真實運作時與其互動的 SOP 到底長怎樣。一樣回到庫存管理的邏輯來看,營運人員怎麼在多通路間分派這些庫存反映了許多事,如員工訓練流程及該產品在真實世界的特性

在這裡大家有沒有發現這裡的分析跟後端在思考架構時很像?資料庫關聯的設計、跨表間的互動及API 的覆蓋方式便是如此。

其實方法還是很多的,但明確找個自己的思考底層框架非常重要。

raw-image

不夠深入怎麼辦?套入一些流程方法論來面對

講到這裡可能會有人好奇,一個好用的系統必然有其特殊的邏輯存在,這些部分甚至是外人非常難以理解的,那我們要怎麼可以如原生一般的來發現及解決這些事情呢?

其實每件事情都是越來越複雜的,就如同我們過往在學習的歷程中也是由淺入深。面對自己的理解及系統的覆蓋率不夠深入的問題,首要的原則是接受它的不完美。

這時候一些如敏捷開發之類的思考方式很能幫忙這段,敏捷的意思不是快,但它能很好的協助你逐步的在過程修正系統並和外部環境融洽的結合。甚至基於一個好的流程節奏,放心的做一些 workaround 也無所謂,只要知道何時會修復、該朝哪邊修復,這些個不一定完美的 workaround 反而可以很好的看出資源的限制、知識的局限以及當下最重要的問題

raw-image

混搭混出新滋味 — 或許你的問題早就被解決了

最後來講一個在這些跨域規劃及開發中有趣的地方,很有可能你要面對的問題在其他領域已經被解決了。

之所以可能發生這件事情我想大概是因為人畢竟只有兩手兩腳,面對問題的解決方法存在某些共性。在剝除掉一些特有的表層邏輯之後,其內在機理可能都很類似。

這裡舉個例子,先前在協助醫療系統設計的時候有個目標是要適當的將每天蒐整而來的醫療紀錄交由不同層級的醫師及技師進行校正,當中還穿插演算法的自動標註。這裡該如何設計整個框架呢?

在深入思考後我發覺他跟過往接觸過的兩個任務很接近

  1. 翻轉教育的教師批改系統 — 這裡有完整的權限管理架構
  2. 線上課程系統的互動設計 — 這裡有完整的資訊分享設計

如此一來自然能有比較高的把握度去規劃系統使用情境及框架了!

終極目標是建構起一個通用的思考範式

其實做這些事情看起來很雜,但背後的目的卻可能是能一以貫之的:搭建起一個屬於自己的認識世界的方式以及解決問題的框架

這個世界總是有解決不完的問題,身為程式設計師的我們面對的這些挑戰就是不斷在解構及重建的過程。也是因為這樣軟體開發才是這麼的有趣。

raw-image






留言
avatar-img
留言分享你的想法!
avatar-img
Sam Huang的沙龍
18會員
34內容數
從超過 50 個合作經驗中擷取在系統開發、顧問及營運上的經驗及心得
Sam Huang的沙龍的其他內容
2023/12/05
沒有最正確的軟體架構,通常都需要隨著時間和發展階段進行修正和修改。系統最終會變成怎樣往往也和公司的管理方式及運作模式密切相關。 在過去的幾年裡,為應對需求,公司的軟體架構走向了 JAMSTACK 的風格。這裡分享一些關於這種架構的感受和經驗。
Thumbnail
2023/12/05
沒有最正確的軟體架構,通常都需要隨著時間和發展階段進行修正和修改。系統最終會變成怎樣往往也和公司的管理方式及運作模式密切相關。 在過去的幾年裡,為應對需求,公司的軟體架構走向了 JAMSTACK 的風格。這裡分享一些關於這種架構的感受和經驗。
Thumbnail
2023/11/29
作為程式開發者,每次聽到「加個 flag 就好」或者「開個變數存起來」這種話總是會心頭一驚。理由也很正常,就是像這樣子的 workaround 並沒有真正解決問題,只是徒留技術債,以後怎麼爆炸的都不知道。 workaround 聽起來真的是十惡不赦,不是嗎? 可凡存在必有道理,不如來聊聊 wor
Thumbnail
2023/11/29
作為程式開發者,每次聽到「加個 flag 就好」或者「開個變數存起來」這種話總是會心頭一驚。理由也很正常,就是像這樣子的 workaround 並沒有真正解決問題,只是徒留技術債,以後怎麼爆炸的都不知道。 workaround 聽起來真的是十惡不赦,不是嗎? 可凡存在必有道理,不如來聊聊 wor
Thumbnail
2023/09/23
「為什麼要維護?有 bug 你們就要負責啊,你們怎麼可以給我們有 bug 的東西!」 一瞬間我也是愣了一下,還差點被說服(?)。
Thumbnail
2023/09/23
「為什麼要維護?有 bug 你們就要負責啊,你們怎麼可以給我們有 bug 的東西!」 一瞬間我也是愣了一下,還差點被說服(?)。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
唸研究所開始當助教,偶而會有學弟妹問:怎樣寫好程式?老實說,這是個大哉問,連我學開發軟體這麼久,我也只能回答他們:多培養自己釐清問題、拆解問題、解決問題與抽象化的能力。但他們通常只會一臉狐疑看著我,感覺我說的話好抽象。
Thumbnail
唸研究所開始當助教,偶而會有學弟妹問:怎樣寫好程式?老實說,這是個大哉問,連我學開發軟體這麼久,我也只能回答他們:多培養自己釐清問題、拆解問題、解決問題與抽象化的能力。但他們通常只會一臉狐疑看著我,感覺我說的話好抽象。
Thumbnail
軟實力是由資訊力、分析力、建構力、流程管理力所構成。資訊力表示資訊化程度(工業3.0)、分析力指的是將 E 化資料加以分析從中提取有效資訊、建構力則是將透過有效資訊建構出改善流程、最後的流程管理力會將改善流程導入至實際情境並加以管理。
Thumbnail
軟實力是由資訊力、分析力、建構力、流程管理力所構成。資訊力表示資訊化程度(工業3.0)、分析力指的是將 E 化資料加以分析從中提取有效資訊、建構力則是將透過有效資訊建構出改善流程、最後的流程管理力會將改善流程導入至實際情境並加以管理。
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
人月神話一書中提到軟體工程的任務有兩種性質:本質性與附屬性。後者可能會隨著工具改良(如更好的程式語言及 IDE)而逐步改善,但前者才是真正複雜且難以攻克的困難點。 而系統串接亦然,其本身很常同時參雜著這兩種問題。或許在我們一切任務開展之前都順著這兩個大類對子分項做規劃會是個不錯的思路方向。說到底所
Thumbnail
人月神話一書中提到軟體工程的任務有兩種性質:本質性與附屬性。後者可能會隨著工具改良(如更好的程式語言及 IDE)而逐步改善,但前者才是真正複雜且難以攻克的困難點。 而系統串接亦然,其本身很常同時參雜著這兩種問題。或許在我們一切任務開展之前都順著這兩個大類對子分項做規劃會是個不錯的思路方向。說到底所
Thumbnail
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
Thumbnail
簡單來說,寫程式最困難的地方往往不是技術上的問題,而是如何對當下的狀況正確判斷並且建立良好協作的狀態,才會是最為困難的地方。
Thumbnail
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
Thumbnail
聽了描述之後我的直覺反應告訴他「會有這樣的問題,應該是設計時少考慮了什麼!」 大多數軟體工程師從初學者階段開始進入到能夠獨立工作的時候,大多會需要自己考慮一個功能的設計,直到一個完整的系統設計。然而,我們總是找不到正確答案。
Thumbnail
軟體開發一個很迷人的地方是可以在架空的世界(電腦世界)中重新思考、解構並處理真實世界的問題。但要怎樣真正有效的解決問題就很看各家功力了。 這篇文章我們暫且放下溝通及流程規劃的議題,聚焦來看看純粹領域差異造成的困難以及該怎麼面對。 回顧過往曾經觸碰過的領域真的滿多,茲列舉幾個
Thumbnail
軟體開發一個很迷人的地方是可以在架空的世界(電腦世界)中重新思考、解構並處理真實世界的問題。但要怎樣真正有效的解決問題就很看各家功力了。 這篇文章我們暫且放下溝通及流程規劃的議題,聚焦來看看純粹領域差異造成的困難以及該怎麼面對。 回顧過往曾經觸碰過的領域真的滿多,茲列舉幾個
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News