The Blog

When you absolutely cannot fail

published February 13, 2010

Two days ago I had my wisdom teeth removed. It turned out that both teeth on my lower jaw were growing horizontally and their roots lied in the close proximity of nerves. In this case there is a small chance of nerve injury during the surgery. Luckily, everything went as planned, thanks to professionals who knew how to do their job.

Of course in these cases you will want absolutely the best people on the job. Last night before the surgery I wondered what is a IT equivalent for this case, what do you do when your project absolutely cannot fail?

For this exercise to be reasonable, we have to give us some constraints. First of all, we cannot use multiple teams to do same job in parallel. Secondly, we cannot prolong implementation forever.

So what are the ingredients?

Hire a team

  • Hire professionals.
  • Hire people who are enthusiastic.
  • Have variation in team.
  • Hire people who are hands on.

Goal

  • Have clear vision what you want to accomplish.
  • Have clear goals and scope.
  • Communicate vision clearly and often.
  • Ensure that solution fits into overall strategy.
  • Ensure that everyone involved knows your vision and goals.
  • Ensure that project has senior management support.
  • Calculate ROI.
  • Know the problem solution solves.

Business requirements & constraints

  • Know business requirements.
  • Know availability requirements.
  • Know anticipated user loads.
  • Know non-functional requirements.

End Users

  • Engage users early.
  • Test high fidelity prototype with end users.

Team roles

  • Project Leader; A Person who provides solid leadership for the project and manages it.
  • Architect; A Person who is responsible of the architect and who also writes code.
  • Tester; A professional who ensures quality with other team members.
  • Developers; People doing design and coding.
  • User interface designer; A person who is responsible for actual user interface design.
  • User interaction designer; A person who will be making interaction design for the UI.
  • Product owner; One person, who prioritizes backlog and knows vision inside out.

Methodology

  • Use agile methodologies to deliver value in short iterations.
  • Have clear definition of Done.
  • Know your velocity.
  • Continuous improvement using retrospectives.
  • Do not let technical dept to pile up.
  • Have a prioritized backlog.
  • Have a release plan.
  • Release often.
  • Start up with minimal product.
  • Use TDD.
  • Use Personas.
  • Have architecture guidelines and follow them.
  • Have a coding standard.
  • Develop an high fidelity prototype first.
  • Have slack.
  • Work closely with business.
  • Work at sustainable pace.
  • Have project status up-to-date and visible to everybody.
  • Do pair programming now and then.
  • Do formal design reviews.
  • Do formal code reviews.

Technology

  • Use proven technology.
  • Use productive technology.
  • Do not use just released versions of products.
  • Beware of product/framework hype.
  • Minimize used technologies.
  • Know used technologies inside out.
  • Focus on quality code.
  • Do not let code clutter.
  • Have clearly defined architecture.
  • Use a Bug tracker.
  • Use Version control.
  • Write as little code as you have to.
  • Implement vertical slices early.
  • Keep it simple.
  • Focus on rich domain model (Domain Driven Design).
  • Do POCs when in doubt.
  • Use set based design.
  • Use static code analyzing tools.
  • Use a profiler.
  • Use Continuous Integration.
  • Use a memory analyzer.
  • Implement risky things first.
  • Refactor when needed.
  • Use design patterns.
  • Buy tools you need.
  • Have identical development, test and production environments.
  • Use a web speed tester.
  • Use caching.
  • Focus on clustering early on.
  • Make deployments as fasts as possible.

Documentation

  • Have up-to-date documentation of core components.
  • Use wiki.
  • Document all implemented user stories.
  • Document architecture from different perspectives.

Automation

  • Automatize installations.
  • Continuously automatize manual tasks.

Testing

  • Have comprehensive test suite.
  • Have unit and automatic acceptance tests.
  • Test all documented user stories.
  • Test performance early.
  • Test security early.
  • Do exploratory testing often.
  • Test synchronization often.

Project management

  • Keep it simple.
  • Develop an initial project plan.
  • Gather and analyze data.
  • Manage risks.
  • Know your budget.
  • Do not micromanage.
  • Keep meetings in minimum.

Group dynamics

  • Believe in yourself.
  • No part time members.
  • Have team take ownership of solution and time estimates.
  • Make the Quality a team effort.
  • Celebrate success.
  • Develop an enthusiastic and quality focused group prototype.
  • Develop a learning environment.
  • Share information.
  • Minimize turnover.
  • Develop a positive group affective tone.
  • Develop a stop and fix culture.
  • Collocate team.
  • Have private and cozy workplace with enough room.
  • Have good working conditions.
  • Protect the team from outside disturbances.
  • Make work fun.
  • Coach team.

Huh, that was a long list and I am sure I forgot something.

Samuli @ 19:15 (No Comments)

tags:

Trackback URL

No Comments to When you absolutely cannot fail
top











b

Subscribe to RSS feed

The Tag Cloud
The Blog Archive

February 2012 (1)

January 2012 (1)

November 2011 (1)

June 2011 (2)

May 2011 (1)

April 2011 (2)

March 2011 (2)

February 2011 (1)

January 2011 (1)

December 2010 (1)

November 2010 (1)

October 2010 (3)

September 2010 (3)

August 2010 (5)

July 2010 (2)

June 2010 (3)

May 2010 (4)

April 2010 (2)

March 2010 (6)

February 2010 (7)

January 2010 (3)

December 2009 (7)

November 2009 (6)