Becoming a Better Developer

One of the recent questions that appeared on Stack Overflow was “What are you doing to become a better developer?” Though I didn’t actively answer this question on the site, I’ve been thinking about it for a few days and I figured I’d try to formalize my thoughts.

What was I doing?

For a while, I was hacking together a lot of smaller programs and scripts to explore various nuances of a given system. Some of these programs included a couple of Ajax scripts, a PHP library that I was using in some personal web projects, some .NET programs that I was creating to explore the Facebook API. None of these were ever meant to share with anyone (with the exception of one) - they were just meant for personal use and learning.

A couple of months back, I began to get tired of constantly using the internet as my primary resource for figuring something out not because it wasn’t useful, but because I wanted know a little bit more of the technical details of some of the technologies and languages that I was using in my projects. Obviously, having Google show you thousands of results discussing your given problem at hand is convenient, and, really, there’s nothing wrong it; however, it’s hard to argue that you can’t write better code knowing how the platform on which you’re developing works . To that end, I opted to stop working on any personal projects until I had finished a reading a laundry list of books that I had drawn up in order to help me get a bit more familiar with the subjects I felt I was lacking.

What am I doing now?

As I said, I was writing different applications, but I decided to put that on pause until I’d completed my list of reading material. So, right now, I’m doing a lot of reading. I’ve got a fair amount of blogs that I read on a daily basis, and I’m currently working through several books.

My Subscriptions

Google Reader currently maintains my subscriptions for technology news, web development, software development, Linux, and personal blogs for various developers or projects that I currently use (such as Prototype). The list would be way too long to include all of that, so I’m posting a general list of subscriptions and descriptions.

Web Development
Some of these blogs focus on general principles of design and usability, and others focus on performance considerations and techniques specific to particular languages.

General Software Development
These blogs provide a constant resource of various ideas - sometimes posts are related to the business of software, sometimes they are related to technical details of software and hardware, and other times they are focused on various practices or musings from other developers.

Actively reading blogs keeps your mind open to other ideas and styles that are currently out there. You also get resources related to usability principles, design ideas, and best practices for various forms of development. Additionally, you’re exposed to emerging technologies, or even technologies that are dying.

These subscriptions have done a good job of keeping me familiar with what’s going on in the various corners of the software world while simultaneously focusing on my day-to-day activities. Additionally, they provide a constant source of food for thought - I don’t always agree with every post that I read, but, if I did, what’d be the point of reading them?

My Books

In addition to following blogs on a daily basis, I’m also currently reading several books.  As of now, I’m currently reading a book on Design Patterns in order to support experience from school and work, a book purely about the JavaScript language, and a book on Ajax. I’ve recently completed a book on Prototype, one on usability, and another book on Lean Software Development. I’ve also got a book on database design that I’ve yet to start, but it currently sitting in line.

I’ve always been a fan of figuring things out for yourself via trial and error, and also of using the web as a tool for reference - after all, you learn a lot when you figure things out yourself, and the internet provides a seemingly endless amount of information. Despite this fact, there is something to be said for having something tangible - something that you can carry in your book bag, flip open wherever you are, or write in and refer to later. Additionally, in some cases, such as with JavaScript and Prototype, I got to the point when I wanted to know the gruesome details of how this language and this framework were put together as well as practical applications for each. Nothing beats reading a book by people that have contributed to the development of the subject matter at hand.

Actively developing projects in other to increase your skills for a given goal is a good practice, but I also argue that knowing the technical details of the technologies with which you are working will make you a better developer. Understanding how something has been built and how it works internally gives you a mindset when coding that is likely to differ without that understanding. Writing code that not only follows best practices and good design but also that capitalizes on how the underlying system is built will ultimately make it better code.

If you have any blogs that you recommend, or any other books please leave them in the comments.


 
 
 

Leave a Reply