There are different ways to learn and improve our work as software developers. Learning a new technology—or improving our skills in the ones we already know—often means rethinking how we do things.
Some people are comfortable constantly searching forums to solve every problem. To me, that’s something like taking trial-and-error learning to the extreme. Others, like me, prefer to approach a new tool or technology by reading a good book from cover to cover. There are many options and, as the saying goes, every teacher has their own way.
However, for a long time I’ve seen what I consider a major flaw in many professional programmers: once they know the tools, languages, and so on that they use every day in depth, they get stuck doing the same things in the same way for years. Software development is versatile and flexible; it’s rare for there to be only one way to do something. On the contrary, there are always hundreds of ways to solve a problem. So why do we hold back from discovering other approaches?
One essential way to learn, improve, discover alternatives, and have that “why didn’t I think of that?” moment is simply to read code written by others.
I’ve been a regular reader of CodeProject for many years, a collaborative website where you can find almost anything. There are also well-known public repositories containing true programming gems: GitHub, CodePlex, and Google Code, to name a few. Anyone who wants to share a project can publish it on one of these sites.
What I want to point out, however, is that there is no better way to learn programming than by reading projects created by others. It’s that simple. Those public repositories I mentioned are a true source of the state of the art in many fields and technologies.
Digging into the internals of other projects lets you discover new ways of doing things. It shows you how others have solved certain problems and can even introduce you to new programming styles.
No matter how well we know certain programming languages, scripting languages, or anything else, every problem, solution, or project we face can be approached in many different ways. I always say the same thing: I’m not completely stupid—or at least I don’t think I am—but surely there are more brilliant minds who have figured out a smarter way to solve something. Exploring other projects leads to the kind of learning that is hard to find in a book.