If you would've asked me that question at the beginning of my software journey, I'd probably have said something about wanting to create cool new things, or solve difficult problems; essentially, it was about being at the forefront of technology. Those ideas and wants still hold true, but now I see them as an artifact or product to the software development process. Developing technology for the sake of technology is tautological and navel-gazing. Don't get me wrong - there is a place for bleeding edge software that experiments and pushes the envelope within the sphere of software. There is value in learning and playing with development technologies, paradigms, and patterns in learning and growing as a developer. But trying to sell these artifacts of learning as a product, or propping them up as some sort of sellable 'service' doesn't make sense. So this begs the original question: why build software?
I build software to serve others; software is transformative and purposeful only in service to others. Everything outside of that is either a good learning experience or an exercise in futility.
There's a fundamental attribution problem some folks have in regards to software. People have been able to do Real WorkTM for years without having subscribed to a cutting edge bespoke Haskell SaaS CRM. Microsoft Excel usually works just fine. Unless that new 'service' solves real problems and serves their potential customers, it's an empty shell. People will continue to get real work done and the SaaS offering will fade into a sea of obscurity. Software doesn't get work done. Software enables people to get work done. Software built in service to others serves them. Software transforms industries and people by seeing a need and filling that need.
Bigweld knows what's up
Robots is a kid's movie, but like most kid's movies, there's wisdom there. Helping others, bridging gaps, moving the mass that is humanity collectively and individually forward; these all comprise the thesis for technology and serve as a solid ethical, moral, and philosophical basis on how to live life.
Software in service to others is software filled with purpose. It has this sort of internal inertia that helps carry it towards the finish line. It doesn't languish in obscurity or atrophy from lack of direction. When the needs of others serve as a project's compass, it's difficult to get lost in the wilderness.
Personally and anectodally speaking, writing software that doesn't have a purpose is hard -- and soul-grinding. It wears you down because you don't have a 'why'. People can give you wishy-washy counterfeit 'whys'; pleasing investors, making money, keeping the perpetual motion machine of gainful employment going. All of these can spur software development for a little bit, but they lack depth. These reasons sputter out quickly and the specter of developing vapid and pointless software looms in the collective unconsious of the team.
Software without purpose -- without serving others -- is a superficial facade.
Writing software that serves is self-edifying and fulfilling. There's this process of transformation that happens when you start writing purposeful software; it creates this positive feedback loop that strives towards helping others. I honestly believe that's one of the reasons that open source software is so popular and has so much engagement. People genuinely want to engage with others and lend them a hand. There's no way that people continue to participate in open source software (and all its possible abuses and shortcomings) without getting something personal out of it. I can't really speak for other industries, but asking others to work without guaranteed monetary compensation seems scoffable and not the norm. And yet, it's prolific in software development. Everybody uses open source in some way, everybody (hopefully) contributes to it, and everybody is better off because of it.
Maybe I'm being myopic and overly optimistic. And maybe, in a way, I'm just appealing to the better angels of our nature. Yet, I truly believe that at its core, software development and engineering are about helping others