In years one and two you learn how to code. Then you spend the next 10 learning HOW TO CODE. The difference? Code written properly is easy to maintain, can be read like a book and you shouldn’t need to study every line to understand what it is trying to achieve. Anyone can understand what you wrote, why you wrote it and its purpose. Like you would never need to refer back to a previous chapter in a book to understand what is happening, you shouldn’t need to jump around the code to understand what a particular component, or statement does. Code shouldn’t just work. Code should communicate the concepts behind the software. During this talk I would like to share some of the techniques I have learnt in order to achieve that starting at requirements, to design and implementation to testing.