Treat your software like a human

December 16, 2019 | Matthew Carswell

Hello my name is Code, nice to meet you.

When both humans and software are born, they don’t know much.  Slowly they both gain intelligence and offer more value to the world.

The similarities are plausible right?  We could even go through the definition of the word life and make a comparison that software actually meets the definition.  But this article isn’t here to creep everyone out. It’s here to help us make software that lives up to its promise and ability. 

Humans are alive, software isn’t. Let’s shy away from the obligatory, yet.  (Oops)  However, software is the most complex and dynamic thing on this planet that isn’t alive.  That’s hard to argue.

For those of us that are responsible for getting as much value as possible out of software. Maybe it’s time to take some guidance from how we treat humans and apply them to how we treat our software?   If nothing else it’s fun to think about. Here are two ways that we think we could treat our software more like we treat a human.

1. Don’t cheap out on the maintenance

“Yeah it’s really cool, since I’m healthy and all, my doctor says he is going to pass me over to a Maintenance Doctor… the new doctor is not as qualified and doesn’t know anything about me”.  Said no one ever!

Maintenance in the software world is an antiquated term and it can be argued that it is not a valid “phase” in the life of any software these days.  These days we think more in terms of enabling, evolving or continuously improving.

But have we changed how we approach the team that executes these activities?  Sometimes not! Although it’s great that your software is healthy and working well, you need to make sure you keep the key people that created it in the mix as long as possible.  They don’t need to spend much time on it, just like your doctor. However they should be there if you need them!

It’s doable if we break the ol’ maintenance vs. new development paradigm.  After all, just like humans software is going to be healthy until precisely the day that it isn’t.  And unfortunately that day is usually a bit too late.

2. Worry about what is valuable now

The future can be so tempting to think about.  It’s so promising and interesting and fun. And we must plan for the future of course.  If we don’t plan for the future we might wake up one day to a very unpleasant surprise. However there is a difference between planning for the future, and worrying about the future.  Planning is good, worrying is bad.

Why is worrying about the future bad, for both software and humans? Because it’s impossible to know what will happen in the future!  So worrying and ruminating about it is counterproductive. 

Make plans so that your software can handle whatever comes it’s way in the future.  But worrying about the future? That will only hurt our efforts now. Right now, our responsibility to our software is to make sure it is valuable today and maybe tomorrow.  Debating “what ifs” will lead us into an unproductive downward spiral.

Hopefully we wouldn’t wake up one day and spend the entire day in bed worrying about what kind of cell phone our teengaer will need in 10 years?  I hope not! But we do want our kid to be fed well and do their homework today.

There you have it

Keep the doctor around and don’t ruminate on something that probably won’t happen!  Two things we try to do with humans that we should probably do with our software also!

Comment