You are about to start a new project, congratulations! You are starting an exciting journey where you will gain new experience, learn some lessons and remove some barriers. You’ll figure out something here and there, but absolutely nothing that you can’t deal with. Unless, that is, you screw up the whole thing from the very start. If you are in software development, I bet you know how to do that. I certainly do.
Form the Team
Seek the best team members you can based on the projects needs. Size, complexity, technology and the nature of the project will determine the kind of people you’ll need. No matter what, though, you’ll need good people. Obviously, technical skills are important, but just as important is their enthusiasm and willingness to be part of the project.
To fully support the project, the project team will pull from all of these areas,
- Quality assurance
Roles will vary, but in general you’ll need people in each of these roles,
- Account executive
- Technical leader
- QA engineers
- Graphic designer
- Scrum Master
- Other support roles as configuration managers, etc.
In all case, be sure to pick the person best suited for each of these roles. Not only the most skillful, but also the most committed.
The Kick-off meeting is the first time that you will fully engage with your client, once all the sales stuff is out of the way and everything has come together. It is important to officially mark the start the project. At this meeting, everybody in the team gets to know each other and discuss everybody’s role.
A typical Kick-off meeting agenda should cover the following,
- Team introduction
- Roles of and contributions from the stakeholders
- Initial risks and issues involved
- Project objectives
- Criteria for successful completion
- Business objectives
- Responsibilities of each member
- Reporting procedures and communication plan
- Key milestones
It is very important to take time to set up the scaffolding for the project at this stage, before anybody starts coding.
Make sure that everybody’s expectations are clearly lined up. Success is not all just about coding, it also involves these, among others,
- Code review actors and strategy
- Version control repository (SVN recommended)
- Continuous integration environment
- Unit testing tools and environment
- QA strategy (QA automation is a must)
Make sure all involved understand that these are required, not optional tasks and activities required for the success of the project (e.g., No, you are not done until the unit tests are written and the code passes).
You also need to put some infrastructure in place right from the start, including,
- Local environments with required tools (e.g., IDE, Firebug, SVN, MSSQL, third party components, etc.)
- Testing, production and database servers
For the purpose of improving your performance over time, it is important to collect metrics (e.g., defects density, estimated v.s. real effort, etc). Put these tools in place so everybody knows how to use them, the time it takes to integrate them, etc.
Start Your Engines…
To set it in the right direction, it is very important to do these activities at the start of the project,
- Sprint planning, this is a commitment driven planning session where the team clarify requirements, make estimates and decide what features will be completed during the Sprint.
- To have a product backlog to contain feature estimates and assumptions.
- Define schedule for, and attend daily meetings.
- Build functionality within the Sprint, including architecture, design, code, unit testing, and code reviews.
- Release to testing through continuous integration.
- Debug functionality upon QA feedback.
- Release to production after every iteration. Your QA team plays an important role here.
- This will be based on the methodology you use (i.e., hopefully, Agile),
- Ensure your team is delivering quality and on a timely basis.
- The team is using best practices (e.g., continuous integration, unit testing, agile, etc.)
- The team is meeting client expectations and delivering value right from the start.
- Remove barriers, manage risks, improve communication every day (communication, like money, there’s never enough).
- Everybody in the team is committed and responsibilities are fulfilled.