When I tell people that I do software development, I usually get responses like “Wow, you must be smart!” or other expressions of admiration. To me, the general impression of most people is that creating software is hard. Having been involved in the creation of software for over 30 years, I would agree that creating software can be difficult, and ….well, I guess it is difficult. So, let's talk about it....
What is software? Here's one possible answer – it's a set of instructions telling a computer what to do. There are different levels of software (operating system/server/desktop app/mobile app/web app), but there are some common questions you can ask about any software:
1. What does the software do?
2. What does the user interface look like and how does it work?
3. What does the software interact with?
The answers to those questions define the functionality of the software. Coming up with those answers can be hard. It can be hard to be specific about what a particular software app should do, to describe the user interface, and the interactions between the software and other services. It can also be hard to learn the tools and languages you need to translate those answers into the instructions needed to create the app. However, I think there are some parallels between developing software and several other activities that might show that developing software is something that more people can do. I'll explore those in my next few essays.