The Art Of Software Development (part 5): Adding Value - Parting Shots (
Page 6 of 6 ) Before I go, one final parting shot - a broad list of things you should
do (and things you should avoid at all costs!) in your journey over the
software development landscape.
- Define and adhere to specific goals. Don't begin implementation of a
project until you're sure you have *all* the requirements defined and
approved, the priorities clearly mapped, and all the resources, assets
and sample data are in place. The absence of clear goals can affect the
motivation and productivity of your team, as can shifting priorities and
a lack of direction.
- Work and manage to a plan. The software development plan you create in
the early stages of the project contains detailed information on how the
project will be executed, and you should follow it as closely as
possible. Equally important, be sure to update the plan on a regular
basis with re-estimations, schedule changes and deviations, and ensure
that all your team leads have the latest copy at any time.
- Perform regular re-estimations. It's important to regularly analyze
the progress of the project and re-estimate the time, effort and expense
involved; this helps in proper resource (re)allocation and assists in
better planning. If a re-estimation results in an unavoidable delay to
the committed delivery date, inform your customer in a professional
manner, together with the reasons for the delay, and alternatives
available (if any exist).
- Be wary of feature creep. Every change to previously-defined
requirements, no matter how small, has an impact on your development
plan and estimates. Don't implement changes without first making a
detailed assessment of how they will impact the project schedule and
budget, and ensure that each change request (and its impact) is
thoroughly reviewed with your customer before it is executed.
- Don't compromise on quality. Poorly-written or inadequately-tested
code will come back to bite you later. Avoid the temptation to meet a
tight deadline by reducing the time spent on product quality assurance,
and take your responsibility to deliver zero-defect software seriously.
It's the best way to make your customers happy, and make sure they call
you first the next time they needs a contract executed.
- Don't favour processes over creativity. A process is valuable, but
only as a guideline; it does more damage than good when it begins to
stunt creative thought. Encourage your developers to experiment with new
technologies or techniques wherever possible; it's the only way they'll
learn new things. Some experiments will fail and some will succeed; all
of them will teach you something.
- Learn from your mistakes. No process is perfect, and no person
infallible. You should audit your project as it passes through different
stages, make notes of how and where improvements are possible, and use
that learning in subsequent projects. To paraphrase George Santayana,
those who fail to learn the lessons of history are condemned to repeat
it.
And that's about all I have time for. I hope you enjoyed this series,
and that it provided you with some insight into the processes and
techniques that make for successful software development. Now...go
practise!
Note: Examples are illustrative only, and are not meant for a production
environment. Melonfire provides no warranties or support for the source
code described in this article. YMMV!
|