Friday, May 04, 2007

Lights, Camera, Action! Project Planning & Execution

As you can see, I haven't been blogging for a while. I spent half of 2006 and most of 2007 on a project that, quite frankly, made me question my will to live.

2008 is being kinder. Just finishing up phase one of a rather enjoyable project. Phase two is coming up and couple of other smaller projects are about to kick off.

After sitting down and watching an episode of "So you think you can dance?" with my wife this evening, I decided to spend a few moments before bed reading posts from some of my favorite bloggers. I guess I have been inspired, so consider this an attempt at "So you think you can blog?"

I started to write the following last year, during that "challenging" project. I am not sure why I didn't post it at the time. Oh well, no point in wasting the words :-)

James
Atlanta
June 2008

I can see the light at the end of the tunnel. Another project is drawing to a close. It has been a wild one. By the time we are done it will have been two and a half years of blood and sweat. (Actually, only a year and a half for me, but I was using the royal "we")

At this point in a project I try to look back and consider the good and the bad, the highs and lows, etc. I think of the way things would have been done in an ideal world and recall the numerous reasons why compromises had to be found for "this", for "that" and for "the other".

We faced many challenges on several fronts: technical, political and of course, financial. This is normal. Any project with a large scope will experience all of these things to varying degrees. It the way we deal with them that counts.

When I boil it all down. Distill my experiences of this project and those projects passed, I come to the conclusion that any project dealing with Information technology, be it integration or otherwise, will always be successful given the following items:

During planning:
  • Make realistic estimates. There is no point in under estimating just to win the business.
  • Add more wiggle room to the project plan for red tape for the larger corporate customer
  • Allow enough time for testing
  • Assume that bugs will be found and allow enough time to resolve and re-test. Testing is an iterative process
  • Where appropriate make time to load test and measure performance. This is also an iterative process
  • Assume a 40 hour working week. Morale and quality go out the window if time lines are too aggressive.
Before writing a line of code:
  • Document unit tests
  • Prepare data for each unit test
  • Create a backup of prepared data
  • Create routines to automate unit testing
  • Prepare a source control repository
  • Create routines to automate the build/compile from source
  • Document Standards & Conventions
During development:
  • Build the application every night
  • Restore test data and run regression tests every night
  • Peer code reviews
  • Re-factor code without mercy; Quality should be the primary focus
  • Stay in touch with Subject Matter experts (especially important for legacy integration)
  • Team meeting for 30 minutes at the start of every day. Identify road blocks, share information, share the "big picture"
  • Maintain morale; celebrate milestones as a team. Especially important for projects that will run for a long time.

Continuity of Staff is essential if deadlines are to be met as is a strong project manager. Tech Leads who understand that to lead is to serve. SMEs are your friends.

James
Atlanta
May 2007