http://www.artima.com/intv/dry3.html "Be Orthogonal Bill Venners: What does orthogonality mean and why is it good? Andy Hunt: The basic idea of orthogonality is that things that are not related conceptually should not be related in the system. [...] A change to one should not cause a change to the other. Unfortunately, we've seen systems throughout our careers where that's not the case. " ok it's in the field of software engineering but the principle is general and can also be applied to trading system. In fact for everything I have done in different fields I have never seen much difference and I always apply the same principles like the one described above. Nevertheless principles alone aren't enough they must be combined of course with the specific knowledge of a field that's why a pure methodologist can't succeed if he just contents with generalities but someone who has a good knowledge of a field can really empower himself with universal principles which are in fact just scientific principles disguised under other names. For example orthogonality obviously is derived from mathematics: it is well known in maths that a good representation of datas would use orthogonal axis (especially there is so called Multicomponent Analysis techniques in advanced statistics that uses this important characteristic of orthogonality). The beginning of the article is here http://www.artima.com/intv/dry.html Bill Venners: You say in your book, The Pragmatic Programmer (Addison-Wesley, 1999), that "programmers are constantly in maintenance mode." Why? Dave Thomas: All programming is maintenance programming, because you are rarely writing original code. If you look at the actual time you spend programming, you write a bit here and then you go back and make a change. Or you go back and fix a bug. Or you rip it out altogether and replace it with something else. But you are very quickly maintaining code even if it's a brand new project with a fresh source file. You spend most of your time in maintenance mode. So you may as well just bite the bullet and say, "I'm maintaining from day one." The disciplines that apply to maintenance should apply globally. The DRY Principle Bill Venners: What's the DRY principle? Dave Thomas: Don't Repeat Yourself (or DRY) is probably one of the most misunderstood parts of the book. Bill Venners: How is DRY misunderstood and what is the correct way to understand it? Dave Thomas: Most people take DRY to mean you shouldn't duplicate code. That's not its intention. The idea behind DRY is far grander than that. DRY says that every piece of system knowledge should have one authoritative, unambiguous representation. Every piece of knowledge in the development of something should have a single representation. A system's knowledge is far broader than just its code. It refers to database schemas, test plans, the build system, even documentation. Given all this knowledge, why should you find one way to represent each feature? The obvious answer is, if you have more than one way to express the same thing, at some point the two or three different representations will most likely fall out of step with each other. Even if they don't, you're guaranteeing yourself the headache of maintaining them in parallel whenever a change occurs. And change will occur. DRY is important if you want flexible and maintainable software. The problem is: how do you represent all these different pieces of knowledge only once? If it's just code, then you can obviously organize your code so you don't repeat things, with the help of methods and subroutines. But how do you handle things like database schemas? This is where you get into other techniques in the book, like using code generation tools, automatic build systems, and scripting languages. These let you have single, authoritative representations that then generate non-authoritative work products, like code or DDLs (data description languages).