- Understand the requirements. What exactly do you have (or want) to do? Define the target. If a given specification is unclear or incomplete, ask. Evolve it. Try to reduce complexity early.
- Understand your tools. That may be the choice of programming language, extensions, but also the algorithms available. Personally, I'd like to do almost everything in Tcl, but I also know situations where C or awk just is the better tool. Also consider that you can just build a tool if you need, if it helps to reduce complexity (e.g. a package or just a proc that does one thing well). Evolve your toolbox.
- Understand how to know you reached the requirements. One-word answer: test. Test early, test often. Design tests intelligently so you can be confident you've covered most possibilities. Add tests when you find out you haven't. Evolve your test suite, e.g. e.g.
- Understand that targets may move. Changing requirements, hardware, software conditions may require someone to "maintain" your code. Be good to that someone (it might be yourself, years from now) - be clear, comment. Avoid repetitions. Help your code evolve.
DRH I find that when practicing intelligent design that it is invaluable to leave behind a fossil record using a good SCM tool. - RLH Oy!!!
And then there's the related matter of creationism [1].
Hehe, I can't wait until the Genetic Algorithms or Genetic Programming folks find this page. TP
Arts and crafts of Tcl-Tk programming