Estimating Fixed-Price Projects

Martin Fowler has a great post about fixed-price projects. They, at ThoughtWorks, just doubled original estimate (so half a million becomes one million). It reminds me Estimation Games (exceptional Rob Thomsett’s article). He calls this game “Doubling and add some”.

I was taught this game in 1968 by Bob Smyth who, in those days, was the
smartest person I had ever met. Simply, you figure out [however you can] what
you think the task will take and then double it. So a 5 day task is quoted as a
10 day task.
Like all good games, I learnt the lesson of why you play when I
submitted my first ever estimate to my big boss and he immediately halved it.
Later, I realised there was a better version of this game. I quadrupled my
initial estimate so then, when my boss halved it I still had double [which
surprisingly I always needed]. Bob also showed me that by adding some float or
fudge factor usually around 20 – 40 % if I was halved, I still had some slack up
my sleeve [which surprisingly I also always needed].
Of course, the problem with this game is that everyone knows it why novice players are often caught out by bosses/clients who cut the estimate given by a novice by 3/4 when the novice has only doubled their bid. The other problem is that it never stops. In a version of bluffing as seen in poker, no one knows who has doubled or who have
multiplied by eight and so on.
Much later, when I was researching material for project management, I found that time and motion studies in the 1950’s had shown that the average lost time [meetings, waiting, talking and so on] in office work was around 50%. So the doubling game was based on some sound research.

Read the article and you’ll understand all defects of fixed-price projects estimation.

Throw out your favorites

I don’t like Favorites. I don’t like them in IE, in Opera and in FireBird as well. I don’t like the concept itself. Several days ago I tried to find some info about EJB. About a year ago I put into Favorites many useful links about Java and EJB, so I began to check them. And neither of 6 bookmarks work! After that I clearly understand that Favorites are useless…

I found a really perfect alternative solution – Onfolio. This application integrated with Internet Explorer and can capture and store almost all type of web content on your hard drive. That’s cool. Onfolio has very easy to use GUI, and I stick to it pretty fast.

In fact, Onfolio is a kind of Personal Knowledge Management tool, and this problem was quite important for me. So try it, if you don’t like Favorites.

Traditional Waterfall Methodologies destroy options

There is a very true post at Agile Business Coach blog about Waterfall methodology.

“Traditional Waterfall Methodologies destroy options by making decisions earlier than they need to be made.”

I think this phrase emphasize the main weakness of Waterfall. Sure, Waterfall has many weak points, and it is obvious for most experienced developers that Waterfall is just wrong choice for the vast majority of projects. Risk management in waterfall projects doesn’t help. Actually, there is too little space for risk management. You can’t step back and do some rework. You have a Plan. You have a Signed&Approved Spec. You can change them, but very often these changes take a lot of time. And time is one of the most important constraints in the project.

Waterfall is not agile, thus I don’t like it. At all.

However, I know that Waterfall could be used for certain types of projects. It can be used successfully for small, repeatable projects, where surprises are rare. But even for these projects iterative approach is more suitable. It’s just a common sense…

IntelliJ IDEA vs. Visual Studio 2003

I know, these are different platforms and such comparison maybe not very fare. But, anyway, IDE is an IDE in any environment… I am trying IntelliJ now, and will provide some thoughts about two world famous IDEs.

Features
There are many built-in features in IntelliJ. VS.NET has very few of them, but fast-growing community released many open-source plug-ins that close the gap. Some listed in the table below (If you know any other, please, email me : michael(at)targetprocess.com).

IntelliJ VS.NET
Ant integration NAntRunner Visual Studio .Net AddIn
JavaDoc integration

It seems that there is no such plug-in for VS.NET, but there is very good tool I like very much – GhostDoc. It automatically generates those parts of a C# documentation comment that can be deduced from name and type of e.g. methods, properties or parameters.

Built-In refactoring tool

ReSharper (much less functionality for now)

Refactory (supports more refactorings that ReSharper)

TODO. Very cool feature for me VS.NET also supports this, but in less attractive manner
Very good templates and automatic code generation features

ReSharper (well, Resharper bring this into VS.NET as well)

I think there are other tools like that, but don’t know any.

JUnit integration NUnitAddIn (allows to run tests right from VS.NET and simplifies tests debugging)

Build/Run options for Web Applications

First of all, I must say that I failed to get IntelliJ work with Tomcat server. I tried on two workstations and failed on both. There were no such problems with Visual Studio. I understand the reason. Many vendors trying to create a killer web/application server for Java platform. And IntelliJ have to support many of them. On the other hand, VisualStudio integrated with IIS only and doesn’t bother about all the other web servers (do you know any supporting ASP?).

As I mentioned, I got mysterious error from IntelliJ and tried to find answers on support forum and knowledge base. All I’ve found was a single page in Google with the same question, but without answer. So I’ll continue my fight today’s evening. By the way, VS.NET has greater community. All questions I had about VS.NET were resolved (well, sometimes it took time)

More to follow…