The are written based on a wide set of criteria, not just what you mention. The question "how to write…" does not make a lot of sense. This is the same as asking "how to write applications"? Or "how to write operating systems"? Or, if you will, "how to write operas"? By the way, even the authors of Opera Web browser from Opera Software ASA would hardly be able to answer even the last question. Especially in the CodeProject Quick Answers.