To get started with designing Software Solutions, I believe we need a simple, single line definition of what software developers do.
This definition will serve as a foundation we will continually return to in this book to determine where we are at.
Software developers write code to turn manual processes into automated processes.
That’s really all we do.
You may think that is too simple to cover all software.
However, if you consider any software, even a game, from an abstract viewpoint, you’ll find that it is really just a manual process that has been turned into an automated process.
Take a look at the Pac-Man video game. Originally, Pac-Man could’ve been a board game where players roll dice to move Pac-Man and the ghosts. The player could decide the direction for Pac-Man and you could spin a spinner to get the direction for each ghost movement. As you move the Pac-Man along the path on the board you would simply tally up how many dots he eats with each roll of the die.
Next, you’d roll the dice for each ghost and spin the spinner to indicate movement direction. Each turn the ghosts could possibly land where the Pac-Man token is and destroy him.
Of course, the object would be to get your Pac-Man to eat all of the dots before he is eaten by the ghosts. (See https://en.wikipedia.org/wiki/Pac-Man^ for more on the Pac-Man video game.)
Now that we know the manual details of how Pac-Man should work, it would be far easier to write the video game.
The video game simply automates this process. The code is “rolling the dice” and “spinning the spinner” to move the ghosts behind the scenes. It’s also updating the location of the ghosts each time making it seem as if they are moving. You see? It all really is just automation.
However, you’ve learned another important axiom related to software development. We'll take a look at that second important axiom tomorrow.
Do you agree that Software Development is just Office Automation?