| This is very true.
Explaining systems of reasonably small scale seems hopeless to non-developers sometimes. However I think this is true of a lot of fields... some people just can't grok (and don't need to grok) how an automatic transmission in their car works. I'm particularly inept when it comes to the subtleties of art and music. But a particularly relevant analogy that I use would be that you are working at a library. (That is: a library where you can check out books, not a software library.) Not only do you have to write a good portion of these books, but you also have to read a lot of the books in the library, and at the very least you have to read the table of contents and/or index of most of those books. In addition to this you have to be very good at keeping the library organized, and you have to coordinate with other staff members at the library. Smaller systems are simply a shelf or two of books, larger systems can span several buildings. I like this analogy because most everyone can relate to it, it gives a very real physical sense of size, and I think it pretty adequately describes what a programmer has to hold in their head on a daily basis. |