pursuing the true purpose of software
The Purpose of Software
Although it may not always seem so, the purpose of software is to help people. Business applications help businesses operate. Games help to entertain. Spam bots help to advertise. Social media sites help to share experiences. Viruses, well, help boost someone’s ego or programming skills — let’s not focus on that one. Suffice to say, there is a greater variety of software that helps people than does not.
There is a common factor in all software that actually helps people that I think has been taken for granted for a long time: at its heart, software helps by reducing the magnitude of human effort required to do something. This effort may be mental or it may be physical. It may mean fewer people or machines are required, or that less time or space is needed. Maybe a task that required special knowledge or skill or strength can now be performed by anyone. Or maybe it brings our attention to what’s important so we can make better decisions more quickly. Effort can be reduced in many ways.
As a software developer, my efforts are spent writing software. Other developers have written software that reduces the effort required by me to write it. For example, my integrated development environment, various code libraries, and examples in books and online all help me code faster. Practices such as Agile and TDD have also been developed to reduce overall programming effort by reducing the amount of costly rework. Principles such as DRY and YAGNI and SOLID help guide programming and architectural decisions that, when followed, result in a more maintainable and scalable system. Within the developer community, there has always existed a continuous effort to be able to do more with less.
However, it seems to me that these programs and practices and principles are focused on reducing mental effort, not physical effort. They do indeed reduce physical effort as well — for the most part — but I don’t see this explicitly called out as a virtue. Perhaps it is taken as given, or perhaps I am in the minority of people who care, or perhaps I simply haven’t looked hard enough.
I have tendonosis; for me, every keystroke and every mouse twitch is pain. For me, any reduction in physical effort is an increase in health and happiness, not just productivity. Therefore, my motivation is to continuously explore means to minimize the physical movement required to develop software — to help the helpers.