Customer Login Call Us:800-362-9446


Why I Write Software

Someone in our office asked me an odd question today. How do we choose what software to write? At first the obvious answers came up, but then it dawned on me that I was missing the real reason.

The standard answer to that question, given by any engineer would be, “It solves some problem.” Well of course! Do we ever write software or build something that doesn’t solve a problem? Well yeah, we do. I once had a contest with a friend to see who could write a general solution to solve a Rubik’s cube in the smallest number of lines of code. That’s much harder than it sounds. (Is solving a Rubik’s cube a problem? Kind of, but not really.) Solving a problem is what all engineering, whether software, hardware, or any other type of engineering, is all about. That is what makes us engineers breathe!

Software’s entire purpose in life is to solve problems. Somewhere inside software is a little hamster running around trying to fix something, make something easier, or just simply do something. That hamster’s whole ‘goal in life’ is to make the use of that software easier, more productive, and better. Throughout history, mankind has slowly moved the tedious jobs – the mundane – from himself onto others, then machines, then computers, and today our robots. We create those hamsters to solve problems.  That is why we write software.

But what about a business need? We write software because some business process or mechanism is screaming and yelling for a solution. Just look at how many thousands of little ‘one-off’ Access database or Excel spreadsheets show up throughout most businesses. People all over business, not just software developers, go around solving problems the best way they know how. So, yes. I write software because a business need is saying, “Fix me! Fix me!”

And what about when something is bugging me? It happens all the time. Some mindless task has finally reached my threshold of ’enough!’. I’ll spend the next few hours writing a quick piece of software so I never have to do that task again.
Then there’s “Because it’ll make money”. Unfortunately, I still need food and shelter. Maybe someday somebody will solve that problem but it’s going to take a while. I’d love to say we don’t write software for this reason, but it wouldn’t be true. Until software engineers all have patrons, like Leonardo DaVinci, we still have to make money. Perhaps, someday I’ll retire (not likely) and go write software for some not for profit entity. (Oh, wait. Quite a number of my friends, colleagues, and I do that already!) So yes, we write software because it will make money, but once again, that’s not the real reason.

Or, because I want to learn something? Oh yeah! Absolutely, 1000%! I am a learning magnet. Instead of watching TV, I tend to read a book, watch a class room video, a vblog, listen to some podcast, or even go read the proceedings of a conference. All those things and many others tend inevitably to lead to writing some piece of software or creating some hardware just to learn something new. Not because I need it, but just because I can. Every single GOOD developer I know writes software at home to learn stuff. This goes without exception. But that’s not even the real reason. We are, however, getting closer to the real answer.

Perhaps, it will be easier to write about why I don’t write software.There are times my team or I write software that I just hate. It’s usually something that already exists. It’s been done before. There’s eighteen thousand versions already out there. There’s nothing new about it, but we have to do it because someone is forcing us. Generally when this happens, I am bored. It’s a struggle to get up and go to work everyday. You can see and hear it in the faces of the team too. They are not enthused, but instead are plain bored. Talk about pulling your hair out…just rinse and repeat and your team will be bald in a few months.

There’s an old story about a Cherokee Elder that sold a necklace to a New Yorker for a dollar. The New Yorker came back a few months later and asked if the Elder would make and sell him one hundred of the necklaces. The New Yorker’s plan was to sell them in the city with a huge mark up. He thought he was going to be rich! Due to the large quantity of necklaces he was buying the New- Yorker thought the Elder would charge him much less then one dollar. ”I’ll sell you them for $100 a piece,” said the Elder. The New Yorker was surprised and confused by this. Calmly the Elder replied that making one necklace was fun and required great craftsmanship, but making one hundred just became tedious and required much more effort to keep the craftsmanship to acceptable levels. The exact same concepts apply in developing software and hardware. Making one can be a proverbial blast, but making ten of the same exact piece of software; Not so much fun! Good teams and good developers want to be stretched.

The real reason I write software or build hardware is because it’s almost euphoric. Creativity, stretching oneself, stretching the team, watching the look in a team member’s eye when they just came up with the solution to some problem. It’s just plain fun!

Sometimes it’s debugging. Finding that elusive little bug that’s kept you and your team at bay for a week is what I tell my wife about when I go home. Okay, she has no idea what I’m talking about, but she listens faithfully for a few minutes. Sometimes it’s in the design. Trying to find a way to build a huge cathedral out of these 100,000 bricks is a challenge. Especially, if the bricks are the wrong size. Other times, it’s watching the silly little robot stumble as it goes down a ramp. Why did we not think about this thing walking down a ramp? Stairs are easy. Ramps, maybe not so much!

Sometimes it’s working with a great team. A great team is perhaps the most incredible thing you can experience (after sex and religion – not necessarily in that order. And on a good day of writing software I might question one of those. I’ll let you guess which one.) When a good team is in tune, no egos, all focused on solving a difficult problem, the world just vanishes! You actually forget what time it is. You realize you are hungry when your wife says, “Are you going to eat, supper is cold?” Once you’ve lived in that environment, you will spend the rest of your days trying to get it back. It reminds me of an interview I once saw with Buzz Aldrin. “After you’ve walked on the moon, there’s no other place you want to be.”

Sometimes, it’s watching two computers spin up and start doing the work that use to take fifty computers. Sometimes, it’s watching ten people do the work that should have taken forever. You stand back looking at them celebrate and think, “We actually did it! That should have been impossible, but it’s done!”

Sometimes it’s when no one calls you to report a problem. The team is done with the project and is standing around saying, “Okay, when are the trouble reports going to start coming in. Did we flip the switch? Let’s check.” Other times, it’s telling your client that you’re done. And they say, “What? I thought we were weeks away.”  Once, in a while, it’s scratching your head with two other developers saying, “Okay, now how in the world did she do that?”.

Sometimes, it’s sitting in a room with twelve other developers and you suddenly realize that no one has said a word for the last two hours, yet somehow you’ve been communicating ideas all along. Other times, it’s knock down drag out fights at a white board. Red scribbles everywhere, flying erasers, and coffee shop napkins laying out all over the floor as the blueprints of the next industrial revolution.

So these are the reasons I write software…how I choose what software to write, and what software my teams will write. It’s time to go do something cool! Let’s go have some fun.

So, if you have a problem that everyone is telling you can’t be solved or fixed, give me a call! Those are truly the fun ones.

Email: or Call: 800.362.9466

Leave a Reply

Your email address will not be published.