Software Development Project Tips to Ensure Success
Most software development projects fail…
The Standish International Group reports that only 16.2% of software development plans were finished on time and on budget. 52.7% launched with less features and functions than initially planned, and 31.1% were completely canceled.
80% of software development projects fail – fail at meeting their deadline; they fail at staying within their budget; or fail at providing their originally intended functionality.
But it’s not all bad news. There are several tried and trusted practices and structures that can be put in place to ensure your software project is successful.
Connect with the Right Tribe
Recruiting talent with the relevant experience and skill sets is vital, but there’s more to it than that. You need to connect with the right software development tribe or company. A good tribe will take the time to carefully research your product and walk you through their processes to ensure they deliver a product that meets with your expectations.
The tribe you choose to work with should facilitate open communication and transparency at all stages of the project, including regular updates to ensure nothing is missed and everyone is on the same page for the duration of the project.
Excellent project management/team leadership on your project from the start will set the tone and ensure ultimate success.
Effective project management is essential to a successful project, leading in turn to accountability and support for the team. Your project manager will facilitate planning, tracking and budgeting, whilst ensuring all the necessary resources are available to the team.
Selecting the development process that best suits your specific project is very important. These include the agile, waterfall and iterative spiral approach and play a large role in influencing the time span of the project.
All of the above methods are proven models to achieve success. Your project manager will help you choose the best one for your project, or even a combination of the above.
Planning for success depends on accurate estimates for budget, resources and schedules, as this is where many software projects fail, either due to overshooting deadlines or budget constraints.
Good estimation comes with years of experience and when discussing how your project will be tackled with your development tribe, they should be able to tell you the sequence each feature will be completed in and outline all important milestones, including testing.
Every individual in the tribe should track all their man hours. These should then be mapped and used for further planning and estimating for fine-tuning and risk management on the current and future projects.
Primary, derived and implicit requirements, both functional and non-functional, need to be defined and agreed upon by both customer and the development tribe via a technical brief, as they will have a major impact on the application architecture, design and performance. However, it doesn’t mean that all requirements need to be fixed before any architecture, design or coding are done, but it is important that all involved understand what needs to be built.
A detailed technical brief is a clear statement of deliverable that ensure there are no surprises or crucial elements missing, giving the customer a checklist of what to expect while keeping everyone on the same page.
In order to grow any business, you need to measure your success. Therefore defining the parameters and agreeing on them with the customer during project planning or deployment is essential. One popular methodology of measuring the maturity of your software development and identify weaker areas is CMM (Capability Maturity Model), developed and promoted by the Software Engineering Institute (SEI).
Large Projects, Small Milestones
Large projects should be broken into smaller milestones to improve manageability and risk mitigation. These smaller milestones may take just a day or two and will improve status reporting and motivation, reducing schedule risk of missing larger milestones at the end of a phase.
The benefit of working with an experienced development tribe is that they will ensure the most suitable architecture is selected for your project, keeping in mind all requirements and limitations.
The two basic principles are simplicity and information hiding. Your software needs to find the balance between being over- and under-designed to ensure an optimal, modular design to achieve maximum cohesion and minimal coupling.
Code re-use is often an under-utilized aspect in design, which if leveraged well, can save a lot of effort and reduce costs in the long run.
Whilst in the planning stage, it’s important to establish quality priorities and release criteria for your software so that a plan is put in place to help your tribe achieve your goals.
Effective quality control is necessary for the smoother and faster execution of your software development project. This includes efficient tool based defect tracking and quality metrics for judging the readiness of the project for subsequent stage or delivery. Metrics and targets can be set to ensure that the requirement, design, code, test plan and other deliverable and documents are dependable.
Testing and Validation
Continuous, rigorous testing from end to end is very important to validate the developed functionality. So much so that test planning should be independent of coding but done in parallel to the coding stage.
Just as important is test reporting, effective defect reporting, defect tracking and resolution.
Your developers should be using automated tools and well-established processes to ensure any defects are caught at the earliest possible stage. These tests should include unit testing, integration testing, functionality testing, system testing and performance testing, with each of these levels of testing requiring their own expertise, planning and execution.
Reviews are often as effective at catching defects as testing. Reviews of all deliverables, code and documents should be done, including peer reviews. Peer code reviews ensure final code quality and reduce defects in the product.
Installation and Deployment
If you get this far, congratulations! However, effective deployment plans and a checklist need to be in place to avoid successfully tested software projects from failing during installation and deployment.
Maintenance, Support and Operations
The support system is vital in responding to and resolving user problems, even after successful deployment. Established processes need to be in place to report and support user problems.
Change is the only constant…
While the end goal of your software or application may stay the same, it’s almost certain that requirements will change to some extent. This may be due to a number of reasons, including changes in user/customer expectation, failing to predict problems in time, change in market environment, etc. It’s therefore necessary to be able to accommodate these changes without adversely impacting the functionality.
Another common reason, known as “feature creep”, is most often the main source of both schedule and cost overruns. To prevent this, the requirements of your app/software needs to be agreed upon and locked in during the planning phase.
One widely used practice is that of utilizing smaller, coded, self-tested, unit tested and continuously integrated modules. Automating build tools and running of regression test suites for each functionality is recommended to ensure that existing functionality is not broken.
The benefit of working with an experienced software development tribe is that they will ensure these tools are all in place, while striving for code simplicity and coherence across the tribe.
Just as important as the software itself, are the supporting documents – requirement specifications, project plan, high level design, low level design, test plans, test reports, status reports and user documentation. These help to maintain understanding of the software, ensure trackability and remove dependency upon the core development team/tribe, to be used as a reference in the future by anyone else who may use or work on the software.
All documents, including source code, should be under the version control of a source-control management system that is put in place at the start of the project. This will allow the developers to go back and view the history of the project and retain copies of previous versions of all project documents.
Growth and improvement is an ongoing process and the development tribe you select should therefore integrate it into the ethos of their software development cycle, as each successful new strategy developed in any project will benefit all future projects. Your tribe should be happy to share the lessons they’ve learnt, whilst learning and adapting to better ways of working.
In truth, there is no “ideal software development project”. Each project will have its own bugs, flaws, codebases, test cases, etc., but hopefully, these concepts will help you select a software development tribe or company that will ensure your project runs as smoothly as possible from planning stages through to product launch.