Simplicity and elegance are different Do the simplest thing that could possibly work (DTSTTCPW) Software is fraught with complexity You aren't gonna need it (YAGNI) Books are good enough in their own way, but they are a mighty bloodless substitute for life. -- Robert Louis Stevenson
Notes:We strive for elegance in design. It doesn't come easy. Newton's and
Maxwell's laws came about only after centuries of research into
physics. It's all to easy to think than do. There's no substitute
for empericism. XP adopts the "Just do it" philosophy.
When you sit down to solve a problem, try something. Run the code.
If it modifies external entities (files, physical media) take the
necessary security precautions (backups, secure the area) and
try it out. Let experience be your teacher.
Software's mutability introduces its own complexity. We can solve
software problems by introducing a layer of an indirection. DNS
is a good example of a good indirection layer. DNS is also a
good example of the inherent complexity of adding another layer.
The problems are technical (how to manage a global database), political
(who owns TLDs), and legal (who owns united.com).
Don't plan ahead. This has been the hardest lesson for me to learn.
Software's flexibility kills us, because it is all to easy to spend
time now on an elegant solution to a problem which we really don't
know anything about. We aren't omniscient. Program in the here and
now.
|