Start with design patterns – Always start with a design pattern, then try to make your problem fit it. Ideally start with the pattern you have most recently read about as this is most likely to be the best one. Do programming Katas – Repeatedly solving the same simple problem is the best way to improve your coding skills. The faster you can do it, and the more you sense a feeling of ‘flow’ when solving this problem, the better a developer you are becoming. Ideally, video yourself performing the kata, so others can learn from your achievements. Mock everything – When testing, make sure you mock everything. The less you’re really testing the more likely your test will pass. Green lights in IDEs are the most important measure of the quality of your code. Follow practices strictly – Follow practices as laid out in books, or explained to you at conferences, and follow them to the letter. It’s a lot easier to follow rules than to think, and thinking poses certain risks (see point 12). Read only books written in the last 10 years – As we are all aware, nobody knew how to program until the dot com boom, and books written before this historic moment are of no value. Ideally make sure the books you read are signed off or endorsed by a big name in the Agile community, as this will ensure quality. Beware of old ideas – New ideas are always better, fact. Pair program, properly – Pair often, and when you do, remember that your job is to make the other person code what you know to be correct. Pair programming is the only way to resolve communication issues and conflicts. Focus on the process of pair programming, not on the people involved. Recognise bullshit when you hear it – Be suspicious when you hear words and phrases like ‘problem solving’, ‘planning’, ‘programming’, ‘coding’, ‘testing’, ‘algorithm’, ‘design’, ‘prototyping’ etc. Such buzzwords are made up by people who don’t really understand software development, or how it relates to martial arts and eastern culture in general. Learn new terms – The field of computer programming and software development is lacking in jargon. The best way to improve your knowledge is by learning new terminology for the same concepts. Real knowledge is about memorising terminology, not understanding principles. Java is dead* – Do not learn Java, and if you’re a Java programmer, you better start learning Ruby/Python/Scala/Clojure fast. Java has been dead for many years and everyone knows this. Ideally learn a language that allows you to write in 2 lines what would cost you 4 lines of Java. Productivity and readability are about number of lines of code, fact. Be a craftsman and a professional, not an engineer – You’re not building a bridge, you’re carving a beautiful statue. Remember you’re also just like a lawyer, or a doctor, you’re a professional. Spend your time contemplating who you are, not what you’re doing. Never fall into the trap of thinking for yourself – Instead, read a book, post a question somewhere, follow a practice, phone uncle Bob, anything as long as it means you don’t have to think for yourself. Thinking for yourself poses the risk that you will come up with the wrong answer. Books, forums, practices and consultants however, are always right. Read blogs, like this one – When you have a disagreement with somebody who doesn’t follow the above advice like you do, send it to them. Blogs are the authority on matters of programming, fact.

* Replace “Java” with “Ruby” in the heading for same effect. The point is not about the language itself, its about making sure you’re using the most recent language available to mankind.