Saturday, September 12, 2009

More Software Developers Should Write Blogs

With the pervasiveness of blogs focused on software development, it is sometimes easy to wonder if there are more bloggers than readers. There are so many software-related blogs that Jurgen Appelo recently started listing his Top 200 Blogs for Developers instead of the 100 he formerly listed.

The presence of so many blogs has helped me tremendously. There are three types of assistance these software development blogs have provided me.

1. Exposed to New Ideas, Concepts, Techniques, and Methodologies

Some blogs have provided me with information on a topic that I did not know much about. These are usually the blogs I run into when perusing DZone or similar sites.

2. Direct Answers

Some blog postings have helped me solve a particularly tricky problem by matching a search with Google or other search engine.

3. Links and References to Answers

A third category of assistance from software development blogs includes the blog posts that have not had the answer I sought directly, but have linked to or referenced material that did provide the answer. These can be especially helpful when I am searching on something and not quite using the appropriate term to have the search engines return the most popular related links.


Why Don't More Developers Write Blogs?

Even with all of these blog postings, I believe that we could all benefit from even more software developers writing blogs. The software development community would especially benefit in the second and third of the three categories of helpful blogs I mentioned above because more blogs would mean more potential sources of information for direct and indirect answers.

Some Many Most of the highest skilled and most experienced software developers that I know and work with personally do not write blogs. There are some obvious reasons for this such as lack of interest and lack of time (too busy with other projects, work, or other activities). However, I also know that at least part of the reason that some of these highly talented developers do not write blogs is that they underestimate the value of what they could contribute to the software development community. In the remainder of this blog post, I will look at why I think many of these developers who think they do not have anything to add are mistaken.


Software Development Blogs Present Lopsided View of Software Development

I have noticed a glaring difference between my perception of the software development world based on the blogs I see and the software development world that I experience firsthand through work, through discussions with attendees at software development conferences, and so forth. I think we as a software development community could benefit from more blogs from some of the "everyday developers" working in the trenches with many different languages, different operating systems, different project sizes, different problem domains, etc. We have all of these covered to some degree, but it feels like the blog coverage is tilted more to some areas than others.


Different Opinions and Perspectives Do Matter

Statements like "all opinions matter" can seem like politically correct lip service, but there is some truth to this, especially in terms of seeing both sides of the story when considering a new or different technology or language. In software development, we have a tendency to act like lemmings and follow trends and fads, sometimes without sufficient consideration of the negatives and costs associated with that fad. I have found that my best decisions are made when I combine my own experience and instincts with reading of well considered and articulated thoughts from proponents of all sides of an issue. I often see outstanding and thought-provoking feedback comments to a blog post and wonder why that commenter does not write his or her own blog post with that kind of insight.


It's All About the Little Things

I occassionally run into a particular problem with a particular language, library, or technology for which I am unable to find a solution via search engine. I have gotten so used to today's powerful search engines pointing me to a blog, forum thread, or article with the answer I am looking for that it is almost scary when there are no useful responses. This often happens when using very old technologies, very new technologies, or technologies without a large customer base. When a colleague knows how to resolve one of these problems, the first question I have to ask (to at least myself) is, "Why don't you blog about this?"


Nothing to Add

As I mentioned earlier, some of the blog posts that I have been very grateful for are those that did not directly answer my question, but which pointed me to the blog, article, or forum thread with the answer. In some cases, no particular source had what I was looking for, but the blog helped me arrive at the answer by triggering something in my mind or making me think about the problem in a different way. I think if more developers wrote blogs about the problems they have faced and how they have resolved them, our chances of finding these indirectly beneficial blogs would be greater.

Several years ago, I approached a respected colleague regarding assisting me with writing an article on software design. I respected his thinking process and was particularly impressed with his ability to think deeply regarding software design concepts and techniques. He had never written a technical article or blog post, but I felt that he would be a great asset in writing a highly useful article on software design. He was very interested in the proposed project, but felt inadequate from the very beginning. He wondered what he could add on top of what was already out there in terms of software development. As we had our initial discussions about the outline of the article and what we'd write, I became increasingly excited about the article's potential. Unfortunately, we ended up not writing that article as we got distracted by other things and I have always felt that at least part of the reason we never wrote that article is the overwhelming feeling of having nothing to add. To me, that's the community's loss because I really thought that some of the ideas he and I came up with together were just enough different in perspective from what was already available to add real value for readers.


Strong on Concept; Weak on Experience

