Locked

This case study is locked. Ask me for the code.

Menu

Enterprise software is never what it looks like

The diagram is wrong, the requirement is somebody's workaround from four years ago, and the standard pattern is often the wrong answer. Why enterprise work needs principles rather than patterns, and what it does to how you see every other kind of product.

11 min

Enterprise software has a reputation as the place design goes to die. Grey tables, forty modules, a login page from 2009. I have spent most of my career in it on purpose, and my experience is close to the opposite, with one honest caveat: almost nothing about these projects is what it looks like from outside, including the parts that look simple.

Nothing is where the diagram says it is

Every enterprise project starts with someone handing you a picture of how the business works. An org chart, a process diagram, a list of requirements. It is never wrong exactly. It is just describing an intention rather than a reality, and the gap between those two things is where the entire job lives.

The approval chain in the diagram has four steps. The real one has seven, because two people always get consulted informally and one of them can veto anything. The requirement that looks arbitrary turns out to be a workaround somebody invented four years ago for a system that has since been decommissioned, and nobody has revisited it because nobody knew it was a workaround. The same word means three different things to three teams, and all three are certain theirs is the standard meaning.

And the real system of record is usually a spreadsheet on somebody's laptop. Not because the organization is careless, but because a person needed to get their job done and the official system did not let them. Those private spreadsheets are the most honest requirements document in the building, and the first thing I go looking for.

Custom is not indulgence, it is sometimes the only correct answer

There is a strong instinct in our profession, and mostly a healthy one, that you should use the established pattern. Do not reinvent the select. Do not build a bespoke table. Reach for the thing the framework gives you and spend your creativity somewhere it matters.

Enterprise breaks that rule more often than any other context I have worked in, and it took me a while to stop feeling guilty about it. Most interface patterns encode assumptions from consumer software: that a row is independent, that a user has one role, that a list is something you browse rather than reconcile, that navigation covers a dozen destinations rather than forty. When your rows inherit state from a parent, when the same person is an approver in one market and a requester in another, when the list is a thing people audit line by line against another system, the standard pattern is not conservative. It is just wrong, and using it anyway costs you months in workarounds.

So a real part of this work is knowing when to bypass a pattern entirely, and being able to defend that decision to people who will reasonably ask why you are not doing the normal thing. The answer cannot be taste. It has to be a property of the domain that the pattern does not accommodate, stated plainly enough that an engineer can agree or disagree with it.

Patterns are compressed answers to problems you might not have

This is why I think enterprise experience matters more here than it does almost anywhere else, and it is not about having seen more screens.

A pattern is a compressed answer. Somebody solved a problem, the solution generalized, and now it arrives in your component library with the reasoning stripped out. That compression is enormously useful right up until your problem is not the problem the pattern was compressing. A designer whose training is patterns will reach for the pattern, because that is the available move, and then spend the next quarter making the domain fit it.

You cannot pattern-match your way through a domain nobody has modeled yet.

What you need instead are principles, which are slower and less satisfying. What is the state model here, and who is allowed to move a thing between states. Who owns this record, and who merely reads it. What has to leave a trace, and for whom. Which of these fields is a source of truth and which is a projection of one somewhere else. Answer those and the interface becomes a series of much smaller decisions. Skip them and you are decorating a guess.

The measurement trap

Here is the failure mode I see most in large organizations, and it is a peculiar one because it looks like rigor. The instinct is that everything should be measured. No decision without data. Which sounds unarguable and quietly produces paralysis.

The reasons are structural. Ownership of the data is vague, so getting a number means finding out who owns the table, which turns into a scheduling problem and then a political one. Instrumentation is partial, because it was added by whoever needed a number last, for their question rather than yours. And at company scale the insight has to survive a long trip upward through people who each simplify it slightly, so what arrives at the decision is a rounded-off version of something that was already approximate.

Meanwhile the thing actually driving the change is often much less abstract: one enterprise client with leverage, or one stakeholder who has decided this matters. That is not a corruption of the process, it is just how large organizations allocate attention. Pretending otherwise while waiting for a dataset that will not arrive is how six months disappear.

So the job is balance rather than purity, and I mean that practically. Decide in advance what evidence a given decision actually needs, because they do not all need the same kind. Some need an instrumented pilot. Some need five conversations with the people who do the work. Some need a prototype in front of one skeptical director. Plenty of decisions are judgment calls and should be labeled as such rather than dressed up in a chart. And when a single client is driving something, treat them as a real signal about a real need without generalizing one voice into a market.

