The KISS principle in software
A group of us from my building regularly go to lunch together. For a while, the practice was for someone to wander ’round the building, knocking on people’s doors and saying “Lunch?” With up to about 10 people to check on, this was tedious. Further, I often seemed to be the person that broke first and started the process.
So I called, loud and tediously long, for a software solution to our problem. (I wasn’t volunteering to implement it, but had plenty of ideas on what the solution should look like.) Someone did volunteer to do it, and within just a few days (he did have a real job to do at the same time), we had a system that has proved to do all we need, and which is also appealingly simple.
People who want to be part of the lunch-group run a little client on their computers. It appears as a little sandwich logo. Then, at any point after 12:00, anyone can push the logo and cause their sandwich to start flipping (from right way up to upside down and back again). Simultaneously, the client sends a message to the server, which does nothing more than forward the message to all of the other clients (which register with the server when they start up). When a client receives a message, it also starts flashing.
And that’s it—there’s absolutely no state in the server.
There are all sorts of potential problems with this solution, but the point is that it achieves exactly what it set out to do. Having a little icon flashing in the corner of your screen is supremely distracting, so there’s no danger of missing the message. People understand exactly what the message means, and can choose to assemble outside the building for the trip to lunch, or not, as the fancy takes them.