Recently I spoke to my daughter's first grade class about what I do for a living. As a software architect, it is hard to explain what I do for a living. Even among "technical" people, this is difficult to explain.
How do you explain this to First Graders?
I scrambled thinking on my feet trying to come up with an example that I felt First Graders could relate to.
A software system is like the playground at recess. The playground is filled with various programs competing for the slides and swings and their turn in the sandbox.
So far so good!
When everyone plays fair, everyone gets a turn and can enjoy all of the playground equipment and have a good time. One of the many roles for a software architect is to ensure that everyone plays fair and that no one is being a bully.
A bully may damage the playground equipment or refuse to let others take their turn, or keep others from being able to enjoy their turn on the equipment. Someone has to protect everyone from the bullies.
We build in fault tolerance to ensure that a bully doesn't damage the equipment. We design distributed systems to ensure that the playground can scale to accommodate everyone. We also rely on preemptive operating systems and dead lock detections to ensure that individual processes are taking turns.
Turned out it was a pretty good way to talk about what I do.