On This Page
1Overview2Evaluation Framework
3Build-vs-Buy by Category4Anti-Patterns to Avoid
5References

Overview

The build-versus-buy framework evaluates four dimensions: strategic fit (does this capability differentiate us or is it commodity infrastructure?), total cost of ownership over five years (not just initial integration cost), risk profile (vendor dependency, data sovereignty, supply chain exposure), and fit to requirements (does the solution meet the functional and non-functional requirements without bespoke modification?).

Evaluation Framework

Dimension 1: Strategic Differentiation

Capabilities that directly differentiate the client's product should be built. A custom biometric authentication flow that reinforces the brand. A proprietary recommendation algorithm. A novel interaction pattern specific to the use case. These are build decisions regardless of cost.

Commodity infrastructure capabilities should be bought. Authentication (use AppAuth + your IdP, not a custom OAuth implementation). Crash reporting (Crashlytics). Push notifications (FCM, APNs via a service like Firebase). Analytics (Mixpanel, Amplitude). Building these from scratch consumes engineering capacity without creating competitive advantage.

Dimension 2: Total Cost of Ownership (5-Year)

Build cost: engineering time to design, implement, test, document, maintain, and evolve the capability over five years. SDK cost: licensing fees, per-call or per-user pricing, integration engineering time, migration cost if the vendor changes terms.

Five-year TCO calculation:
- Build: (design hours + implementation hours + test hours) × hourly rate + (annual maintenance hours × 5) × hourly rate
- Buy: integration hours × hourly rate + (annual licence fee × 5) + vendor risk premium

SDK licence terms often start cheap and escalate with scale — model the cost at 10× current user base before committing.

Dimension 3: Risk Assessment

Vendor lock-in risk: how difficult is migration if the vendor raises prices, changes terms, or is acquired? Define an abstraction layer (Repository interface pattern) between the SDK and the business logic, enabling replacement with minimal business logic change.

Data sovereignty risk: where does the SDK send data? For regulated industries (banking, healthcare), SDKs that send user data offshore may violate BSP, PDPA, or HIPAA requirements. Evaluate data residency before adoption.

Supply chain risk: a compromised SDK distributed through Maven Central or CocoaPods affects every app that depends on it. Evaluate the SDK maintainer's security posture and incident history.

Dimension 4: Requirements Fit

Does the solution meet 100% of functional requirements without modification? Does it meet the performance NFRs? Does it support the required OS versions? Does it comply with the applicable regulations?

A solution that meets 80% of requirements but requires 40% of build cost to fill the remaining 20% often costs more total than building from scratch.

Build-vs-Buy by Category

Category Default Decision Rationale
OAuth 2.0 + PKCE Buy (AppAuth) Security-critical, well-specified, bad implementation is dangerous
Crash Reporting Buy (Crashlytics) Commodity infrastructure, network effect (aggregated stack traces)
Custom Camera Pipeline Build Deep hardware access, platform-specific optimisation required
Payment Processing Buy (Stripe, Adyen) Regulated, complex, PCI-DSS compliance prohibitive to build
Design System Components Build Brand differentiation, platform-specific fidelity required
Analytics Buy (Mixpanel/Amplitude) Data science tooling built in, network effect
Biometric Authentication Buy (BiometricPrompt/LocalAuthentication) Platform-provided, hardware-backed
ML Model Inference Build model, buy runtime (Core ML, TFLite) Model is IP; runtime is commodity

Anti-Patterns to Avoid

⚠ 1. Integration Before Evaluation

Adding an SDK based on a blog post or a colleague recommendation without completing the evaluation framework. Discovering 18 months later that the SDK sends user data to servers outside the permitted jurisdiction.

Hover to see the fix ↻
↺ Correct Approach

Dependency Governance process (Section 14) applies to all SDKs. Evaluation checklist completed and approved before first import.

⚠ 2. Building Commodity Infrastructure

Engineering team spends six sprints building a custom push notification service. The result is equivalent to Firebase Cloud Messaging but without the scale, reliability, and global delivery optimisation.

Hover to see the fix ↻
↺ Correct Approach

Buy commodity infrastructure. Build differentiating capabilities. Use engineering capacity where it creates business value.

Flowchart

%%{init:{'theme':'base','themeVariables':{'fontSize':'14px','fontFamily':'IBM Plex Sans, system-ui, sans-serif','primaryColor':'#DBEAFE','primaryTextColor':'#1e3a5f','primaryBorderColor':'#2563EB','lineColor':'#374151','clusterBkg':'#F9FAFB','clusterBorder':'#D1D5DB','edgeLabelBackground':'#FFFFFF'},'flowchart':{'curve':'orthogonal','padding':30,'nodeSpacing':65,'rankSpacing':75,'useMaxWidth':true}}}%% flowchart TD REQ["New Capability Required"] --> D1 D1{Strategic Differentiation?} -->|"Differentiates product Brand · Novel UX · IP"| BUILD["🔨 BUILD Custom implementation Full control · No vendor risk"] D1 -->|"Commodity infrastructure"| D2 D2{5-Year TCO Comparison} -->|"Build cost lower or equivalent"| BUILD D2 -->|"Buy cost lower with acceptable risk"| D3 D3{Risk Assessment} -->|"Vendor lock-in high Data sovereignty issue Supply chain risk"| BUILD D3 -->|"Risk acceptable Abstraction layer possible"| D4 D4{Requirements Fit > 90%?} -->|"Yes — meets requirements"| BUY["🛒 BUY / INTEGRATE SDK or SaaS Faster time to market"] D4 -->|"No — significant gaps require bespoke work"| BUILD style BUILD fill:#E8F5E9,stroke:#1B5E20 style BUY fill:#E3F2FD,stroke:#1565C0

References

  1. Gartner — Build vs Buy Decision Framework. gartner.com
  2. Harvard Business Review — When Should You Buy vs Build Technology? hbr.org
  3. ThoughtWorks — Technology Radar. thoughtworks.com/radar
Mobile Engineering Reference
← Mobile Development