What 25 years of client work actually teaches you
Mebron was founded in 2000. Since then, we've delivered over 150 projects across manufacturing, healthcare, retail, logistics, finance, education, and government. We've worked with clients who became long-term partners and clients who moved on after a single project. We've built things that lasted and things that didn't.
Here are 25 things that 25 years of client work has taught us — one for each year.
On clients
- The client who knows exactly what they want is often the hardest to help. Certainty about requirements is frequently certainty about a solution, not a problem. Our job is to understand the problem.
- Budget conversations are really scope conversations. When a client says they don't have budget, they usually mean the value isn't clear yet. Clarity on value unlocks budget.
- The most important stakeholder is rarely in the room during scoping. Find out who will actually use the system. Talk to them. Their requirements are different from their manager's requirements.
- Client satisfaction and project success are not the same thing. A client can be satisfied with a project that failed to deliver business value. A client can be frustrated with a project that succeeded. Measure the right thing.
- The relationship outlasts the project. We have clients we've worked with for over fifteen years across dozens of engagements. The project is the beginning, not the end.
On requirements
- Requirements are hypotheses, not specifications. Treat them as assumptions to be validated, not instructions to be followed.
- The first version of any requirement document is wrong. Not slightly wrong — fundamentally wrong in ways that only become visible when you start building.
- "Just like [competitor system]" is never sufficient as a requirement. Understand why the competitor built it that way before deciding to replicate it.
- Non-functional requirements matter more than functional requirements in the long run. Performance, security, maintainability, and scalability outlast any feature list.
- Requirements change. Budget and timeline rarely expand to match. Scope management is a continuous activity, not a one-time conversation.
On technology
- Boring technology ships. The most reliable systems we've built use frameworks and databases that have been production-tested for a decade or more.
- The best architecture is the simplest one that meets the requirements. Complexity introduced for future requirements that never materialise is the most expensive kind.
- Technical debt is a loan, not a grant. It comes with interest. Take it deliberately, document it, and pay it back on a schedule.
- The database schema is the most important design decision you'll make. It's also the hardest to change. Get it right before you start building.
- Every system you build, you'll maintain. We've kept that promise since 2000. Design for the team that will be reading this code in five years.
On teams
- A small team that communicates well beats a large team that doesn't. We've built complex systems with two people and struggled with simple ones with eight.
- The best hire is the person who makes everyone around them better. Skills are teachable. Attitude and character are not.
- Knowledge siloed in one person is a business risk. If a key developer leaving would break the system, the system isn't well-documented enough.
- Code review is how you transfer knowledge, not just catch bugs. The ratio of comments to approvals is a proxy for the quality of your engineering culture.
- Psychological safety produces better software. Teams where people are afraid to report problems will hide problems until they become crises.
On the business of software
- Fixed-price projects transfer risk to the vendor. The vendor prices in that risk. The client usually pays more than they would under a time-and-materials arrangement with a trusted partner.
- The discovery phase is where projects succeed or fail. Invest in understanding the problem before writing a line of code.
- Speed to market is usually more important than perfection. A good product in production beats a perfect product in development.
- The projects that go wrong usually go wrong early. The signs are there in the first two weeks: unclear requirements, poor communication, misaligned expectations. Act on them immediately.
- The work that matters most is the work that never gets mentioned. Refactoring, documentation, test coverage, infrastructure stability — the invisible work that keeps everything else running.