My ongoing journey to be a better developer

From a developer who knows little

Adam Stanton

--

One of the more memorable sessions at the Vancouver Polyglot {Un}conference this year was to hear how other developers push themselves forward and be better at their craft. This got me reflecting about my own habits and this is my story on my ongoing path to be a better developer.

7 or 8 years ago, I was happily developing away in an enterprise environment using mostly .NET and all was good in my life. Until suddenly, out of know where, I had an insatiable desire to learn stuff I didn’t know. Like lots of stuff.

Don’t get me wrong, I was always quite motivated to be better at what I did. By being better I mean improving on how I coded, I read the classics, Gang of Four Design Patterns, many of the books in Martin Fowler’s canon, and Domain Driven Design by Eric Evans, better known as the “blue book”. I was able to design a pretty mean adaptor class, and speak ubiquitous language with a domain expert and reflect that in code. I thought I know my stuff, but at that point I had no notion of how little I actually knew. This realization of little I knew gave me a fresh new outlook on learning, and a renewed curiosity that was more insatiable that I ever had before.

My interest in .NET and the Microsoft stack in general began to wane and my interest in Unix derived operating systems flourished. I wanted to learn its tools and of course its overall philosophy. I read The Art of Unix Programming and the insight I gained from that gave me a fresh outlook on building software, the ideas easily transferrable to the work I was doing with .NET. I wanted to learn git and how it worked and understand why it so much superior to SVN which I was using at the time. I started going through the Linux Programming Interface a fantastic yet dense book that revisited many of the things that I learned (with half interest) at university. I started to gravitate my admiration towards the likes of Linus Torvalds or Zed Shaw, people I would consider masters of their craft with a wide skill set. By doing all these things, by broadening my horizons, I realized I knew less and less.

By looking at various projects, I started to really observe where my interests lay. I was very interested in the 10K problem (reading the paper back to front many times) and wanted to understand web servers. I wanted to know how event loops worked, and the trade offs a multi-threaded web server or an event loop. Again, more and more I looked into these problems the more I knew very little. I wanted to understand distributed systems, and studied CAP theorem and various challenges around that. But I was starting to understand where my interests were aligned, and this naturally led to positions that better suited my interests. I was working with git, unix tools, and eventually moving away completely from .NET and working with Ruby, Javascript and tools of my choice (I may find a reason to use Erlang). I felt like I was now doing the things that felt elusive to me.

During all this time, my learning consisted mostly of reading, attending conferences, watching web casts, listening to podcasts etc. I felt like I was missing a vital part to this, a more practical side. The last year or two I’ve made a concerted effort to really understand the hacker’s mentality. That is the thrill of experimentation, of breaking things. Doing this is fun (and fast!) way of learning things very quickly. I have a fear of doing things wrong, or going down the wrong path, but I’m now slowly realizing that this is a good thing and should be embraced. This I believe is the hacker’s mentality in a nutshell, purposefully going down the wrong path, just to see what happens. Of course for leaning purposes only :) My other goal is to contribute more to OSS and be more involved in the community. I think shyness has a lot to do with holding me back on this, but I’ve managed to get a few PR’s merged in the last year or so. And of course blogging, what I’m doing right now. Not only do I want to share what I learn, but also it gives me an opportunity to reflect and give fresh insight.

I feel that the more I learn, the less I know, but at the same time feeling I have broader insight into challenges I face as a developer. It’s an ongoing process and that’s fine with me.

--

--

Adam Stanton

Server guy @perch. Expat Australian living in Canada.