Writing software is hard, particularly when the schedules keep programmers “nose to the grindstone”; every so often, it's important to take a breather and look around the world and discover what we can find-ironically, what we find can often help us write software better.
With the rise of microblogging and social media, the traditional blog seems to have taken a downturn in popularity, and few, if any, programmers are starting new blogs for themselves these days.
Ten years ago, as the Internet was just beginning to have the kind of profound effect on society that we would all but take for granted by the time Barack Obama would be elected (in part, some say, because he was better able to use the Internet to communicate his message to his political base), it was common for a programmer to start a blog. In the earliest days, blogs were hosted on Radio, a blog engine and website, sort of an ancient predecessor to today's Wordpress, though a few hardy souls looking to have more control over their blog used Radio to host their blog on their own domain. Nevertheless, whether you used someone else's home on the Internet or your own, having a blog was, it seemed, a mandatory step if you claimed any kind of technical expertise.
Fast forward a few years and the introduction of microblogging, the generic term for what we would later lump entirely under the name Twitter (probably because, by now, Twitter stands alone as the last-man-standing in the microblogging world). Called microblogging because it imposed an arbitrary limit (the now-infamous “140 characters”) on the posts written by its users, Twitter, it seems, has all but made the traditional blog obsolete. Facebook, too, tends towards the microblogging end of the blogging spectrum, thanks to the way in which it presents the posts from users. Gone, too, are the arguments over the blogging protocols: RSS, Atom, and a few others that only the hardiest of technical geeks will remember.
Why, Oh Why?
During the heady days of blogging, the non-technical portion of the population (that is to say, everybody that isn't a reader of this magazine) often asked about the point behind blogging. Narcissism was often cited as the principal reason: that bloggers somehow needed to project the intimate details of their lives out into the Internet for anyone-close friends, would-be friends and voyeurs alike-to read, comment, engage and criticize. The act of blogging, it seemed, was simply an exercise in scrounging for our “fifteen seconds of fame,” to use Andy Warhol's turn of phrase.
But blogging also has a number of other reasons that speak strongly towards it, and it's my goal within the next thousand words or so to convince you that now, even more so than then, is the time for a programmer, new or old, apprentice or adept, to go back to blogging-and it's not just because it's good for others.
Record Your Victories
Have you ever been in a situation where you're talking with a developer and they're complaining about a bug or problem that sounds very familiar to you? You remember having that very same problem or tracking down a bug that is almost exactly the same thing that they're wrestling with? You say, “Wow, I remember dealing with that”.
Eagerly they ask, “What did you do to solve it?”
You frown and say, “I don't remember.”
Hardly a helpful answer, and they're to be forgiven if they feel like killing you-to know that somebody else solved this problem and could save them hours, days or even months of frustration, only to have that answer denied them due to human memory frailty… that's just painful.
On the other hand, if you'd blogged it, not only would others (in some cases, complete strangers that you'll never meet, thanks to Google) be able to save themselves time, but the next time that somebody has that problem and that somebody is you, you'll thank yourself profusely.
Save Your Thoughts
It's not uncommon, while working on a particular piece of functionality or trying to track down a bug, to have a question or thought or insight that you can't pursue at the moment. (Or, rather, you could, but then you'd lose your progress on the feature or bug you're trying to fix.) The more disciplined of us might be able to remember that thought or idea later, but I'll be the first to admit that I'm not one of those people-if I don't capture it somehow, that thought is going to go the way of the Dodo bird, never to be seen or heard again.
If the blog is open nearby-and hey, if you have a browser as so many of us do, and if you have a browser tab open to Facebook and/or Twitter, as so many of us do, it's pretty trivial to open a third tab to your blog's web page too-then you can simply shift over to the blog and enter the idea, concept, or question.
Now, having captured the thought, when the immediate needs are met and you have a quiet moment, you can go back, think the process through, and update the blog post with your new thoughts. (Remember that blogs, unlike Tweets or Facebook posts, can be edited after the fact. Multiple times, if you like.)
Flesh Out Your Thoughts
Sometimes the conversation around a bug is flipped. Sometimes, you're sitting in your cubicle or office, wrestling with a problem and nothing seems to be going right. A friend or colleague comes wandering by, and says, “Hey, what's wrong?”
Growling, you say, “This stupid bug…”
Friends and colleagues like to try and be helpful most of the time, so they inevitably ask, “What's the problem?”
“Well, see, when the code enters this particular method…”
And suddenly, you know exactly what the problem is. They never had to say anything. They never even got to hear your full description of the problem because the act of forcing yourself to put the problem into words often reveals where you are making assumptions that aren't really good assumptions to make, or not thinking about all the possible permutations, or even just not thinking the entire process through clearly.
(This technique is common at Microsoft, I'm told, going by the label of the Teddy Bear Technique: Developers will have a stuffed animal in the office, and explain the problem to the stuffed animal, who, it turns out, doesn't say much. Give it a shot sometime. Of course, if the stuffed animal talks back, you might want to lay off the caffeine and sugar for a while.)
Blogging is just another form of communication, and as such, trying to describe the problem you're having in written form can have exactly the same kind of benefits as describing it in verbal form. Even if you're not a strong writer, as many programmers aren't, going through the act can still be beneficial to understanding what you're wrestling with. And the act of blogging it can help organize your thoughts into thinking about what, exactly, you're wrestling with.
Connect with Others
In and of itself, you can realize many of the benefits of blogging by simply keeping a journal or a diary: open up Notepad and just keep appending to a text file, for example, or send yourself emails, or any of a dozen other tools that could allow you to write, capture and process your thoughts later.
The problem, such as it is, is that each of those techniques is a purely localized capture mechanism: there's no way to find anyone else having these same problems or thoughts. Blogging, by virtue of being hosted on the Internet, allows you to connect with others of like minds. If you're just getting started wrapping your mind around functional programming, for example, blogging your experiences around it allows others who are going through something similar to connect with you. They can discuss it with you, learn from you or vice versa, and offer suggestions on how to proceed or ideas on what to explore next.
Enhance Your Resume
When looking at your next job, remember that employers are looking for ways to differentiate you from the host of other candidates that are also applying for the same job. Sure, your resume looks strong with your work history and your references and whatever else you've put on there, but let's be blunt about this: people lie on resumes. As a matter of fact, it's become so commonplace and, dare I say, expected, that you can find articles on the Web about what to lie about and what not. (Don't believe me? http://applicant.com/7-resume-lies-employers-will-never-check/) Of course, there's a fine line between “lie” and “white lie” but in the end, the point is the same: the resume is no longer expected to be an accurate view of the candidate.
So when faced with a whole host of candidates, all of whom are presenting resumes of roughly equivalent strength, how does an employer tell the different candidates apart? Of course, an interview can go a long way to establish one's bona fides, but even then, candidates will often… (cough) embellish (cough)… their history or skills or abilities or whatever else is necessary to obtain the job.
Some employers have started looking for other ways to verify a candidate's skillset, looking at their StackOverflow profile or Github pull requests, for example, but one of the easiest ways to show that you know what you're talking about is to point them to your blog. Sure, not everything you say on your blog may belong to the “profound” category, but letting them see what you're stumped at can be just as useful as letting them see what you're an expert at. After all, do you really want a job that would only set you up for failure?
Contribute Back
By blogging, you're also putting your experiences and thoughts and ideas out into the public space, allowing others to benefit from your hard-won knowledge. Just on its own, that's a huge gift to the world at large-you may be saving some other programmer hours, days or months of pain and frustration, and that kind of karma has an interesting way of paying back in various ways, including gathering followers who will be willing to help you when something stumps you.
When You Write, You're Right
Obviously, as already pointed out, you can find many of these benefits through a variety of other mechanisms-you can build a following through Twitter, you can get people to connect with you over Facebook, and so on. But only the blog combines all of these into one experience. And, nothing says that it has to be “either/or” when it comes to blogging and using other social media: write the blog post, then link to it from your Twitter and Facebook (or LinkedIn) accounts.
But don't neglect the poor blog-it has too many useful things to offer you.