Building quality software products on time is an art that requires meticulous planning, execution & measurement with consistent shorter working software deliveries.
The fulcrum of all activities right from planning, execution, measurement and delivery must only be the Customer. Understanding the customer extrinsic & intrinsic expectations, and working backwards while not getting distracted or influenced by any other challenges such as team bandwidth, team expertise, tools, technologies and any other organisational internal challenges is the key to make any software project successful in the eyes of customers.
Following the 70:30 rule in the scope commitments helps in adapting to any changing requirements, unanticipated team level changes, process & technological risks, to enable the team to meet on commitments. This primarily means, identifying 70% of the scope as must-haves and remaining 30% as flexible scope items. This empowers the team with the ability to adapt to the changing requirements.
Avoid waiting to complete the entire project requirement analysis and planning before starting the project. It also helps to avoid rework or over work if you decide at last responsible moments. A moment just before the cost of delay outweighs the benefit of delay. Learn as much as possible before making irreversible decisions.
To deliver the expected product rightly on time with very minimal rework, seek customer feedback on a periodic basis with smaller working software.
Identify and track the appropriate project metrics and the product quality metrics such as velocity, burn down chart, burn down bar chart, burn-up chart, parking lot diagram, task board, defect rate, test execution metric, error prone areas of the product etc, enables the team and the stakeholders be on the same page in understanding the progress, the quality level of the product and the improvement areas for course correction.
The team that learn to fail fast, learn rapidly. So allow the team to take calculative risks & explore new ways. Empower the team to be self managed enabling them with tools and coaching as is required. And never forget to celebrate each and every smaller accomplishments within the team. This keeps the team highly motivated.
Identify dependencies and have appropriate plan to manage those dependencies. Have a hawk-eye on dependencies in action and watch out for any new dependencies being created during the project cycle.
Projects fail mainly due to wrong measurements and ineffective communication. And like they say, wars lost not because of soldiers because of generals. Project management team must ensure there is effective communication, right measurements & appropriate dependency management plan in action.