My feeling is that the software development community has greater coverage in terms of software development theory and concepts in our blogs than we do in terms of practical, hard-earned experience and details. Some of my favorite blog postings have been those which have relayed a real-life, practical experience and the lesson learned from that experience. It is one thing to say, "You should always do it this way," but it is entirely more useful and convincing to explain in practical terms why you should do it that way. These posts can be difficult to write because they acknowledge mistakes and weaknesses, but they can be highly beneficial for others. After all, one can learn much from one's own mistakes, but it is even better (and less costly) to learn from the mistakes of others. Some examples of blog posts that fit into this category include Rotten Statics (related to Inconstant Constants in Java), Don't Ignore serialVersionUID, and The * Stupidest Things I Have Done in My Programming Job.

It is important to note here that some of the most popular blogs that are strong in theory and concept are so strong because the writer does have deep and broad practical experience behind the theory and concept. Still, in terms of convincing one of the value of the theory or concept and in terms of understanding the significance of theory or concept, it is difficult to be more effective than by telling a sad story based on real events. If more bloggers were willing to share their failures and disappointments, there would be more evidence to back up the conceptual blog postings.


Nobody Would Read It Anyway

Some highly skilled developers do not blog because they believe no one will read their words anyway. Admittedly, they are correct in this assumption, at least early on. It usually takes time to gain regular readers and there is no guarantee that one will ever gain any significant number of regular readers. If that is the only reason one wishes to blog, then it might not be worth the effort. However, even if a blog is only read by people searching for something and running into a blog post via search engine, the community will benefit from the existence of the blog post. For the early months of my own blog's existence, the vast majority of viewers of my blog came to it through search engines. That has gradually shifted to the vast majority coming to it from links, due at least in part to the syndication of my blog on JavaWorld.

I started my blog with the thought that even if no one else ever read it, it would at least serve as a glorified bookmark of principles, concepts, techniques, and ideas worth remembering. I have actually used it several times this way to quickly find something that I knew I had written about but could not quite recall the exact details about.


Selfish Motivations

Besides serving as a "glorified bookmark," a blog can be beneficial for other selfish reasons as well. It can serve as evidence to potential and current clients and employers of one's experience and familiarity with particular techniques. It can be a soapbox for one's opinions. If the folks you work with are tired of hearing your rants, consider a blog as another outlet. In fact, a blog can provide a way to let off a little steam about things that are bothering you. The act of writing a blog can even help one organize and articulate one's own thoughts better. The fact is that even these selfish motivations can lead to blogs that might challenge readers and improve the software development community discussion.


Online Tools Are Equalizers

I think the software development community would benefit tremendously from more blogs by a wider demographic of software developers. It's not that I have time to read any more blogs: I cannot even read all that I'd like to read as it is. However, there are many tools at our disposal that would help us benefit from more blogs from a wider set of personalities and experiences. First, sites like DZone help choose some of the most interesting articles. Even a first-time blog writer could post his or her blog posting to DZone and, if it was particularly good, could get some immediate attention. Second, the powerful search engines make nearly any blog post a potential hit. If we had more blog posts from a wider group, we'd be more likely to see their posts show up in niche searches. Because the search engines and social tools like DZone favor blogs with characteristics that typically imply a certain level of interest, new blogs that truly have nothing to add are largely ignored. This is important because it does reduce the noise.


Conclusion

There are many times when the herd of software developers start moving toward the siren's song and it would benefit all of us if we had a few more people trying to snap us out of their trance or at least slow us down enough to reconsider the real benefits and costs. Besides adding to the discussions regarding software development, more sharing of practical, real-life experience could help each other reduce loss, minimize bad decisions, and improve productivity.

6 comments:

Paolo Antinori said...

thanks for ispiration.
"Nothing to Add" moved me to write the first post on a already configured blog on which i'd never found anything to write upon.

paolo

Dustin said...

Paolo,

Good for you! I think that's great.

I am really enjoying learning and using Groovy and look forward to seeing your insights regarding Groovy, Grails, and pattern design. I think you eloquently summarized in your blog post what I was trying to say. You particularly nailed it with my intent; although most blog postings state reasons a developer should blog for their own benefit (the "selfish" reasons in my post), I wanted to emphasize that software developers should also consider blogging on their experiences for the benefit of others.

Thanks for providing the feedback. It is nice to know that a blog post has been useful for someone.

Dustin said...

Chris Shiflett's Ideas of March post encourages developers in the PHP community to write more blogs.

Dustin said...

Sudheer has posted an interesting idea that helps developers gain some of the benefits of writing a software development blog: maintain a personal Wiki. The only disadvantage to this approach is that a personal Wiki is not likely to benefit the community, but perhaps a developer could take select Wiki entries and turn them into blog posts as they developed into something the developer felt was worth blogging on.

Dustin said...

Steve Yegge's You Should Write Blogs was written clear back in early 2005, but is still highly applicable.

Dustin said...

Why technical people should blog (but don't) is a recent blog post that addresses many concerns people have about writing technically-oriented blogs.

Dustin