Do things that scare you

No, I’m not advocating base jumping while defusing a bomb, that’s a different kind of scared. I’m talking about things like learning Haskell or tackling TDD for the first time. Things that you can’t or won’t use right now. Things that make you go “eh?”.

I’ve only started looking for things that I don’t like the sound of since I became worried about stalling as a programmer. I had this horrible looming feeling that I was good with JavaScript and the web, but not too much else.

I began hunting around and asking questions as to how I can become a better programmer, not a better web developer. I see the two as slightly separate things; a web developer needs to write code, but they also need to understand tying together many different systems and reusing as much code as possible.

A good programmer however, in my opinion, should be good in almost every domain. Be it web, game or any other form of development. They are not a jack of all traits and master of none, they should simply be able to learn and adapt incredibly quickly. They don’t panic when they have to implement a sorting algorithm, they read up on it and write it without having someone on StackOverflow do it for them.

One example

A response I received while asking about becoming a better programmer was to write a Gray code implementation in C. First thought: Wat. But after a bit of research, I realised it really wasn’t that bad and I could definitely do it. This small task taught me so much and reinforced my confidence as a programmer.

It also lead me to write a linked list implementation, still in C, simply to practice juggling pointers and structs. I’d never have considered it before, it seemed too complex, until I actually tried it.

I had almost no knowledge of C before attempting to write that application. I just dived right in, learning about memory and CMake along the way. It felt amazing to be learning something completely alien with fairly minimal effort.

Go out there and find something you don’t understand yet. Why not run through the first 20 Project Euler problems, write a simple language or learn some assembly.

Never stop learning

It’s one thing I try to focus on in my life: I need to be learning or progressing at all times. If not, what am I doing? Progressing through time? So I’m always looking for new things inside and outside of programming that completely baffle me at first.

To me, there is no greater joy than when a new idea finally clicks. Go and learn something, right now.

I’ve also decided to learn German.