AI made PMs faster. Multiplayer mode is still broken.

A PM can summarize research, draft a PRD, and mock up a prototype before lunch. The hard part starts when the team has to decide what actually gets built.
Jira Product Discovery gives product teams one place to capture insights, prioritize ideas with consistent frameworks, and build living roadmaps stakeholders can rally around.
And because it’s connected to Jira, the context behind every decision stays with the work—so developers and their agents know not just what to build, but why.
AI helps PMs move faster. Jira Product Discovery helps the whole team build with confidence.

Technology has a tendency to grow.
A small application gains features. A focused project becomes a platform. A straightforward workflow accumulates integrations. A useful internal tool gradually becomes responsible for processes it was never originally designed to handle.
Some of that growth is necessary. Requirements change, organizations evolve and useful systems often need to support more people and more complicated situations.
But growth is not automatically improvement.
There is another approach worth considering: keeping systems deliberately small.
Small does not have to mean primitive, temporary, or incapable. A small system can be sophisticated while remaining focused. It can solve an important problem without attempting to solve every adjacent problem.
In many cases, that restraint makes the system easier to understand, maintain, change, and trust.
Complexity Has a Cost
We often evaluate technology according to what it can do.
There is another question that deserves equal attention: what does it require?
Every additional dependency, integration, abstraction, configuration layer and feature introduces some form of cost.
That cost might be computational but more often it is organizational.
Someone has to understand the system. Someone has to maintain it. Dependencies need to be updated. Documentation needs to reflect changes. Integrations can break. Security vulnerabilities need to be addressed. New contributors need enough context to work safely.
None of these costs necessarily make complexity undesirable. Complex problems sometimes require complex systems.
The problem begins when complexity accumulates without providing proportional value.
A system that technically does more may become harder to operate, harder to explain, and harder to change. Eventually, even relatively simple modifications can require understanding a web of dependencies and assumptions.
At that point, capability has increased while adaptability has decreased.
Clear Boundaries Make Systems Understandable
One of the advantages of a small system is that its boundaries can remain visible.
You can understand what the system is responsible for and, just as importantly, what it is not responsible for.
That distinction matters.
When responsibilities are poorly defined, systems tend to absorb adjacent problems. A publishing tool becomes an analytics platform. A documentation system becomes a project-management system. A simple API gradually becomes responsible for authentication, transformation, storage, reporting and orchestration.
Each addition may make sense individually.
Collectively, they can make the original purpose difficult to identify.
Clear boundaries create a form of discipline. Instead of continually asking whether another capability can be added, the better question becomes whether that capability belongs there at all.
Sometimes the right answer is another small component with a clearly defined interface.
Sometimes it is an existing tool.
And sometimes the feature simply is not necessary.
Fewer Dependencies Create More Control
Modern software is built on dependencies and that is generally a good thing.
Reusing reliable components prevents developers from repeatedly solving problems that have already been solved well. Open source libraries, APIs, frameworks, cloud services and shared standards make an enormous amount of modern technology possible.
But dependencies are not free.
Every external component introduces something outside the immediate control of the system.
A package can change. An API can be deprecated. A service can increase its price. A project can stop being maintained. A platform can alter its terms. A dependency several layers removed from your own code can introduce a vulnerability.
The goal should not be eliminating dependencies.
It should be making them intentional.
A smaller dependency surface can make a system easier to reason about. When something breaks, there are fewer places to investigate. When an upgrade is required, there are fewer interactions to consider. When evaluating risk, the chain of responsibility is easier to see.
This principle applies beyond software development.
An independent publisher relying on five essential services generally has a different operational risk profile from one whose publishing workflow depends on twenty interconnected platforms.
The question is not whether dependencies are good or bad. It is whether each dependency provides enough value to justify the additional reliance it creates.
Maintenance Is Where Simplicity Pays Off
Launching technology receives much more attention than maintaining it.
The launch is visible. Maintenance happens quietly afterward.
Yet most useful systems spend far more of their lives being maintained than being launched.
They need updates. Documentation changes. Bugs appear. Requirements evolve. Contributors come and go. Infrastructure changes underneath them.
This is where unnecessary complexity becomes particularly expensive.
A system that was impressive to build can become exhausting to maintain.
Smaller systems often make that work more manageable because there is simply less surface area requiring attention. A maintainer can understand a larger percentage of the system. Changes can be evaluated against a clearer purpose. Documentation can remain closer to reality.
This matters especially for independent developers, small organizations, open source maintainers, and publishers.
Large organizations may be able to assign teams to increasingly complex infrastructure. Smaller operations usually cannot.
Time becomes one of the primary architectural constraints.
Designing for maintainability therefore means designing around the resources that will actually exist after the initial enthusiasm has disappeared.
Simplicity Can Support Trust
Trust in technology is partly about behaviour.
People are more likely to trust a system when they can develop a reasonable understanding of what it does, what information it uses and what happens when something goes wrong.
Complexity can make those questions harder to answer.
This is particularly relevant as more systems incorporate automation and artificial intelligence. A workflow might involve a user interface, several APIs, an AI model, retrieval systems, external data sources, automated decisions, and downstream integrations.
Each layer may be defensible on its own.
Together, they can make accountability difficult to trace.
Smaller systems cannot eliminate that problem but clear boundaries can make responsibility easier to locate.
If one component retrieves information, another generates output, and another records provenance, those responsibilities can be examined separately. Failures become easier to isolate. Assumptions become easier to document.
Trust does not require every system to be simple.
It does benefit from systems that can be explained.
Small Systems Can Still Work Together
Choosing smaller systems does not mean creating isolated technology.
In fact, interoperability can make small systems more practical.
A focused tool becomes significantly more useful when it communicates through documented APIs, established data formats or open standards. Instead of expanding until it performs every function itself, it can remain specialized while working with other specialized systems.
This is one reason open standards matter.
They allow boundaries without necessarily creating silos.
A system can remain small internally while participating in something much larger externally.
That creates a different model of technological growth.
Instead of building one increasingly large platform, we can build ecosystems of understandable components.
Each component can evolve independently. Components can be replaced when better alternatives emerge. Users can choose different combinations according to their needs.
The overall ecosystem can become capable without requiring every individual part to become complicated.
Restraint Is a Design Decision
There is often pressure to keep adding.
Users request features. Competitors introduce capabilities. New technologies create opportunities. Developers discover interesting problems adjacent to the one they originally intended to solve.
Saying yes can feel like progress.
Sometimes it is.
But saying no can also be an important form of design.
A project with a clear purpose can evaluate additions against that purpose. Features that strengthen the core function may belong. Features that fundamentally change the system's responsibilities deserve greater scrutiny.
This is not an argument for refusing to evolve.
It is an argument for intentional evolution.
The objective is not to keep a system artificially small. It is to prevent size and complexity from becoming goals in themselves.
Build for the Long Middle
Technology discussions often focus on beginnings and endings.
We talk about launching projects, scaling them, replacing them or shutting them down.
Most systems spend their lives somewhere in between.
They are being used.
Someone is fixing a minor problem. Someone is updating documentation. Someone is trying to understand code written two years earlier. Someone is evaluating whether a dependency can safely be upgraded. Someone new is learning how everything fits together.
That long middle is where architecture becomes operational reality.
A system that is slightly less impressive at launch but significantly easier to maintain for five years may ultimately be the better-designed system.
A project that solves one problem reliably may create more lasting value than one that continually expands until its original purpose becomes difficult to recognize.
Small systems will not always be the right systems.
Some problems genuinely require substantial scale, coordination and complexity.
But complexity should be something a system earns through necessity, not something it accumulates by default.
The strongest systems are not necessarily the ones that do the most.
Sometimes they are the ones whose purpose remains clear, whose dependencies remain intentional, and whose maintainers can still understand what they have built.
A Final Thought
Good technology does not need to prove its value through complexity. Sometimes the better system is simply the one that remains understandable, maintainable, and useful over time.
Building less, with clearer intent, can be a form of building better.
Until next time,
Brandon
