Salesforce 整合幾乎從來不是敗在通訊協定上。驗證是已經解決的問題,寫入一筆記錄也是已經解決的問題。真正把專案拖垮的,是每天的請求配額和資料模型的形狀,而這兩件事通常要等到上線大約三週之後才被發現,那時夜間作業開始回傳錯誤,卻沒有人說得清它在測試環境裡為什麼是好的。 這個模式一致到可以預測。開發者對著一個 Developer Edition 組織開發,一切通過,客戶簽字驗收。接著這套程式碼遇上的,是一個已經住著行銷連接器、資料倉儲擷取作業,以及一個 2019 年就在跑的 Apex 觸發程序的正式組織,而那份看起來很寬裕的請求預算,其實是別人早就在花的一口共用的鍋。 這篇文章把意外提前攤開來談:你應該用哪一個 API、配額是怎...
客製化軟體開發
關於客製化軟體開發的文章、指南和教程,為開發者和企業提供實用知識與技巧。也包括常見故障模式及其修復成本。
軟體原始碼託管,也就是把原始碼交給中立的第三方保管(英文稱為 software escrow),回應的是一種完全合理的擔憂:替你打造並維運關鍵系統的供應商收攤了,而你手上留下的,是一個自己離不開、卻又維護不了的東西。託管合約把原始碼寄存在第三方那裡,一旦真的發生這種情況,第三方就把它交付給你。 這種擔憂站得住腳。問題在於這項工具經常被誤解,而兩者之間的落差催生出一種合約:每年都在花錢,真到需要它的那一天卻幫不上忙。 簽約之前該先問的那個不舒服的問題: 如果明天就把程式碼交到你手上,你這邊真的有人跑得起來嗎?一份沒有建置說明、沒有基礎架構定義、沒有它所呼叫的第三方服務憑證、也沒有資料的原始碼託管,不是營運持續計畫。那只是一個資料夾。從...
在固定價格合約與按工時計費之間做取捨,通常會被說成是一次關於風險的選擇。這個說法本身沒錯,可是緊接著就被處理歪了,因為雙方都預設風險會消失,而不是只在兩邊之間換手。 風險並不會消失。在固定價格的安排裡,估算失準的風險由廠商承擔,而廠商會把這份風險先算進報出的金額裡。在按工時計費的安排裡,承擔的人換成業主。真正的問題從來不是哪一種做法能消除不確定性,而是哪一方比較有條件去管理它,以及把風險轉移出去的代價值不值得付。 能事先看出哪一種做法會成功的檢驗: 你能不能把「完成」寫下來,寫到兩個人對於是否已經達到這個狀態能夠得出一致判斷的程度?如果可以,固定價格就是你能用的選項,而且多半是合理的。如果寫不出來,固定價格合約並不會把模糊消掉,它只...
軟體 RFP,也就是需求建議書,本來的用途是讓不同廠商變得可以互相比較。可是現實中大多數文件剛好起了反效果:它們把解決方案寫得夠細,細到把回答的空間綁死,卻偏偏漏掉了任何人報價時都會需要的那些資訊。結果就是五份報價,彼此差了一個數量級,形式上每一份都回應了需求,但沒有任何兩份在衡量同一件事。 常見的說法是廠商在打太極。偶爾確實如此。但更常見的情況是,文件要了一個從它本身內容根本推不出來的數字,於是每家廠商都用各自不同的假設去填補空白。假設不同,價格自然不同,這裡並沒有誠不誠實的問題。 判斷你的 RFP 是否有效的檢驗方式: 兩家不同的廠商讀完之後,能不能得出實質上相同的範圍?如果文件裡只寫了「使用者管理」,沒有說明有幾種角色、權限是...
軟體維護成本,就是那個讓一個成功專案在十八個月後變成一場尷尬談話的數字。開發階段有預算、有簽核,也如期交付了。可是上線之後會發生什麼事,被一句「技術支援」草草帶過,再配上一個有人憑感覺喊出來的金額,而那個金額幾乎每次都太小。 原因出在結構,不是誰不用心。開發有一個可以報價的範圍。維護沒有範圍,因為決定它的是還沒發生的事:某個相依套件爆出漏洞、某家供應商改掉自己的介接規格、某位使用者碰上當初誰都沒想到的狀況。 人人都在引用的經驗法則是每年抓開發成本的 15 到 20 個百分點,而它之所以危險,正是因為它離正確答案不遠。 它對的次數多到讓人安心,錯的時候又總是往同一個方向錯:它低估了缺陷集中浮現的第一年,而在有法遵義務或外部介接很多的系...
技術盡職調查不是一場程式碼品質比賽,而準備接受查核的團隊,通常把時間花在最不相干的地方。沒有人是為了替你的抽象層打分數才來買一家公司。買方想弄清楚的其實只有兩件事:擁有這套系統要付出多少代價,以及在資金易主之後,情況可能壞到什麼程度。 換一個角度看待這件事之所以重要,是因為它會改變你該優先處理什麼。醜歸醜但跑得動、團隊看得懂、可以安全修改的程式碼,只是一則輕微的查核結果。反過來說,寫得漂亮卻只有一個人看得懂的程式碼,才是嚴重的查核結果,而真正牽動價格的,向來是後者。 所有問題背後的那個問題: 如果創辦工程師在交割後的隔週離職,這套系統還跑得下去,而且還改得動嗎?幾乎每一項會壓低出價的查核結果,都是對這個問題的具體回答。知識全積在一個...
金融科技軟體開發在報價與排程上,跟一般軟體開發沒有兩樣,直到有人問出那句話:到底誰有資格持有這筆錢。從那一刻起,專案就不再是一道工程題,而變成一道帶著工程成分的監理題,你腦中原本的時程也不再站得住腳。 技術很少是難點。搬動資金是一個已經解決的問題,市場上有成熟的服務商、有文件齊全的介面,還有第一天就能用起來的測試環境。真正拖長金融科技專案的,是執照上的身分、面對稽核必須拿得出的軌跡義務,以及好幾個架構決定其實早已由持照方替你做完了。 決定你時程的問題: 你自己持照,還是以代理人身分掛在別人的執照底下營運,或者完全避開受監理業務?這三個答案會產生長度完全不同的專案,而差距是用等待的月數衡量,不是用開發的週數衡量。在做任何範圍規劃之前,...
MVP 軟體開發出錯的地方是範圍會議,不是開發過程本身。有人說出「最小可行產品」這幾個字,大家點頭同意,接著送來的功能清單裡卻寫著使用者帳號、後台管理介面、計費、通知、儀表板,還有一個行動應用程式。那不是最小可行產品。那是一個完整的產品,而它花掉的時間會是你心裡那個數字的三倍。 真正造成損害的字是「可行」。多數團隊把它讀成「好到可以賣給所有人」,但它的本意是「剛好夠用來判斷到底有沒有人想要這個東西」。 最省錢的範圍測試: 對每一項功能,問問自己會因為答案不同而做出什麼不一樣的事。如果一項功能改變不了任何決定,它就不屬於 MVP。後台管理介面不會告訴你人們是否想要這個產品;它只會告訴你,等人們想要之後,這個產品會更好管理。把它放到第二...
在英國做醫療軟體開發,比其他任何產業的同等工作都更貴、更慢,原因並不是程式碼更難寫。原因是預算中相當大的一部分花在證據而不是功能上:臨床風險文件、資訊治理,以及買方在還沒試用產品之前就會索取的合規資料。 在別處做過軟體的團隊一直低估這一點。他們替應用報價、拿下專案,然後才發現合規這一層不是收尾階段,而是必須從第一天就開始的平行工作流,因為它會限制那些日後修改代價高昂的架構決策。 真正推高成本的東西: 一個英國醫療專案大約四分之一到三分之一的預算花在臨床安全、資訊治理與合規證據上,而不是功能。決定性的問題不是你的應用有多複雜,而是它是否接觸病患資料、是否影響臨床決策,以及買方是不是 NHS。每一項都會各自增加一條獨立且無法省略的工作...
凡是按端點數量來估算客製化 API 開發成本的人,幾乎都會算錯,而且通常差三倍。端點本身是整件事裡最便宜的部分:十來個端點,只是讀寫你手上已經有的資料,對一位稱職的後端開發者來說不過是兩週的活。 真正花錢的,是把這些端點變成另一家公司願意把生意押上去的東西所需要的一切:經得起安全稽核的驗證、讓你日後還能改主意的版本管理、好到沒人需要寫信問你的說明文件,以及能告訴你哪個客戶今天早上過得不順的維運裝置。有一個 API,和有一個別人靠著它做生意的 API,兩者之間的那道落差,才是預算真正的去處。 價格區間速覽: 只被你自己的應用程式呼叫的內部 API,通常花費 10,000 到 30,000 英鎊。...