There is much to consider to ensure good delivery on projects.
There is no single factor for this, but there are common elements in
the inventory that always need assessment and application. The most
important element is structured and consistent communication. So many
projects get off to a good start when all the news is hopeful, but
communication lessens when there are risks, issues and concerns that we
don't like to discuss. These are the key areas to manage that breed
success. Risk and issue management and constant focus on reasonable
deliverables and scope are the key ingredients to ensure communication
and delivery. A key approach to manage this is Agile development
methods. This approach has been "rebranded" and matured over the
years, but whether it is called XP, SCRUM, Rapid Application
Development, Iterations, Rapid Prototyping or some other name, a key
focus in all these development approaches is delivery of working code
and architecture early with strong communication and involvement with
the customer. Even in waterfall implementations, verification of key
architecture and technology early in the process with key business
functions is key to mitigate risks. This done with collaboration on
POC's (proof of concept) to review and manage high risk areas of the
project have proven to be one of the most important factors for success.
Requirements
and scope management through iterations and agreement with the customer
is another factor that is essential for success and to verify
expectations. All requirements are not equal and a balance of key
business ROI and technical risk for initial iterations ensure the
technical and business stakeholders have a clear understanding of
priorities and why we are working certain features first. This also
allows for an earlier baseline system and the inherent benefits of a
tangible design (a working system) that can evolve with significant
user input and excitement vs. specifications on paper. A working
specification (code) is what we strive for.
Good sound
principals such as clear definition of roles and responsibilities,
project planning and milestones, risk management, and scheduled
progress reviews are fundamentals that we always employ to ensure
communication. These processes and related deliverables vary depending
on the project needs and complexity, but experience on what techniques
to use and flexibility in our development process depending upon the
needs are what makes each project challenging and interesting. In the
RUP (Rational Unified Process), this process is part of the Environment
Workflow. This flow includes setup of the environment for
infrastructure, development, testing, and equally important the
management and process configuration approach and
deliverables/artifacts needed to manage the project.
Although we
start with a common process for projects, experience and collaboration
are the two key factors to provide the insight and flexibility that
every project needs. Experience with varied projects, industries,
understanding varying levels of risk and needed controls, and
collaboration techniques all come into play to set the stage for solid
execution and delivery. An extensive framework and the experience to
use it is essential to balance controls and consistency with the
flexibility on each project and customer.