Craft, evidence, and commercial reality all get a vote. A designer who only respects craft produces something beautiful nobody adopted. One who only respects data stalls. One who only respects the business ships whatever was asked for last. The interesting part of the work is holding all three at once, and it is genuinely harder than any of them individually.

On the fact that I drive a Mercedes

I should disclose a bias before making this argument, which is that I am a serious Mercedes person, so the metaphor is not neutral and you should discount it accordingly.

Most cars get you where you are going. That is genuinely true, and someone will always point out, correctly, that a fifteen-year-old hatchback does the job. But the difference is not in the showroom, it is four hours into a drive: how tired you are, how much noise you have absorbed, whether the thing you did a hundred times took a hundred small decisions or none.

Enterprise software is the long drive. People are inside these screens for eight hours a day, for years, doing the same operation thousands of times. That is precisely the condition under which small qualities compound into something enormous: whether the numbers align so your eye can scan a column, whether the filter you set survives a page reload, whether the empty state tells you why it is empty or just sits there. None of those show up in a feature comparison. All of them decide whether a person dreads opening the thing.

Which is the argument for craft in this sector, and it is an economic argument rather than an aesthetic one. Nobody chose this software. They cannot leave. The entire cost of it being tiring is paid in attention, errors, and the quiet workarounds that turn back into spreadsheets. Good design in enterprise is not a finish applied at the end. It is most of whether the investment returns anything.

You will ship things you disagree with

The other half of the honest picture. Some decisions will not make sense. There will be a compliance requirement that costs a week and protects against something that has never happened. There will be a legacy integration you are not allowed to touch, a field you must keep because one report depends on it, a market that gets an exception because of a regulation in one country. You will occasionally ship something you argued against.

Flexibility here is not weakness, it is a working requirement. The people who burn out in enterprise are usually the ones who need every decision to be defensible before they can proceed. The ones who last treat the constraints as material, the way you would treat a load-bearing wall: annoying, immovable, and now part of the design.

What you get in exchange is that the problems are genuinely interesting and genuinely rare. Nobody has solved the thing in front of you, because it exists in one organization with one history. The products that come out of this sector are stranger and more specific than anything in consumer, and a few of them quietly run things that matter.

What it does to how you see everything else

I did not start here. I came up through gaming, social, and consumer products, which means I can compare the two directions rather than just defending the one I ended up in. And the thing I would tell anyone weighing this path is that enterprise does not narrow you. It does something closer to the reverse, though it is hard to describe without sounding mystical, so let me try to be concrete instead.

There is no study I can point at for this. What I can point at is the specific habits the work forces on you, none of which switch off when you go and design something simpler.

  • You stop seeing screens and start seeing state. What can this thing be, what moves it, and who is allowed to move it.
  • You assume multiple roles by default, because enterprise never has one user. An analyst, a manager, and an administrator share one record and see three different truths about it.
  • You design for the person on hour six, not the person in second three, which changes almost every decision about density, feedback, and how loud anything is allowed to be.
  • You learn to synthesize contradictory expert input without averaging it, because subject-matter experts disagree and the average of two correct answers is usually wrong.
  • You treat constraint as material rather than obstacle, having had no other option.

Carry that into a consumer product or an early-stage SaaS and it reads as unusual rigor, because most of it is rare there. Not because consumer designers are less capable, but because the work does not force those habits. Nothing about a landing page makes you think about who owns a record.

The reverse transfer is real too, and I would not want to lose it. Consumer work taught me that if a thing is unpleasant people simply stop, which enterprise lets you forget because your users cannot stop. Holding both is the useful position, and the number of people who care about interface craft at that level and can also sit patiently through a data-governance meeting is smaller than it ought to be.

None of this is a smaller room

Enterprise is not a specialization you get stuck in, whatever the folklore says. It is closer to a training regime with a salary. You spend a few years being forced to reason from principles because no pattern fits, being forced to defend decisions to people who are not persuaded by taste, and being forced to care about the tenth hour rather than the first impression.

Then everything else looks legible. The tables are smaller, the roles are fewer, the stakes are lower, and you still ask the same questions: what is the state model, who owns this, what does it look like on hour six. That is the whole shift in perspective, and it is not glamorous, and I would not trade it.

Working on something this touches?

If the problem in front of you looks like the one above, that is the conversation I find most useful.