Becoming a Better Developer

In my last quarter at Stanford, I took a course called "What Great Software Developers Know". It consisted of a series of lectures from different people in the software community on how to build good software. They each had different suggestions on making better software; some used tools, others used methodologies, and at least one used pure attitude. But whether it was tools, methodologies, or attitude, these people became good software developers by developing software.

Ok, duh, practice makes perfect. Everyone should just get as many internships and job experience as possible, and they'll become good developers, right? Well, kind of, but there's more too it. Unfortunately, job experience is necessarily limited experience. Your development environment is often already chosen for you, so experimenting with new programming languages, other databases, or different operating systems tends to be pretty hard to do. The acceptable level of risk is also lower, because there are people who depend on what you do. You can't just go edit the company website to add a new feature. You have to write it, put it into version control, test it, get it code reviewed, put it on a staging server, test it again, and finally push it to the production server.

Where the experience really matters is in side projects, like rolling your own blogging software, writing a small utility to import your iTunes ratings, or putting together scoring software for your grandmother's bowling league. These types of projects give developers a sandbox to play in where they can make big mistakes and then learn from them. And because the developers have chosen these projects out of their own interest, they will spend more time exploring different options, writing and rewriting the software, learning. By far, the best developers I've known are always working on fun little projects outside of work, usually in new languages or systems.

And that would be my suggestion to anyone looking to improve as a developer, find a problem that annoys you or a family member in every day life, and then find a way to create a piece of software that solves it. The time spent on such projects is will worth it.

Posted September 2, 2007 - Comments

Name:
Email:

Website:

Comment:

The color of the sky is: