MENU

Chapter 9

Constraints Are a Feature, Not a Problem

Building systems for a small business means designing within constraints. Time is limited, money is limited, and the people available to implement and maintain systems have other responsibilities. These constraints should shape design from the beginning, not be treated as problems to solve later. Any approach that ignores them will fail.

Why Enterprise Advice Does Not Apply

Much of the available advice about business systems comes from contexts that do not resemble small businesses. Enterprise implementations assume dedicated project teams, multi-month timelines, and budgets that would consume a small business’s entire operating margin. Management consulting frameworks assume layers of middle management that do not exist in a business with fifteen or thirty employees.

This mismatch creates a specific kind of frustration. The advice sounds reasonable and the frameworks seem logical, but when you try to apply them, the gap between the recommendation and the reality becomes obvious. There is no project team; there is you, already overextended, trying to fit systems work into the margins of an already full schedule. There is no implementation budget; there is whatever can be scraped together without jeopardizing payroll.

The pattern that results is familiar: a systems project that starts with ambition, stalls when reality intervenes, and eventually joins the pile of half-implemented tools and abandoned initiatives. The spreadsheet that was supposed to be temporary becomes permanent, the new process gets used for a month and then dropped, and the software that promised to solve everything sits unused because no one has time to learn it properly.

The temptation is to conclude that the business is not ready for systems, or that proper structure is a luxury for later. This conclusion is wrong. You need structure as much as any large business, perhaps more. What you need is structure designed for your actual constraints, not scaled-down versions of enterprise solutions.

Constraints as Design Inputs

A constraint is information about what a solution must accommodate. Limited time means the system must be simple enough to implement without a dedicated project. Limited budget means it must work with inexpensive or existing tools. Limited technical skill means it must be usable by people who are not specialists. These are parameters that shape what the system should be, not problems to solve before designing it.

This matters because it changes what success looks like. The goal is to build the best system that can actually be implemented, used, and maintained given the resources available. A simple system that works is more valuable than a sophisticated system that never gets finished or falls into disuse.

Designing with constraints means making choices: deciding that some features are not worth the complexity they add, accepting that the system will not handle every edge case elegantly, and prioritizing reliability and usability over comprehensiveness. These are intelligent design decisions that respect reality.

Good Enough as a Strategic Choice

Perfectionism kills systems projects in small businesses. If you wait until you have time to do it right, you will never have time. If the project requires everything to be in place before it can begin, it will never begin. Good enough is a recognition that a working system today is more valuable than a perfect system someday. The purpose of a system is to solve a problem. If a simple version solves eighty percent of the problem with twenty percent of the effort, that is often the right choice. The remaining twenty percent can be addressed later, if it turns out to matter, or it can be handled manually, as an acceptable cost of keeping the system simple.

This does not mean accepting poor quality or sloppy implementation. It means being realistic about what is necessary and what is optional. Every feature has a cost: the cost to build it, the cost to learn it, the cost to maintain it, the cost of the complexity it adds. Designing with constraints means being honest about which features justify their costs and which do not.

Designing for Today Without Boxing Yourself In

One of the concerns that prevents action is the fear of making the wrong choice. What if the business changes? What if the system cannot adapt? What if you build something that works now but becomes a limitation later?

These concerns are legitimate, but they are often overstated. The future is uncertain, and designing for every possible scenario is impossible. A system built for today’s needs will require adjustment as those needs change. This is normal, not a failure of foresight.

The alternative—building for a future that may never arrive—has its own costs. Over-building adds complexity, increases implementation time, and creates systems that are harder to understand and maintain. A business that waits to systematize until it knows exactly what it will need in five years will wait indefinitely.

The practical approach is to design for current needs while avoiding decisions that make future changes unnecessarily difficult. Use tools that allow data to be exported. Document how the system works. Build in ways that can be extended rather than replaced. These practices do not require predicting the future. They simply avoid creating unnecessary obstacles to adaptation. Constraints shape what you build today; thoughtful design preserves your ability to change it tomorrow.

The Advice That Follows

The remaining chapters of Part III offer guidance on designing systems that work in small businesses. This guidance is built on the premise that constraints exist and must be respected.

One constraint, however, is harder to design for than all the others: people. Time and budget constraints are static; they define what resources are available. People are dynamic. They have habits, preferences, resistance to change, and limited patience for complexity. A system that looks good on paper but fails to account for how people actually behave will not succeed, no matter how well it accommodates other constraints. Systems fail because people do not use them, or do not use them correctly, or work around them.

The next chapter addresses what it means to design systems for humans, not just for problems.

About the Author

Alison Stoughton

Alison Stoughton

Founder & Lead Software Engineer, Stratelios

Alison is a software engineer and small business advocate who has spent over a decade building operational systems for growing companies across Kansas and Missouri. She founded Stratelios to give small businesses access to enterprise-quality technology through a direct, long-term partnership model.

Learn more about Alison →

Ready to Transform Your Business?

There are a number of ways to get in touch with us. Feel free to connect in whatever way you find most convenient.

Get in Touch

Contact Form

Call or Text

Slack

Slack

Slack Connect DM: alison@stratelios.com Open Slack

Google Chat

Google Chat DM: alison@stratelios.com Open Google Chat