HomePractices Page 6 - The Art Of Software Development (part 5): Adding Value
Parting Shots - Practices
So you think releasing a software product is the end of theroad? Not by a long shot! In this final article, find out what goes intothe post-release phase of the software development cycle...and how youcan use it to make both your customer and your accountants happy.
Before I go, one final parting shot - a broad list of things you shoulddo (and things you should avoid at all costs!) in your journey over thesoftware development landscape.
Define and adhere to specific goals. Don't begin implementation of aproject until you're sure you have *all* the requirements defined andapproved, the priorities clearly mapped, and all the resources, assetsand sample data are in place. The absence of clear goals can affect themotivation and productivity of your team, as can shifting priorities anda lack of direction.
Work and manage to a plan. The software development plan you create inthe early stages of the project contains detailed information on how theproject will be executed, and you should follow it as closely aspossible. Equally important, be sure to update the plan on a regularbasis with re-estimations, schedule changes and deviations, and ensurethat all your team leads have the latest copy at any time.
Perform regular re-estimations. It's important to regularly analyzethe progress of the project and re-estimate the time, effort and expenseinvolved; this helps in proper resource (re)allocation and assists inbetter planning. If a re-estimation results in an unavoidable delay tothe committed delivery date, inform your customer in a professionalmanner, together with the reasons for the delay, and alternativesavailable (if any exist).
Be wary of feature creep. Every change to previously-definedrequirements, no matter how small, has an impact on your developmentplan and estimates. Don't implement changes without first making adetailed assessment of how they will impact the project schedule andbudget, and ensure that each change request (and its impact) isthoroughly reviewed with your customer before it is executed.
Don't compromise on quality. Poorly-written or inadequately-testedcode will come back to bite you later. Avoid the temptation to meet atight 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 callyou first the next time they needs a contract executed.
Don't favour processes over creativity. A process is valuable, butonly as a guideline; it does more damage than good when it begins tostunt creative thought. Encourage your developers to experiment with newtechnologies or techniques wherever possible; it's the only way they'lllearn new things. Some experiments will fail and some will succeed; allof them will teach you something.
Learn from your mistakes. No process is perfect, and no personinfallible. You should audit your project as it passes through differentstages, make notes of how and where improvements are possible, and usethat learning in subsequent projects. To paraphrase George Santayana,those who fail to learn the lessons of history are condemned to repeatit.
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 andtechniques that make for successful software development. Now...gopractise!
Note: Examples are illustrative only, and are not meant for a productionenvironment. Melonfire provides no warranties or support for the sourcecode described in this article. YMMV!