There are about as many programmer blogs out there as there are programmers. Why? Why is running a blog a ‘requirement’ to being taken seriously as a programmer? I can’t provide definitive answers, but I can share my own thoughts on the subject.
The first and obvious answer is that it’s expected because it’s expected. After a certain point, traditions and ideas take on a life of their own, completely outside of their original purpose. We can point back at history and show where they started, maybe even why, but their relevance fades to ‘it’s tradition’. As reasons go, this isn’t exactly a bad one. In every profession there are rules to follow, in every job there are things that need doing. Much as you can’t get a decent job without a college degree, whether or not that degree relates to the job, you need a blog to get anywhere as a programmer. Why? Because it’s expected. Why it’s expected is often not even thought about.
But that’s not enough for me. Well, honestly, I suppose it is — would I be starting this blog if I didn’t want to get somewhere as a programmer? But I like to know the ‘whys’ behind traditions, to understand what their reason and purpose is. The college degree one is easy; it proves that you’re willing to work, to learn, to grow. A couple of years job experience can show some of that, but you’re getting paid to work at a job. You pay to go to college. It shows a desire for self improvement. It shows an ability to work at something with no hope for immediate payoff.
So what does a blog do for a programmer?
First off, it can be a great notepad for past achievements. Find the solution to a difficult, odious problem? Blog about it! Now the next time you run into the problem, even if you’ve forgotten the solution, you still have a record of it! And better yet, that record is public, so maybe you’ll help someone else some day. Remember, we stand tall because we stand on the shoulders of the giants that came before us, it’s important to pay that forward by letting others stand on us.
It also helps you make certain you’ve really solved the problem. Writing a blog article about something forces you to articulate the issues at hand and really consider them. Half the time when I hit StackOverflow, completely confused and bewildered by a problem, I get halfway through explaining it before I get hit by sudden inspiration. Maybe the inspiration is a solution, or maybe it’s just more wasted time, but because I forced myself to sit down and lay my thoughts out in ordered form, I got an idea. Similarly, writing a blog article will force you to think about your solution, and make certain you understand it. A solution you don’t understand is as useless as one that just plain doesn’t work. If you don’t understand why the solution fixed the problem, you can’t even guess at whether you’re just masking a symptom of a deeper underlying problem. Bugs can propagate across an entire program before becoming obvious, causing issues in a place seemingly unrelated to the actual bug. If you just fix those issues, the bug is still there, waiting. Better to track it down to it’s source and fix it there.
As an extension to that principle, teaching something is a way to make certain you really understand it. When you teach something, you’re forced to go back over the entire thing, even the parts you think you already understand. This gives you a chance to look over the beginning again with a more experienced eye, and maybe improve your understanding of the basics a little more. And programming, despite all the tools we use to break it into pieces, is fundamentally holistic: you have to understand everything, or you understand nothing.
In addition to actually making you a better programmer, it also offers your potential employers something else. It gives them an opportunity to gauge your skills, abilities, aptitudes, and attitudes outside of the dreaded, stilted confines of a job interview. It’s an opportunity for them to look not at what you want them to see, but at the real you. When you go to a job interview, there are a thousand and one rules that define the situation, that limit both you and them. You’re expected to be calm, to appear completely and utterly professional. Yessir, nosir, threebagsfullsir. You’re exchanging information, but it’s also a performance worthy of an actor. The blog is a place where they can look past that acting to see the real you. You want it to look professional, well reasoned, and productive, but you aren’t confined by the rules of a job interview. It’s a chance to see past the (probably metaphorical) suit you wore to the job interview.
So that gives us four good, solid reasons to run a blog. A chronicle that can help you and others solve an issue when it crops up again; a way to force you to think through the solution; a way to help you deepen your understanding of it; a way to show yourself off in a good light. Each of those reasons is valid. Each of those reasons is important. But taken together, I’d say they make an incredibly persuasive argument. But the fun part is that’s just the reasons I can (and did) come up with. There are others out there. They might argue that it’s about learning to write for human beings; that it provides for a sense of community; that it’s how we provide for the education of programmers. If you spend the time to look, there are thousands upon thousands more reasons. (Mind you, not all of those reasons will show up in articles that are about those reasons; two of those links are to articles where the argument is a sub point of the real article.)
That brings us here.
Time for me to start start filling the communal pool of wisdom, not just drawing from it. Time for me to learn by teaching others what I know. Time for me to show off for employers, because as much as I’d love for my current job to last forever, what are the odds of that? (Actually, pretty good I hope… but I’ve never liked the idea of keeping all my eggs in one basket!)
I don’t know how often I’ll post here. I don’t know what the average post length will be — though I don’t intend to have very many one-or-two liner blog entries. There’s a lot I don’t know. If you’d like, you can join me as I go learn some of it.