How to become a great software developer

Most kids study code, algorithms,  programming languages, techniques, and architecture frenetically – Believing there’s a secret key to becoming a really great system developer, and if they simply read enough about the subject, they’ll become like the Leonardo DaVinci of software. First of all, that’s not simply true. The single smartest thing to invest your time into, is to simply create as much code as possible.

Several years ago a study was conducted about quality. Some random people were selected, and divided into two groups. Group 1 was told to create a single cup out of clay, the best quality they possibly could. Group 2 was told to create as many cups as they wanted to create, and not told to focus on quality. They were all given the same timespan, and none of them had any previous experience with working with clay. None of them were told what the experiment was trying to figure out. The results …?

The people who were able to create the best cups out of clay, according to neutral quality parameters – Were the ones that were told to create as many cups as they wanted to.

The same is true for anything. If you want to play the violin like a maestro, you’ll need to practice for thousands and thousands of hours. If you wish to become a really great system developer, you’ll have to create hundreds of different little apps. No amount of reading books can help you become really great, the same way experience can.

Secondly, when you do study, make sure you study everything else but software. In fact, I’ve learned more from the Buddha, Bruce Lee and Socrates about system development, than that which I have learned from some of the best software developers of my time. The reasons are best summed up in the Bible in fact.

There is nothing new under the sun.

If you dismiss me for quoting the Bible, you haven’t understood anything, and might as well click back in your browser, and return to my blog 20 years from now. Even Bruce Lee spent a lot of time studying boxing, and heavy weight boxing champions on video. Which he himself contributed to a lot of his success as a martial art champion. He also contributed people like Alan Watts and Krishnamurti for teaching him, the things that would later become his personal breakthrough, when it comes to understanding martial arts.

Every new generation believe they have made something truly unique, which is not comparable to anything our previous generations have worked out – While this is simply not true. Arguably, the clay artists of ancient Greece, knew just as much about software development, as you do!

The reasons are because it’s really the same problem. Your code needs to look beautiful, and communicate clearly what its purpose is. It needs to be intuitively understood what your program does. It needs to be solid, and able to withstand the sands of time. Really, making a cup from a piece of clay, is arguably the same problem as creating a CRM system for the 21st Century.

Alan Kay is probably one of the best software developers of our time. He co-wrote the specifications for the internet, and created the first tablet among other things. In addition, he created the Alto machine, or rather parts of its operating system, back at Xerox Park. Alan Kay had a PhD in biology, and was a trained Jazz musician. Theoretically, according to conventional knowledge about system development – He shouldn’t know anything about creating software!

Train broadly, to acquire concise knowledge, about a narrow and specific subject. This fact is so obvious, yet so unintuitive, that few people are even able to believe it. But it’s the hard core truth of how to become a really great software developer!

Facts are, Bruce Lee taught me more about becoming a great software developer, than every single teacher and tutor in the software space I have ever had, and every single book I have ever read about the subject. Let that sink in please …

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s