I’m betting most developers didn’t write their first line of code in school, or on the job. It’s more likely than not that they wrote those first lines of code after encountering a problem that their computer couldn’t solve on it’s own. Maybe that problem was making repetitive changes to a large text document, or like me, they wanted to write an AOL chat bot that would talk on their behalf. Whatever the reason, it’s personal projects that help define a developer and refine their skill set.
I love problem solving and I believe this is a trait I share with most developers. Spending an afternoon refining my solution to a complex coding problem feels no different to my brain than if I spent the afternoon playing Sudoku. There is something alluring about the slipping into the flow of coding to solve a problem and coming out hours later with a solution. You might think this would be exhausting but it’s exactly the opposite. It’s invigorating.
I know many developers that spend just as much time, if not more, working on personal projects and open source initiatives as they do at work. You might have heard that contributing to an open source project (or starting one of your own) is a great resume builder. Why is that? These projects have an intrinsic value that goes well beyond the personal satisfaction of building something with your own hands (or well, fingers).
Just like my first experience with writing code was developing a chat bot for AOL in 1993, much of a developer's experience and expertise comes from the time they spend working on personal projects. Bringing a project from the ideation stage all the way through to completion builds an enormous amount of skills that can be applied to other projects.
Have you ever spent a couple hours working on a problem, growing more and more frustrated as you were unable to find a solution? Perhaps you were trying to get fields in a spreadsheet to calculate correctly, or you were trying to put together a piece of Ikea furniture.
Finally, you have an ‘ah ha’ moment and figure it out. If you had to do the same task a week or two later, would it take you the same amount of time? No, of course not. You worked hard to figure out the solution to this problem, and you have that solution ready the next time it’s needed. It’s unlikely you’ll ever totally forget how you managed to get those spreadsheet values to calculate. Even if you do forget the specifics, you’ll have a jumping off point that has you a few google searches away from a solution.
There are so many solutions that developers accumulate over their careers. Each one of these solutions can be abstracted and applied to a number of situations. The more solutions a developer has enacted, the more solutions they have available to them when they encounter a problem.
Just recently I spent several hours working on a new design for a website I created in 2008. It’s a simple game listing website that has fallen woefully behind the times. Opening it on a mobile device results in a cringe worthy presentation of something I spent days making look great. I wanted to make the site responsive, and I wanted to use the same CSS framework we use at Alipes. I don’t do a ton of front end design work, so I knew this would be an excellent chance to bolster those skills.
The very next day a fellow developer encountered the exact same issue at Alipes and we solved the problem within minutes. Great success!
Personal coding projects remind us why we started coding in the first place. They give us a chance to spread our wings and explore new languages, new possibilities and new solutions. They are incredibly important, and contribute in large part to a developer's overall skill. If you are a developer and you are looking to improve, make sure you have a personal project to help fan the flames of that exploration.