What Do Software Developers Do?
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.
First Tenet of Software Development
Software developers write code to turn manual processes into automated processes.
That’s really all we do.
Does That Seem Too Simple?
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.
Pac-Man As A Manual 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.
What Do You Think?
Do you agree that Software Development is just Office Automation?
Top comments (3)
I would put it like this:
"We write code to turn manual processes into automated processes." 🤓
What else do we do? What's your list?
Remember, I'm talking about what we do when we write code for 99% of businesses.
Totally disagree.
Back in the day, I wrote a display driver for a specific graphics mode that the language I was using did not support... how was that automating a manual process? How are the creators of demoscene demos automating a manual process? How are developers working on a new video compression codec automating a manual process? The list goes on and on.
Sure, you could tenuously link any software development to a manual process - even to a fictional one created to support your point, like you have above - but it would be a stretch in a lot of cases. The fact that you even have to make up a case to support your assertion points to its weakness.
A lot of developers simply write code... for fun. Your program does not have to be useful at all, let alone automate a manual process. It's not even necessary to have a goal in mind when you sit down and start making something. I will very often sit down with some random ideas in my head, and just start noodling around with code - no plan, no goal, just play. Something interesting might come out of it, or it might not. Software development for one's own amusement IS a thing.
The original statement sounds exceptionally dated, like it could be lifted from a software development textbook from the 70s (and yes, I'm old enough to have seen some). The capabilities and uses of computers/devices have moved on and diversified greatly over the last fifty years or more - way beyond simple 'manual process automation'.
"Software developers write code that tells computers how to do stuff"
Some comments have been hidden by the post's author - find out more