Your Business Is Like Software

Let me admit up front and say that I am not a developer or a programmer. I am a former newspaper journalist turned web entrepreneur. So I freely admit I’m a hack. (And my team will back me up on that!)

However, for the past four-plus years I’ve been around and worked with software developers and programmers and I continue to learn more and more about the process and principles behind good software management. Our team has also shipped well over 180 software projects (merely called themes and plugins) to date and have thousands of customers around the globe interacting with them.

I’ve seen big software launches (Builder and BackupBuddy), with our developers hustling to fix bugs and support team scrambling to answer questions and respond to issues like it was a city-wide fire … as well as regular time updates to software with new features and innovations to improve what we’re doing. Along the way I feel I’ve gotten a flow or feel for how it all works. What to expect (the unexpected, unimaginable). How long things should take (always longer than expected or desired). I’ve seen the formula work and the formula fail.

But even though I am not a programmer, throughout all this I can’t help but see the parallels between business startups and growth (or lack thereof) and my experience leading teams that build software and seeing how customers react to it. The actual experience and the approach distilled down by programmers (far more brilliant than I) is really an excellent way to look at it all. (And how I’m increasingly looking at my own life as well.)

The quote by E-Myth author Michael Gerber that has become the entrepreneurs mantra is: Work ON the business not IN it. And that’s where I think software development can add some great value and perspective — evaluating the processes and systems you have in place to output the desired results.

But note: I’m not talking about the actual software that might actually be used and run in our business. It’s a metaphor for approaching your business as a whole and how you build something of value that people will pay for and tweak it as you grow.

Here’s my thoughts on approaching your business like we approach software development:

For the past couple of months I’ve been thinking (and now sharing with our team) how our overall business is just like the software products we build and ship.

iThemes as a company is currently at version 4.3 or something like that now as a company. (We started in January 2008 so I simply said 4.3 because it’s the third month of the fourth year.)

Our Beta was the first 6-9 months of our business. This is where we actually saw whether or not people would pay for our products. We started to get in the black around month 6, when we hired our first actual employee. This is a nerve racking yet fun time of seeing whether our idea had wings.

In actual software development, we’ve had tons of “brilliant” or even “good” ideas. But we don’t know whether a product will be a hit or flop until we test the idea. This is where “little bets” come into play. Making assumptions and testing them in a way that doesn’t sink everything else we’re doing.

Now we’ve had major changes, or releases, in who we are and what we do since the launch of our company. With each new version release of our company’s direction, we’ve had people who decide it was for them or had to make hard decisions when expectations and direction didn’t match the output we were getting. We’ve had to pivot and pull back and try again because we were moving in the wrong direction.

No matter what you do some people will leave. They won’t like it. They have their own ideas and plans and values about the way your business (your software) should be run. That goes for both customers and employees. This is also what I call life.

I’ve had to learn the hard way that not everyone will love or even like everything you do. Sometimes they won’t even love or like 50% of what you do. But as with good software development I’ve seen, you have to do what’s ultimately best for the most people. This is called leading.

In business as in software, you figure out if your plan and thoughts and leadership was right, if people come back or connect in and follow you where you’re leading.

But also some “features” or divisions or products or ideas we’ve had have plainly flopped. For fear of depression, I don’t want to count the failed projects we’ve started in the business (mostly at my guidance). Sometimes your best laid plans just fail miserably. Crickets chirp.

I remember numerous times as we released software products with features we just KNEW people who love … only to see customers actually rave about something we put in as an afterthought.

But you only know until you put your version out there. That’s why we say “launch and learn.” Ship good products and make them better and better over time and with customer input.

In the case of business, your partners, customers and most importantly team give you feedback on what’s working. As the entrepreneur and leader, it’s my job to take all this input into account, weigh it according to priority, importance and how it fits with the vision and direction I’m leading … then make a decision on the next version of the business.

Like software, it’s done in incremental improvements. It’s like the software principle of “Iterate fast and release often.”

It’s mostly little tweaks to the operating system. Sometimes big ones, but from week to week, it’s small incremental changes to all we do.

A business like software is a living organism, always changing, always adapting, always seeking to be and do better. If it’s not iterating and adapting, it’s likely to end up doomed, shelved and dusty software. It’s outdated software that no one will use. Just like the old hard drives or floppy disks you might find at a garage sale. Irrelevant.

So the goals is … getting better and better with each new version of your business. Learning from your mistakes and missteps (and trust me, I’ve had my fair share). Understanding your customer and team and what works now, while looking on the horizon and anticipating the roadmap and schedule for the next iteration of your business.

Of course along the way, we have have found our share of bugs.

All honest and good software programmers will tell you that EVERY piece of software on the planet has bugs in it. (Yes, everything has bugs in it. No actual software is immune. Even the one your son did.)

Like software and every business in existence, we have issues. We have bugs in our system. We aren’t immune or perfect, far from it. But we seek to prioritize the bugs reported (by our team and customers) and deal with them accordingly.

Some bugs don’t get resolved immediately, others can and do. Some, like just certain problems with our products, don’t have easy solutions and perplex us. The leadership team’s responsibility (like the lead developer) is to identify problems (with the help of our people) and solve them as best we can for the next iteration of our team and business.

All of it is educated guesses. You take everything into account, gather the essential data you need to make decisions, maybe beta test it with certain groups (like team leads) and push forward with a new release when all looks good.

It involves launching those fixes and testing them, and starting the process over again. It never ends. You must find what works and what doesn’t. What needs your immediate attention and focus while also peering out onto what looms out in the distance. Prioritizing all of it according to importance and need, with the direction and vision you’re point it to. But the focus is always pushing the software product — the company — forward to enduring success toward our mission and goals.

I’ve heard it said that good software takes 10 years.

For startups, mileage varies.

We are currently on year 4. And I’ve heard the life cycle of a business is now around 20 years. Companies must continually reassess, refocus, reinvent. We’re working hard to build new features (leadership structure as well as improved products and services), tweak and stabilize existing code and make bug fixes as they arise (culture, processes and people all need refinement), while looking to the next innovations in what we’re doing and who we’re serving.

If the Internet and the software business has told me anything, as much as we must continually improve and consistently innovate with our products and services … the same is true for our business.

The work is never done.

But put in perspective, looking at it like good software development, helps me understand what we’re building to — incremental version releases to improve the core product, our business, for our customers, while working toward an unrealistic, perfect and idealistic final product that we’ll never actually exist.

So here’s to version 4.4 of our product that we’re working to roll out next month!