Architect-level build-vs-buy is the recurring question for any non-trivial capability.
Three options:
- Salesforce native — out-of-box features.
- AppExchange — third-party packaged apps.
- Custom build — your team creates.
Default order: native > AppExchange > custom.
When to buy (AppExchange):
- Common problem — many companies have it; vendors solve it.
- Solid vendor — established, financially stable, good reviews, security-reviewed.
- Customisability — package allows what you'll need.
- Cost over time — total cost of ownership beats build.
When to build:
- Specific business logic — generic solutions don't fit.
- Tight integration with custom data model.
- Compliance / security requires code your team controls.
- Performance critical — packages can't deliver.
- Customisation depth needed — beyond what packages support.
Hidden costs of buying:
- Licensing — recurring; can grow with usage.
- Lock-in — switching costs after adoption.
- Customisation limits — vendor's roadmap, not yours.
- Upgrade pain — vendor's release cadence.
- Knowledge concentration — fewer people understand the package.
Hidden costs of building:
- Maintenance — ongoing forever.
- Salesforce platform updates — code may need updates.
- Talent risk — knowledge walks if developer leaves.
- Security obligation — your team owns security.
- Time to market — slower than buying.
Architect-level evaluation framework:
For each candidate package or custom build:
- Functional fit — % of needs covered.
- Customisability — what can you configure, what's locked.
- Integration — APIs, extension points.
- Performance — at scale.
- Vendor health — financial, roadmap, support.
- Security review status — Salesforce-vetted?
- Reference customers — comparable orgs using successfully.
- Pricing TCO — 3-5 year analysis.
- Exit cost — switch later if needed.
- Talent availability — internal + market for required skills.
Build-vs-buy bias check:
Engineers naturally prefer building. Buyers naturally prefer not paying. Both biases distort.
Senior architect insight: bias toward buy unless build is clearly justified. Each line of custom code is a long-term liability. Each AppExchange package is a long-term dependency. Both have costs; choose deliberately.
The most senior framing: this isn't a one-time decision. Build today; replace with package later is valid. Buy today; rebuild custom later is valid. Architecture should accommodate evolution.
