Build your software like you’ll have to live in it

Software is often compared to constructing buildings and that got me thinking: How would we do things differently if we actually had to live in the code we built?  I know that question doesn’t really make sense, but if you think of some software you’ve seen, how would it compare to a house?  Would it be a shack, or would it be a beautiful mansion? Don’t get me wrong, sometimes a shack is the perfect domicile.  For example, if you think there’s a good chance you won’t be in one place too long, it would be a waste of money to build a mansion.

This is like when you’re building a prototype — code that you plan on throwing away.  If you’re going to throw it away, there’s no point in gussying up the place and making everything look beautiful.

On the other hand, if you plan on living in one place for a few years, you really should buy a home.  Not only that, it would be very wise to try and raise the property value because:

  1. You may as well enjoy your surroundings if you’re going to stick around.
  2. Your house is more than a shelter, it’s an investment.

But here’s a problem I see way too often: People want all the amenities of a mansion, but they treat their residence like a shack.  People will live in a 100 sq foot cell but they have grandiose plans of having a kidney shaped pool, an amazing kitchen and adding two new stories.  Unfortunately, the project was built without a solid foundation and on shaky ground.  If you don’t put effort into improving the building’s infrastructure first, these new features can actually be dangerous and will eventually make the whole place collapse: A shack can’t support a second story.

When it collapses, you’re going to have to rebuild.  At least, that’s what your development team will be asking you to do.  Usually rewrites are bad, but I’m not going to discuss that in detail in this article.  If you’re non-technical, it may be difficult for you to realize your shack is now a pile of rubble.  That’s how you can get yourself into situations where you ask your team to install an awesome new refrigerator but they’re trying to tell you that there isn’t even a roof anymore.

One way that software is different from homes is that you can easily restructure its foundation after it has been built.  This is a very powerful quality.  It means you can take something that originally started as a shack and gradually refactor it into a mansion.

Doing this takes a lot of skill and discipline and I don’t usually see it done the right way.  A common mistake is to put everything on hold while spending months trying to convert this shack into a mansion.  No new features until then.  This can work if you can afford it, but it’s expensive and risky.

A much better way is to practice the boy scout rule and over time your shack will start to look like a condo.  If you keep improving things your condo might become upgraded to a house.  From there it can turn into a mansion.  But you should be developing new features along the way.

Join the email list for bonus content.

One thought on “Build your software like you’ll have to live in it

Leave a Reply

Your email address will not be published. Required fields are marked *