What is a computer? You’d think that would be a fairly simple question. After all, I’m using one to type this up,
MoreI have come up with an analogy that should make the basic principles of software design understandable to everybody. The great thing
MoreBugs most commonly come from somebody’s failure to reduce complexity. Less commonly, they come from the programmer’s misunderstanding of something that was
MoreOkay, most programmers know the story—way back when, somebody found an actual insect inside a computer that was causing a problem. (Actually,
MoreOne of the most important things to know about any kind of engineering is: There are some things about the future that
MoreOften, if something is getting very complex, that means that there is an error somewhere far below the level that things are
MoreOkay, so remember our third law? (You can’t break things if you don’t change them.) Well, that has a very important related
MoreOkay, so if we never change our software, we can entirely avoid defects. But change is inevitable! Particularly if we’re going to
MoreSo now we know that there is more future time than present time and that software will change as time goes on.
MoreNow that we know that the future is important, our second law answers the question, “What’s going to happen in the future?”
More