付費限定

🤕開發者職業傷害──Dependency 的故事、事故與世故

13-avatar-img
發佈於🧠 軟體開發思維 個房間
更新於 發佈於 閱讀時間約 11 分鐘

今天來分享一個我個人 iOS 開發職涯早期遇到的重大傷害,以及它教會我的事情。

故事

大約在 2015 年初,也是我接觸 iOS 開發不到三年的時候,我正在幫自己的第一個獨立開發 iOS App,「快速筆記軟體 NoteBox」 ,升級雲端同步的功能。

NoteBox 本來就有雲端同步,只是我最開始偷懶使用 iCloud Key-Value Store

你可以把 iCloud KVS 當作一個沒有衝突解決機制的雲端版 UserDefaults。當然,它的容量限制也絕對不是很好的長期儲存方案。

當時 Apple 已經發表 CloudKit,有著不需要使用者額外登入的好處,自然是重要選項之一。

另一方面,NoteBox 本來就有整合 Dropbox SDK,以利使用者一鍵把筆記輸出成檔案放在 Dropbox。

當時 Dropbox 有個叫做 Datastore API 的服務,提供給 mobile app 開發者很方便能同步非檔案的資料,類似後來推出的 Firebase Realtime Database,而且使用起來非常簡便。

它內建自動同步、衝突處理、離線儲存等功能。

重點是,它的同步速度非常迅速。兩台手機開著 NoteBox 在前景,在一台手機新增筆記,不到半秒就可以在另一台看到。

Datastore API 簡便且高效能,並且在各種多裝置 + 離線操作的測試條件之下,它都能正確合併資料。讓我對它十分有信心。

而且它還沒有跟開發者收費呢(!)

不過因為不是每個使用者都會登入 Dropbox,所以我同時做了 CloudKit 與 Dropbox Datastore 兩套方案,打算讓使用者自行選擇。

CloudKit 同步要寫得好不容易,需要考慮很多錯誤處理(這個情況,直到 2023 年 Apple 推出 CKSyncEngine 才變得比較簡單)。所以,雖然 Datastore 三兩下就串接完畢,我還是得在 CloudKit 上面花費大量時間開發及除錯。

還有,在兩種雲端儲存方案之間切換的機制也要做到好,也花了我不少力氣。

事故

好不容易,就在我開發完畢兩套全新的同步機制、自行測試完畢,準備要把新版送審上線的時候,

以行動支持創作者!付費即可解鎖
本篇內容共 4060 字、0 則留言,僅發佈於🧠 軟體開發思維、😔 開發者職業傷害你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
留言分享你的想法!
avatar-img
13+(原 iOS Developer+)
1.2K會員
63內容數
13 以 10+ 年 iOS 開發經驗為基礎撰寫,助你在 AI 時代成為更有自信的技術工作者。 ❤️ 支持 13 創作! 🤖 AI 工具實戰經驗與深度思考 🧠 軟體開發思維、職涯發展建議 💡 實用技巧與踩坑經驗分享 😔 開發者身心健康與職業傷害
2025/04/18
最近跟家人聊到 AI 的發展,產生一段有趣的對話,於是寫了這篇短文。
2025/04/18
最近跟家人聊到 AI 的發展,產生一段有趣的對話,於是寫了這篇短文。
2024/10/01
一個免費的小工具,改變了我看待問題與分配資源的方式。從清硬碟開始,延伸到程式效能、時間管理、甚至人生選擇。這篇文章分享我怎麼從 GrandPerspective 學到的事情,以及它為何值得成為長青工具的代表。
Thumbnail
2024/10/01
一個免費的小工具,改變了我看待問題與分配資源的方式。從清硬碟開始,延伸到程式效能、時間管理、甚至人生選擇。這篇文章分享我怎麼從 GrandPerspective 學到的事情,以及它為何值得成為長青工具的代表。
Thumbnail
2024/09/25
我常常覺得 iOS 開發者就像農耕文化,有著以年為單位的工作週期。不同的是,我們不看天氣吃飯,而是 Apple 的產品發布慣例。從 WWDC 到新版 iPhone、Xcode、iOS 發表,每年都有週期可掌握。這篇文章是我多年經驗歸納出的年度工作節奏,幫助你在對的時間做對的事。
2024/09/25
我常常覺得 iOS 開發者就像農耕文化,有著以年為單位的工作週期。不同的是,我們不看天氣吃飯,而是 Apple 的產品發布慣例。從 WWDC 到新版 iPhone、Xcode、iOS 發表,每年都有週期可掌握。這篇文章是我多年經驗歸納出的年度工作節奏,幫助你在對的時間做對的事。
看更多
你可能也想看
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
需求情境: 在設計畫面時,資料來源是後台的 api,每一次畫面細節的修修改改,都會觸發 Xcode Preview 程序,導致不斷呼叫後台。此時若資料結構和大小都具有一定規模,就會導致效率低落,不斷等待,且消耗伺服器資源甚鉅。 解決方案: 將後台傳回的資料以檔案形式暫存在本地端,每次 pr
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
Part.1 搞定基本的 UI 開始開發 iOS App。 首先準備一台 Mac,然後安裝 Xcode,新增專案,系統即刻生成基本的專案結構。coding 的起點在檔案 ContentView.swift: import SwiftUI struct ContentView: View {  
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
實際就業後,會發現收集與分析需求,通常都不是工程師在做,會有另一群人,以非工程的角度收集及分析需求,然後在開發過程中蹦出不同的火花,於是很好奇另一群人的想法是什麼?我不敢說這本書能完全代表另一群人的想法,但確實能夠得到很多有用的思維。推薦給所有的軟體工程師。
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
1.設計系統不用從頭開始 在設計產品時,有一個觀念可能會顛覆我們對於產品設計的傳統想法。這是初期在 AlleyPin 擔任一人設計師,負責各種產品或視覺設計工作時才逐漸領悟到的一點。 當時,我在購買UI Kits這件事情上猶豫不決,擔心使用現成的設計資源會使我的設計變得無聊或是缺乏創造。後來面臨
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
經過這麼多年的觀察與實踐,一個成熟的軟體工程師還需要第四個要素,它是讓決定你通往熟手的重要關鍵沒有之一。
Thumbnail
今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
Thumbnail
今天來分享一下我自己開發的 iOS App,以及為什麼會有這個 App 的產生。 這個 App 是在 AppWorks School 時開發的個人專案,從構思到實際開發完畢大約四週左右。而在去年底的時候稍微整理了一下,終於把它上架到 Apple 的 AppStore。
Thumbnail
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
Thumbnail
這篇文章介紹了 iOS 中常用的 Design Patterns,包括 MVC、MVVM、Singleton、Delegation、Observer 等。同時比較了 Delegate 和 Notification 的使用時機。參考資料中還有更多相關資訊。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News