We’re in 2020. Living in the golden age of technology. Every company around us is either a tech company or a company that would go out of business without tech.
There’s a global pandemic going on, which has shrunk everybody’s timelines to adopt new technology by a decade. Large companies that were going to move to the cloud over the next 5 or 10 years had to do it overnight. They’re doing on the shoulders other companies that were born in the modern age, and are ready with providing them the tools to move their operations to the cloud.
There are companies that building tools for these large corporates, the SaaS revolution as people are calling it with millions of dollars raised in the hopes of making billions. These ambitious companies are leading the charge of moving to the cloud.
There’s another movement on the sidelines, far away from the tech giants, people whose definitions of success doesn’t include becoming billionaires and don’t want any investors to answer to. These ‘indie’ makers are building another set of tools for the modern age.
Your car manufacturer, the company that built your washing machine, companies that make light bulbs, the company behind the tool I’m writing this on, and the tool you’re reading this on. Every company that has anything to do with tech is shipping software.
Let’s talk about that today, shipping software.
It all starts with a problem. A problem somebody has and cares enough to make sure nobody ever faces it again. Someone who is willing to dedicate a major portion of their time, making sure it is solved once and for all. And maybe then, everything would finally be right with the world.
So, you fire up your text editor and terminal and begin.
Software begins its life as nothing. It’s an empty directory on your computer, you write text files into it that make pixels light up on screens, that store, and transform information. And slowly, with each line written, your creation starts to take shape.
There’s a lot of testing, a lot of trial and error, a lot of angry moments where you just give up on technology and have almost booked your tickets to the Himalayas to go look for actual peace.
Then, in your sleep, in the shower, reading a book, or actively googling with everything you’ve got, something strikes.
What if I do this?
Your eyes light up. The travel plan is canceled, for you can now see the future and it is not on the mountains, it’s on your hard drive.
That is the joy of building software.
But that’s not where the story ends. I am a romantic and would like the story to end here, but it does not.
Because you still haven’t solved the problem completely. Everything is not right with the world. Something’s amiss.
Turns out, you’ve learned something new about the problem and your solution doesn’t fit. Or maybe it does, but along the way you’ve created another problem. Or maybe, things actually work, but you’re not satisfied because you know it’s not the best you can do or the best that can be done.
Building software is a process that never ends.
Nobody ever throws their hands up and says this is now complete. It never is.