Software starts as an idea.
Let’s assume it’s a good idea—an idea that could make the world a better place, or at least make someone some money. The challenge of the software developer is to take the idea and make it real, into something that actually delivers that benefit.
The original idea is perfect, beautiful. If the person who has the idea happens to be a talented software developer, then we might be in luck: the idea could be turned into working software without ever needing to be explained to anyone else. More often, though, the person with the original idea doesn’t have the necessary programming skill to make it real. Now the idea has to travel from that person’s mind into other people’s. It needs to be