# Wednesday, 07 July 2010


It’s no secret that software developers, managers and analysts do a poor job estimating projects. Few IT projects complete within the time they are estimated and far more go over the original estimate than under it.

Steve McConnell knows how difficult estimation can be His 2006 book Software Estimation is subtitled Demystifying the Black Art.

Developing reasonable estimates of software projects may not be a black art, but it does cause problems and most people fail at it for a variety of reasons.

McConnell refers to estimation as an art, not because it has no basis in science, but because formulas don't tell the whole story. Experience and difficult-to-measure inputs are required to generate a complete estimate. And even then, you may still get it wrong.

When McConell lists sources of estimation error (subjectivity, missing tasks, unwarranted optimism, excess precision), it's startling how many of those factors I have experienced or contributed in my own career.

The author provides various methods for creating an estimate and guidance on improving the accuracy of your estimates. Among his advice is:

  • Base your estimates on something you can measure - preferably historical data on similar projects in your own organization. Estimates based on measurable data are far superior to those based on subjective criteria.
  • Estimates are never precise (they're not called "exactimates"). Present estimates as ranges and don't include more significant digits than your inputs can justify.
  • If possible, get effort estimates from those who will actually perform the work. Developers vary in how quickly they can accomplish a given task - sometimes that variance is in orders of magnitude.

If part of your job includes estimating software projects, this is an essential book to guide you. Like most of McConnell’s books, I recommend it.

Wednesday, 07 July 2010 15:50:10 (GMT Daylight Time, UTC+01:00)
# Tuesday, 06 July 2010
Tuesday, 06 July 2010 21:28:51 (GMT Daylight Time, UTC+01:00)
# Monday, 05 July 2010

Here is a fun slideshow of photos I took at the Codestock Developers conference in June

You can view all my photos from Codestock here.

Monday, 05 July 2010 00:02:00 (GMT Daylight Time, UTC+01:00)
# Friday, 02 July 2010

Today, I received a message from Microsoft awarding me a Microsoft Most Valuable Professional (MVP) in Visual C#.

I have been aware of this award ever since my friend Nino earned one years ago. I never quite understood the selection criteria but I knew that it was recognition of a willingness to share knowledge with others in the community. Since sharing knowledge is something in which I a lot of take pride, I am happy to be recognized for this.

A Microsoft employee once told me that he wouldn't nominate anyone who sought to become an MVP, so I never tried to reveal any aspirations, working in the community because I enjoyed doing so. I even joked about it, posting an e-mail on this blog from Mike Woelmer, who nominated me as an NVP (Not Very Professional). But the truth is that I did want this award and that I am excited and proud and grateful to receive it.

I want to publicly thank Jennifer Marsman and Alan Stevens who nominated me. I was told that some other folks said nice things on my behalf as part of this process. I don't know who they all were, so I won't list them here, but know that this was much appreciated.

I am aware of some tangible benefits - software, admission to the MVP summit, access to the product team - and I know there are a few other benefits that I haven't sorted through yet. But, for me the most important benefit is recognition by my peers.

And for that I am grateful.

Friday, 02 July 2010 00:33:55 (GMT Daylight Time, UTC+01:00)
# Wednesday, 30 June 2010
Wednesday, 30 June 2010 22:58:30 (GMT Daylight Time, UTC+01:00)
# Monday, 28 June 2010

Mike Neel does an amazing job with Codestock. Two years ago, he (along with Alan Stevens) introduced open spaces to the heartland; Last year, he wrote an application that allowed attendees to vote on their favorite sessions; and this year, he held the keynote in an classic movie theater and invited Rachel Appel to talk about community and bring onstage others to give their views of community.

Two days after Codestock (and a day after a 9-hour drive home from Knoxville, TN), I’m still processing the information learned.

I delivered two presentations and hosted a discussion panel. My first presentation – Writing Your First ASP.Net MVC Application – was well-received. I love showing people how accessible a hot technology like MVC is. In the afternoon, I gave a 2-hour presentation on An Introduction to Relational Database and T-SQL. I had no slides: I spent most of the talk showing examples of writing T-SQL code to modify schemas and data. I wasn’t sure if anyone would be interested in this topic, but I heard some positive feedback. Many in the audience were experienced C# developers, who knew very little about the data they were accessing; and there were a couple experienced people who listened to get ideas on teaching this topic to others.

Because I had 4 hours of material to present, I spent most of Day 1, delivering or preparing my presentations. As a result, I was unable to observe much of the conference on Friday. My evening was free, so I was able to enjoy a nice dinner with about 20 folks from the community, watch the keynote, and hang out in the hotel lobby talking with developers from all across the US and Europe. I also sneaked in the filming of a couple episodes of Technology and Friends.

Saturday, my only responsibility was hosting a Panel Discussion – How to Put on a Great Conference. I did one really smart thing: I invited some really smart people to be on the panel. Because of this, I had to do very little during the discussion. I would ask an open-ended question, such as “What is the first thing you need to think about when planning a conference” and the conversation flowed with many great ideas exchanged. (The most popular answers to this question were venue, date and goals).  Jamie Wright made a video recording of this session and I plan to release it soon as an episode of Technology And Friends.

I was able to watch a few sessions on Saturday.

Chris Woodruff asked me to film the premiere of a new talk he created called “Embracing Failure”. Chris emphasizes that we should examine our shortcomings, accept responsibility for them and use them to improve ourselves.

Patrick Foley gave a presentation on becoming and independent software vendor (ISV). Patrick suggests that you don't try to tackle every feature on every platform: Instead, start by focusing on one platform and do something better than everyone else.

In Nathan Blevins’s Mindstorming presentation, he showed off programs that controlled a car, making it drive, turn and automatically avoid falling off a ledge.

Saturday evening included a dinner sponsored by Telerik (Thanks Rob and Sasha) and a trip to Alan Stevens’s house for an evening of ping pong, cigars and fellowship.

During my time in Knoxville, I also spent a lot of time picking the brains of other attendees and speakers. I met a lot of intelligent and passionate people at this conference.  I was late for dinner every night because I found myself engaged in a conversation with someone about error handling or MVC view engines or search engine optimization or one of  dozens of other topics. Often I turned on the camera when I realized how much information I was getting from a conversation, so many of these talks will be available on future shows.

As with most conferences, it was the people that made this one. Codestock attracts many of the same people that attend local events in Michigan and Ohio. But it also draws people from New York, Philadelphia, Atlanta, Alabama, and many other parts of the country. There were even people from Manitoba, Canada and from the United Kingdom.

I’m already looking forward to my next trip to Tennessee (DevLink in Nashville in August) and my trip to Codestock next year. Let me know if you will be there.


More photos from Codestock

Monday, 28 June 2010 18:26:38 (GMT Daylight Time, UTC+01:00)
Monday, 28 June 2010 11:35:26 (GMT Daylight Time, UTC+01:00)
# Wednesday, 23 June 2010
Wednesday, 23 June 2010 11:42:27 (GMT Daylight Time, UTC+01:00)
# Tuesday, 22 June 2010

The Elements of Style by William Strunk Jr and E.B. White changed my life.

In 1919, E.B. White was a student in William Strunk Jr's Cornell English class. The course textbook - written by Strunk a year earlier - impressed White enough that he decided to revise and expand it 40 years later.

While Strunk's version focused primarily on rules of proper English grammar, White added sections on writing style.

White argued that writing can be grammatically correct but poor quality, if it lacks good style. In his revised edition, White established guidelines by which a writer can improve his or her writing style.

The book has been revised several times over the years as the English language and the audience have changed and evolved.

The major points of the Elements of Style are

  • Know the basic rules of grammar. Be aware of the most common errors of grammar and spelling.
  • Tell your story in a clear and straightforward manner. The message is more important than the style.
  • Be Concise. Wasted words dilute your writing.
  • Excessive adjectives, adverbs and qualifiers detract from your message. Eliminate them.
  • Choose established usage, before deviating

Most of these rules can be broken, White tells us.

The Elements of Style is often criticized because many great writers ignore this book's advice. But White does not claim to preach dogma: He provides guidelines that will improve most writing.

But we should understand the rules that we are breaking and we should break them for good reason.

If you do any writing in English, you will benefit from this book. At less than a hundred pages, the time investment is small but it packs more information than much larger books.

This is a book that I read every few years because it reminds me of the power of strong, concise writing.

Tuesday, 22 June 2010 11:39:35 (GMT Daylight Time, UTC+01:00)
# Monday, 21 June 2010

Episode 95

Jay Wren on Mono

Monday, 21 June 2010 05:29:25 (GMT Daylight Time, UTC+01:00)