Now that you’ve created the project plan, it is an exciting time. You get to kick off your project! You must first recruit a team. Ideally, choose people who have a history of collaborating well together. Pick a good mix of people – some senior and some junior.

Remember that your goals are to give the senior members leadership experience, and also to get the junior members to better their technical expertise. Clearly establish rules up-front. You must make sure the team members know whom to approach for small technical issues, big roadblocks, and technical help.

If a senior team member is responsible for a junior member’s work, make sure that you give the senior member the authority to meet that responsibility. Responsibility and authority must always go together. If Bob is responsible for a task’s success, but Ivan who is implementing that task is not accountable to Bob, then Bob will be ineffective in ensuring the success of the task.

Tip: Try to ensure that for any key piece of functionality, 2 people are in the know. If you rely on only one person, and that person is unavailabe due to some unforeseen reason, the project will be in trouble.

Make sure everyone is aware of the schedule for the project as well as intermediate milestones. It is important to get everyone on the same page as early as possible so that they can plan their execution.

Go easy on the documentation here. Some of the major/complex tasks should have their design documented, but not every single task. UML can be useful in this kind of documentation, but don’t go overboard and try to document detailed class diagrams for every single class. (This is just duplicating the implementation.) Instead, if there is a complicated control flow or multithreaded functionality, draw sequence diagrams to make it clear.