It is now more than 6 years since I started blogging about software development. It has been a great experience, and I thought I would reflect on what I have learnt. So here are my reasons for writing about programming, a bit on my process, and some statistics.
Knowing what I think. Formulating or explaining something in writing makes me think it through really carefully. The act of writing it down exposes gaps in my arguments and knowledge, forcing me to clarify my own thinking. It really is like this quote from Joan Didion: “I don’t know what I think until I try to write it down.”
Sharing. Sometimes there are ways of working I think are really helpful, but maybe not so well known. Then it is nice to be able to describe what we do, and why I think it is useful. For example, Learning From Your Bugs and Developer Book Club.
Venting. From time to time there are things that annoy me, or ways of working that I don’t like. Then I can write a blog post and argue how things should be instead. Examples of posts in this category are Great Programmers Write Debuggable Code and Developers – Talk to People.
To learn. In general, I like to discus my posts in the comments and in forums. The only exception is when people resort to insults instead of discussing the merits of the ideas (happens occasionally). But if there is a healthy discussion I usually learn something new, for example under what conditions an idea works and doesn’t work. Sometimes the discussion makes me change my mind, like on Unit Testing Private Methods.
To remember. When I read a book on programming or take a MOOC course, I usually write a review of it. Knowing that I will write a review makes me learn the material much better – I am learning more actively. I take notes and try to summarize the most important takeaways. I also think more about what I liked the most and the least, as well as how it compares to what I already know about the subject. Hopefully the reviews are also valuable for people considering reading the book or taking the course. Example posts are Coursera Course Review -Software Security and Book Review – The Effective Engineer.
Thrill of having readers. Something I didn’t expect when I started blogging was the thrill of having people reading (and liking) what I write. Getting a post upvoted on a forum or shared on Twitter simply feels really nice.
Visibility. Having a blog helps your identity on the web. If people google you, your blog will hopefully show up near the top of the search results. It can be helpful when applying for a job. I have never had any recruiters contact me because of my blog (95% find me through LinkedIn, the rest via StackOverflow). But when I last applied for a job, I was able to point to my blog for details on my thoughts on software development.
Archive. My blog has also become a nice archive that I can refer to. For example, once in a while I discuss the subject of RSI with somebody. Then it is good to be able to send a link to my post on How I Beat Repetitive Stress Injury with my story on the subject.
Keep a list. Whenever I think about something for a blog post, I write it down in my list of topic ideas (I use Toodledo). I add any arguments for and against that I can think of. Sometimes it is just a title, and sometimes there are quite a lot of notes. Currently I have around 120 entries (of varying quality) in the list.
Mull it over. Before I write about a subject I usually think about it on and off for several days – maybe while going for a walk or having a shower. If I come up with more arguments or different angles on the subject, I add them to the list. By taking a few days of thinking about the subject, I let my subconscious work on the ideas.
Quality over quantity. I often see the recommendation that you should blog once a week. For me, that is way too often. I don’t even write one post a month on average. It takes me many hours to finish a post (I would say the actual writing takes me between 3 and 7 hours). It is quite a big effort, and I don’t have time to write more often. I think the quality of the post is more important than the number of posts. Since each post hopefully will stay around forever, I want each one to be as good as possible.
Easy to skim. I think posts that are easy to skim are more likely to be read. You can scan it and get the gist of it. If you are interested in the subject, you can read it more carefully. If it is just a wall of text, it is unclear if it is worthwhile, so many people will just skip it (that’s my theory anyway). I usually use bullets or short paragraphs to divide up the content. I also find that it helps me structure my ideas and arguments better than simply writing one long text.
Picture. I have read several studies claiming that posts containing a picture are shared more on social media. That is probably true. If nothing else, it looks nicer when there is a picture included. I usually include a picture I have taken, ideally related to the content in some way.
Edit. Often I get stuck trying to formulate something. I have found that it is much better to write something less than perfect and keep going. Later I will come back to it and fix it. I go through and edit what I have written several times before I am done. For me it is really hard to get it right the first time, but after several rounds of editing I am usually happy. Finally I spell-check the whole text and press publish.
When I have finished a blog post, I submit it to Hacker News and Reddit/r/programming. Somebody questioned submitting your own posts, but I think it makes sense. I write about aspects of software development that I find interesting, so there is a chance that other people will find it interesting too. Besides, I don’t only submit my own posts – I submit whatever I find interesting that isn’t already shared there.
When I submit to Hacker News and Reddit/r/programming, I never know what will be popular. If a blog post gets on the front page of either, there will usually be thousands of page views on that post. If not, there will be at most a few hundred in total. I am using the free version of WordPress, but the statistics you get are quite comprehensive. I can see the number of views per post, and from where in the world the traffic is coming. A few days after being on a front page, the traffic will revert back to the normal level, which is a bit below 300 views per day. In total over the six years, there have been 917,000 page views.
Hacker News. It is quite hard to get on the front page of Hacker News. It takes around 5 upvotes within the first 45 minutes of submitting for that to happen. This is partly because there are so many stories submitted – sometimes one a minute. Once on the front page, a post usually stays there for a couple of hours. It is great if people comment on the post – the quality of the comments is usually quite high. I also like that you only see upvotes on stories at Hacker News, not downvotes. Of my posts, 12 or so have ended up on the front page.
Reddit/r/programming. It is easier to get on the Reddit/r/programming front page, mostly because there are not as many stories submitted there. Often I write my blog posts on the weekend, and submit them on Monday morning (European time). Usually they will go straight to the front page (in position 12 or thereabouts), because this is a relatively quiet time for submissions. However, it only takes a couple of downvotes to get voted off it. If the post is popular on Reddit/r/programming, it can stay on the front page for almost a day. There are many good commenters on Reddit, but there are also quite a few comments of quite low quality. Around 25 of my posts have been properly on the front page.
Twitter. I usually tweet out new blog posts, but that usually only generates a couple of clicks. The only time I see any significant traffic from Twitter is when somebody with tens of thousands of followers links to a post (has happened once or twice).
LinkedIn. I also post what I write on LinkedIn. I never get a lot of traffic from there, but it is nice to see when people like or share what I have written. It is mostly a way to update my connections on what I am thinking and writing about.
Search terms. The blog post that gets the most search-driven traffic (by far) is 5 Reasons Why Software Developer is a Great Career Choice. Typical search terms are “why software engineering” and “why do you want to be a software developer”. Other common search terms are “coursera reviews” and “I love coding”.
For me, writing a new blog post is many hours of work. But it is definitely worth it. I enjoy thinking about software development, and blogging about it further helps my understanding and learning. It is also very satisfying when people read and comment on what I write. Hopefully some people find it useful. If you have been thinking about blogging, my advice is to start – I am very happy I took the plunge 6 years ago.