For software project managers, CIOs and CFOs responsible for software development projects, this is my personal list of top ten considerations when approaching any software development project.
- Succinctly Define Success in Business Terms
In fewer than three sentences, describe the business goal of the software project – completely. Ensure that this is personally endorsed by the project sponsor. This is typically known as the project mandate.
- Use the Mandate
Keep the team focussed on the goals set out in the mandate. Through regular reference to the business goals, keep the team directed towards how it will be achieved – and little else.
- Involve End Users and Business Stakeholders
Software designers and analysts often second guess the needs of end-users, but there is no substitute to regular communication directly with users of the software and those affected by its implementation.
- Use small teams of highly competent technicians
A small team of highly competent people can achieve great success in software. Don’t be shy about paying for the best nor letting go of the weaker members of the team. Try to keep the core team size between three and seven people if possible.
- Focus on quality
Often people think that quality is a luxury that can only be achieved at the expense of schedule or more resources. Nothing could be further from the truth on software projects – especially large projects. A focus on quality and attention to getting things right first time, will reduce schedules and improve the liklihood of early customer satisfaction. Quality does not just refer to code quality but requirements quality. design quality, test quality and all other critical aspects of the project. How to achieve high quality throughout the project is the topic of another article, or many!
- Use Proven Project Management Techniques and Tools
By adopting proven and effective techniques, the project can maintain the discipline to focus on timely, quality delivery that meets the business needs. My personal favourites include: Prince 2 project methodology, Microsoft Project for planning, functional size measurement and estimation using ScopeMaster, prioritised risk management, prototyping for requirements elicitation, regular stakeholder meetings, test driven development, daily scrums, early end-to-end testing and an overall focus on quality and weekly risk reviews.
“You can’t manage what you can’t measure.” – a phrase coined by management guru Peter Drucker. This applies to software development as much as any other business activity. The first measurement in a software project is that of size. There is no better metric than Function Points. Using Function Points as the core metric for your project you can effectively measure and manage: estimation, vendor negotiation, cost control, scope (and scope creep), quality management, schedule adherence and risk reduction.
- Divide the project into independent smaller chunks
Large projects are more prone to failure than small ones. Try to break down your project into bite-size deliverable chunks, each with business attributable value and ideally independent of each other. This will minimise risk and reduce complexity.
- Stamp on complexity
Complexity will quickly bring a software project to its knees. Complexity in requirements should be eliminated first then complexity, then architecture and design. Finally, complexity in code should be measured and minimised. (I try to keep McCabe Complexity under 10)
10. Seek opportunities for re-use
We often consider re-using software libraries to build up an application capability as it can make a significant difference to the speed and success of the project. Code is not the only part of the project that can enjoy the benefits of re-use. Re-using project plans, requirements, designs, infrastructure (cloud services), test plans and the like can all save time and reduce risk. In all cases, ensure you only use high quality re-usable materials.