States of Coding

Ace coders can effortlessly create complex solutions using all the bells & whistles of their chosen language. Maybe. But really the very best coders write code that looks simple.

Code should be written primarily for other humans to easily understand. Suppress any temptation you might have to signal your personal expertise by writing complex code.


What kind of code do you aspire to be able to write? I suspect it involves all the bells & whistles of your language of choice, and that language is probably something hardcore like C++ or Java. Maybe Python. Probably not SQL or VBA though.

A speach I often give my teams is about there being 3 states of code-writing. The first and second state are universally recognised. But the third and highest state is often overlooked.

State One: The Learner.
You want to write code that does something, but you just haven't got the syntactic knowledge. So you Google, and try things, and get errors, and don't fully understand what is going on. Even experienced coders can be Learners when they step outside their area of expertise.

Eventually, you learn a bit of the language. Then a bit more. Eventually you realise you know enough to be useful. Someone else might even ask for help and you realise you can actually help them. On this path, after a few years you might reach State Two:

State Two: The Expert.
This is an awesome state to achieve. You know a language well enough to quickly and reliably do all the things you typically need to do. As a Learner, this is what you set out to achieve - you are an Expert.

So what is State Three? What is better than being an Expert? To answer this question, we must appreciate who we are really writing computer code for. The Expert knows the answer: Computer code is writen so a computer can execute it. This answer is correct, but too narrow. Really good code is written so another human can easily understand it. Anyone close to Expert will appreciate there are dozens of ways to implement any given coding task. You might not see this yourself because we all have our own ways of coding things. But set a coding challenge for multiple people, and there will be as many different pieces of code written as there are people.

At the level of Expert it should be taken for granted that code executes and does what it must to. To get to State Three, you have to ask the question "which of the many ways I could write a piece of code is the best"? And the answer is, "the way that makes it look really simple so another human being can easily understand it".

State Three: The Master.
Aspire to write code that does not look complicated. Reading and understanding good code should be effortless. Someone striving to be an Expert might look at Master level code and dismiss it, because there appears to be nothing complicated about it, nothing to showcase the author's technical skills. But this is exactly the point. The Master has gone through the state of fascination with complexity.

To summarise:
  • Learners: Simple code for simple problems and the journey to achieve this.
  • Experts: Complex code for complex problems because this must mean you really know your craft.
  • Masters: Simple code for complex problems to make it easy for those that come later.
Back