DEV Community

Cover image for The API Design Lesson I Learned From Building Nectarine
Drew Marshall
Drew Marshall

Posted on

The API Design Lesson I Learned From Building Nectarine

One of the most surprising lessons I've learned while building software is that APIs are not really about code.

They're about communication.

At first, that sounds strange.

After all, APIs exist so software can talk to software.

But every API is also a conversation between developers.

And like any conversation, clarity matters.

The First Version Is Usually Technical

Most APIs begin from an implementation perspective.

The database exists.

The endpoints exist.

The underlying logic exists.

The API becomes a reflection of those details.

It exposes how the system works internally.

The problem is that users often don't care about internal implementation.

They care about solving problems.

Intent Is Easier To Understand

One idea I've become increasingly interested in is designing around intent.

Instead of asking:

"How should users interact with the implementation?"

I try to ask:

"What are users trying to accomplish?"

The difference seems small.

The results are often significant.

Intent tends to produce simpler APIs.

Clearer workflows.

Better naming.

Better abstractions.

The Database Is Not The Product

One mistake many systems make is exposing internal structures directly.

Tables become endpoints.

Schemas become workflows.

Implementation becomes the interface.

This is understandable.

It's also limiting.

The API should represent the problem domain.

Not necessarily the storage mechanism.

Good APIs Read Like Conversations

The best APIs I've encountered often feel obvious.

Not because they're simplistic.

Because they're expressive.

You can often read the code and understand the intention behind it.

The API communicates purpose.

Not just mechanics.

Real Usage Changes Everything

Just like documentation, abstractions, and frameworks, APIs reveal themselves through usage.

The first version is rarely the final version.

Real projects expose awkward naming.

Unexpected workflows.

Missing concepts.

Confusing assumptions.

The API evolves as understanding evolves.

The Hidden Goal

I used to think API design was primarily about flexibility.

Now I think it's more about reducing misunderstanding.

Every confusing name creates hesitation.

Every unclear workflow creates friction.

Every implementation detail exposed unnecessarily creates cognitive load.

The best APIs reduce those costs.

Final Thoughts

The longer I build software, the less I think about APIs as technical interfaces.

I think about them as communication tools.

A good API helps developers understand a system.

A great API helps developers forget the system exists and focus on solving the problem instead.

That's the lesson I'm continuing to learn while building software.

And it's one that seems to apply far beyond APIs themselves.

Top comments (0)