Drawn from lessons learned from the trenches, after 15+ years’ experience in implementing IT solutions, here is a list of ten key contributors to project success. Of course, projects and customers will always be unique, so what works well in one case may not work in another.
1. Agree on what you mean by project success
How have you defined project success? Even though project managers are mostly focused on the triple constraints of time, cost and scope, different people define success in different ways. Just because a project was on schedule and within budget doesn’t mean that the customer was satisfied. It is important to have a clear picture early on of what the project priorities are and how success will be judged. This will ensure that all the stakeholders are aware of these priorities and help them work towards the same goals.
2. Establish a clear vision early on
Ask any implementation team and they will say that sometimes they found themselves doing work that wasn’t originally planned. Instead of falling into the trap of implementing uncontrolled changes, it is important to step back and ask yourself: is this work in line with our original goals? Or are we trying to solve the wrong problem? Change should still be seen as a competitive advantage, but only if it is managed in a controlled way, in line with the project vision. By establishing a clear vision at the very beginning, we can avoid getting sidetracked and steer the project in the right direction.
3. Be willing to say ‘no’
Ever handed over a project that had an unrealistic plan but you kept quiet because you didn’t want to scare the customer? Or architecture that needed to evolve but was never designed to support the extensions requested? What about a user interface feature that looked fancy but couldn’t be reasonably implemented and maintained with the technical framework adopted 10 years earlier? We should all come to terms with the fact that bad news is sometimes unavoidable and sweeping it under the rug will only make things worse later on. In these cases, it is better to avoid excuses or workarounds and just say ‘no’. In the end, the customer will appreciate your honesty and courage, or at the very least you will have avoided a failed project.
4. Build trust across teams
Information and communication technologies have made the world a global village. Geographically dispersed teams, both on the contractor’s and the customer’s side, are now a typical arrangement for management, development, testing, infrastructure, operations and the helpdesk. Without the appropriate online tools the sheer scale of this communication and collaboration task would be daunting. Tools, however, are not enough; we should also strive to be transparent and cultivate an honest communication approach among all the teams, including the customer’s. Times may get tough. But only by avoiding the blame game, being open and building trust can we form a unified team that works efficiently towards a shared goal.
5. Negotiate a variable scope
Have you ever been asked to implement a solution with a detailed scope based on a fixed-price contract? And then found yourself with missed deadlines or overruns that have to be compensated by change requests later on? Wouldn’t it have been better if you had been transparent with your customer and tried to negotiate a variable scope that was progressively elaborated based on real implementation progress, always in line with the high-level project goals? Such an agile approach ensures the delivery of the right solution on time and on budget, giving the best value for the customer’s money.
6. Plan, and plan again
Promised a delivery date but forgot to provide enough contingency to accommodate last-minute changes and delays? Thought that the deployment to the production environment would be easy and skipped release rehearsals or earlier deployments to production-like environments? Deferred data migration analysis to the end, only to discover later that you needed to refactor parts of the application to make the transition feasible? Without involving all the key stakeholders in the planning, including the technical teams, and paying special attention to detail, a project plan can go off track in a thousand ways. Even with a realistic plan things can still go wrong, so it is important to plan, and plan again. And as they say, it is the planning process that matters, not the plan itself!
7. Hands-on user experience
Sketches, user stories, mock-ups, wireframes, navigation maps and process diagrams are typical artefacts that we create when trying to elicit our customers’ requirements. As important as these may be, nothing comes close to hands-on experience of the real product. It is usually only at this stage that customers really understand the potential of the solution, and even change the perception of their own needs. Only by maintaining a lively and ongoing dialogue with our customers through an agile, iterative process that allows for a continuous pre-validation of the product being built, can we deliver a solution that truly matches or even exceeds the customer’s expectations. And it is far better to conquer the fear of negative feedback in the initial phases, rather than wait for the big bang at the end. In other words, fail fast to succeed slowly!
8. Empowered and active product owner
How many times have your projects stalled while your team waits for a critical decision on some business requirement that never came or came late? How often have you been asked to implement inconsistent requirements from different stakeholders? The road to success is not easy and there will always be a need for someone to make the difficult decisions. Bringing on board a product owner with the proper decision-making authority can really help in nailing down the requirements and getting timely and consistent answers to critical questions.
9. Attack risk before it attacks you
People don’t like taking risks and have a tendency to take the easy way out. During the early phases of a project we may be tempted to start implementing the easy features first so as to demonstrate progress and keep the customer happy. What we don’t know, or perhaps try to forget, is that this is a fast way to build up debt and we will have to pay for it later. So the next time you think about deferring performance and load testing to the last month, think again!
10. Skilled, motivated resources make all the difference
You need to crash the schedule but you only have two skilled software developers available. Or you urgently need to accommodate an unexpected task but there is no generalised specialist on board, so you need to ask for assistance elsewhere; and accept the delays. Sounds familiar? Talented employees with a variety of skills are always hard to find, but they are the ones who ultimately make the difference. Creating and retaining such a pool of skilled and motivated workers willing to go the extra mile is the key that unlocks all doors.
Konstantinos Limitsios, Senior Project Manager