Thursday, May 31, 2007

5 Traits of a Successful Project

Why do some companies, I.T. teams, or project leaders always seem to complete difficult implementations successfully while others struggle? The reason is that there are similar actions taken on most, if not all, successful technology implementations. Regardless of the development methodology employed, leaders should do the following to make sure every major project has a shot at success.

1. Balance demand with capacity.
One of the most important traits of all successful organizations is the balance between demand and capacity. Successful governance committees know with accuracy the available capacity of their technology implementation teams. When this committee commits to a project, it knows demand and capacity are balanced. In other words when it commits the troops, the committee recognizes it has sufficient resources to carry out the mission. Projects descend into chaos when demand exceeds capacity. Most of you, I wager, have witnessed the chaos of over committed implementation teams. Committees on the right side of this issue avoid creating a mess for themselves.

2. Dedicate resources the team can count on day in and day out.
Successful projects have resources the team can rely on. If a person is dedicated, for example, 50% of the time to the project, this doesn't mean 45% or 25%. It means the project leader knows he or she has 50% of that person's time - guaranteed. Before the successful implementation begins, the project manager details the type and number of the human resources required for the project. Then the organization provides those resources and keeps them dedicated.

3. Include skilled business analysts on the implementation team.
Successful implementations are based on a thorough business analysis of desired outcomes. Insightful business analysis relies on skilled and experienced investigators, whose curiosity drives them to discover the heart of an issue or problem and then participate in devising a solution. In-depth business analysis, at the conclusion of the implementation, leads to a "Wow!" from users of the new system, not an "Oh, that is not what we wanted." I predict that in the next several years implementation teams will routinely include business analysts who are certified by the International Institute of Business Analysis, because business analysis is fast becoming a profession, not a part-time job.

4. Rely on project managers that exemplify mature professionalism.
Successful implementations always have at their head experienced, mature project managers who know the science of project management and possess leadership skills to rally the troops. These leaders inspire confidence. They listen and get out from behind their desks. They make sure the project team is trained on and uses calibrated project management tools. Competent project managers know on any given day within 10% where a project is in terms of cost and progress. These project leaders serve as a hub for communications - sending information down from the governance committee and up from the implementation team.

5. Make fact-based decisions.
The one unvarying trait competent project leaders possess is honesty. They give truthful evaluations and are mature enough to make timely reports on bad news to the governance committee. This unflinching honesty makes it possible for the organization to kill "bad" projects before they waste resources and destroy morale. This is in itself a measure of success - limiting risk and loss to the enterprise. Successful project leaders have both responsibility and authority. For example, they have the authority to dedicate additional resources should that become necessary.

Successful governance committees are trained on and use portfolio management tools. This means that they have a window into the process and make fast effective decisions to stop small problems from becoming major ones. These committees are integrated into an effective two-way flow of information down to the project leaders and up from the implementation team. Fundamentally, it does not seem to matter whether an organization subscribes to agile project management, waterfall model, incremental, spiral, scrum, crystal, lean development, or the project management body of knowledge (PMBOK). Success truly rests on:

  • A governance committee that balances capacity with demand
  • Sufficient, dedicated, equipped, and experienced resources
  • Thorough business analysis
  • Mature, secure, honest project leaders who have responsibility and authority
  • Fact-based decisions

These organizations have done everything humanly possible to ensure that technology implementations either deliver business improvements or are cancelled before they waste precious resources.

Wednesday, May 16, 2007

14 rules for fast web pages

Steve Souders of Yahoo's "Exceptional Performance Team" gave an insanely great presentation at Web 2.0 about optimizing website performance by focusing on front end issues. Unfortunately I didn't get to see it in person but the Web 2.0 talks have just been put up and the ppt is fascinating and absolutely a must-read for anyone involved in web products.

His work has been serialized on the Yahoo user interface blog, and will also be published in an upcoming O'Reilly title (est publish date: Sep 07).

We have so much of this wrong at topix now that it makes me want to cry but you can bet I've already emailed this ppt to my eng team. :) Even if you're pure mgmt or product marketing you need to be aware of these issues and how they directly affect user experience. We've seen a direct correlation between site speed and traffic.

This is a big presentation, with a lot of data in it (a whole book's worth apparently), but half way through he boils it down into 14 rules for faster front end performance:

  1. Make fewer HTTP requests
  2. Use a CDN
  3. Add an Expires header
  4. Gzip components
  5. Put CSS at the top
  6. Move JS to the bottom
  7. Avoid CSS expressions
  8. Make JS and CSS external
  9. Reduce DNS lookups
  10. Minify JS
  11. Avoid redirects
  12. Remove duplicate scripts
  13. Turn off ETags
  14. Make AJAX cacheable and small

The full talk has details on what all of these mean in practice. The final slide of the deck is a set of references and resources, which I've pulled out here for clickability:

book: http://www.oreilly.com/catalog/9780596514211/
examples: http://stevesouders.com/examples/
image maps: http://www.w3.org/TR/html401/struct/objects.html#h-13.6
CSS sprites: http://alistapart.com/articles/sprites
inline images: http://tools.ietf.org/html/rfc2397
jsmin: http://crockford.com/javascript/jsmin
dojo compressor: http://dojotoolkit.org/docs/shrinksafe
HTTP status codes: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
IBM Page Detailer: http://alphaworks.ibm.com/tech/pagedetailer
Fasterfox: http://fasterfox.mozdev.org/
LiveHTTPHeaders: http://livehttpheaders.mozdev.org/
Firebug: http://getfirebug.com/
YUIBlog: http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
http://yuiblog.com/blog/2007/01/04/performance-research-part-2/
http://yuiblog.com/blog/2007/03/01/performance-research-part-3/
http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
YDN: http://developer.yahoo.net/blog/archives/2007/03/high_performanc.html
http://developer.yahoo.net/blog/archives/2007/04/rule_1_make_few.html