DEV Community

Cover image for I Didn't Build KiwiEngine Just To Build Software
Drew Marshall
Drew Marshall

Posted on

I Didn't Build KiwiEngine Just To Build Software

I've spent years building software so I can eventually spend less time rebuilding software.

That sounds contradictory.

It isn't.

KiwiEngine was never supposed to become the thing I spend the rest of my life rebuilding.

It's supposed to become the foundation that lets me build everything else.

Music.

Artist platforms.

Stores.

Print-on-demand products.

Guitar pedals.

Amplifiers.

Electronics.

Games.

Whatever comes next.

The goal isn't to make KiwiEngine the center of everything I do.

The goal is to make it dependable enough that it doesn't have to be.

There's More I Want To Build Than Software

I love software development.

But I'm also a musician.

I write and produce music. I mix. I build things. I'm interested in electronics, guitars, amplifiers, pedals, recording equipment, games, design, publishing, and probably a dozen other things I'll discover along the way.

For a while, I treated those interests almost like separate worlds.

There was software development.

Then there was music.

Then there were physical products.

Then there was business.

But they're increasingly starting to look like parts of the same workshop.

Because almost everything I want to build eventually needs some kind of digital infrastructure.

Imagine Starting A Store

Let's say I want to start selling merchandise through Print on Demand.

The interesting part isn't building another login system.

It isn't figuring out routing again.

It isn't rebuilding configuration management.

And it definitely isn't creating the same application foundation for the twentieth time.

The interesting problems are things like:

How should products be represented?

How do I interact with a Print on Demand provider?

What happens when someone places an order?

How do I make switching providers possible?

What kind of storefront experience fits the brand?

How can products from multiple providers live together?

Those are the problems specific to the thing I'm actually building.

Everything underneath them is infrastructure.

That's where KiwiEngine starts becoming useful in a completely different way.

APIs Become Building Materials

This is one of the things I'm excited to explore.

There are APIs everywhere.

Print on Demand providers.

Payment processors.

Shipping providers.

Music services.

Distribution platforms.

Analytics services.

Cloud infrastructure.

Instead of treating each integration as a completely separate application, I can build adapters around those services and expose them through systems I control.

KiwiEngine provides the foundation.

The external API provides a capability.

My application decides what to do with it.

That's a very different relationship with software development.

I'm no longer starting with:

"What application can I build?"

I'm starting with:

"What am I trying to accomplish?"

Then software becomes one of the tools I use to accomplish it.

The Same Thing Applies To Music

Blackwater Sound gives me an enormous testing ground for this.

An artist might need an EPK.

A musician might need a storefront.

A studio might need a client portal.

A producer might need a way to transfer sessions.

A band might need a merch system.

A release might need its own interactive website.

A musician might need a better music player.

A studio might need internal tools that don't exist yet.

These don't all need to become SaaS companies.

Sometimes they can simply be useful tools.

And because I already have a technical foundation, experimenting with those ideas becomes much less expensive.

Then There Are Physical Products

This is where things get especially interesting to me.

I've been spending more time thinking about electronics.

Pedals.

Amplifiers.

Cabinets.

Guitars.

Audio hardware.

At first glance, that seems completely separate from KiwiEngine.

A guitar pedal certainly isn't running a web framework.

But think about everything surrounding that pedal.

Documentation.

Component inventories.

Bills of materials.

Product pages.

Storefronts.

Warranty registration.

Serial numbers.

Build records.

Testing information.

Customer support.

Dealer tools.

Internal manufacturing utilities.

If I eventually sell physical products, software becomes infrastructure around those products.

KiwiEngine doesn't have to power the pedal.

It can help power the company that builds the pedal.

That's a much more interesting role for technology.

This Changes How I Think About Frameworks

Framework development can easily become its own endless hobby.

There's always another abstraction.

Another feature.

Another optimization.

Another rewrite.

Eventually you can spend so much time building tools for building things that you stop building the things.

I don't want that.

KiwiEngine needs to reach a point where parts of it become boring.

Stable.

Documented.

Predictable.

Dependable.

That's success.

Because then I can stop thinking about the engine every time I want to drive somewhere.

Technology Should Create Leverage

That's probably the biggest change in how I'm thinking about CitrusWorx.

Technology doesn't always need to be the final product.

Sometimes technology exists to create leverage.

A storefront helps sell something.

An internal application helps manufacture something.

A music platform helps release something.

A website helps communicate something.

Infrastructure helps operate something.

The software matters.

But it doesn't always have to be the destination.

The Road Is Starting To Look Different

The early Road To KiwiEngine posts were naturally about building the engine.

What should this library do?

Where should this abstraction live?

How should configuration work?

What should the API look like?

Those questions still matter.

But something interesting is starting to happen.

The engine is becoming capable enough that I can increasingly ask a different question:

What can I build with it?

That's the question I've wanted to reach all along.

KiwiEngine isn't supposed to become everything I build.

It's supposed to make everything else easier to build.

Top comments (0)