In software engineering, one will often hear the term “Software Development Methodology “(SDM). A Software Development Methodology is a framework used to structure, plan, and control the process of developing an information system. Whether you choose Waterfall, Iterative, Agile or some other methodology, how well you adhere to the SDM can effectively determine the success or failure of a project and/or company.
In this day and age, the number of projects and/or companies that fail to consistently adhere to a process is baffling. Software development initiatives are conceived and executed using the “fly-by-night” approach. This is typically because customers may struggle to see or understand the immediate value of the numerous concept analyses, business requirements, use-case analyses and/or design specification meetings that are required to produce a quality product. Instead, time after time, they feel they can say “I want….” and the developers can figure it out and give them what they want with no questions asked. Developing a product without the guidance of a SDM often leads to systems that are delivered late, over budget, and in many cases, that fail to meet customer or end-user expectations. It coule even lead to a complete project failure
Adhering to a properly-defined methodology enables a project to provide better estimates, deliver stable systems, keep the customer informed, create a clear understanding of the task ahead, and identify pitfalls earlier, allowing for ample time to make adjustments. At Segue, we’ve found that as our SDM has grown and matured, we have become more effective at identifying potential problems before they occur, which has improved both our ability to proactively manage against their occurrence, and develop more effective workarounds for when they do happen.
When a SDM is not properly implemented, a variety of problems become more and more prevalent as development continues. For instance, a lack of proper communication between the customer and development teams often leads to systems that don’t meet the intended needs of the customer. Mistrust from the customer management staff can have effects on the development contractor successfully maintaining or being awarded a follow-on contract. Furthermore, a lack of basic methodology concepts or processes, such as an internal peer review process, often leads to software deployments with numerous defects. Delivering an unstable system is a bad reflection upon a company as well as the developers.
On a less tangible front, many developers often suffer from side effect issues such as poor morale or lack of motivation due to changing scope or the need for constant “bandage” fixes due to poorly-defined or poorly implemented processes around their development effort. The utilization of an SDM can greatly reduce this issue. With properly-defined processes in place, a roadmap is followed that allows for better management of scope creep and avoids common development problems. Of course, there will always be situations that may arise during the course of a project that may not have been planned, but adhering to a process will definitely minimize these occurrences.
Beginning a new SDM process definition initiative by simply conducting a “Lessons Learned” meeting and documenting the pitfalls and shortcomings of a completed project can do wonders for future endeavors with a similar scope. For instance, the review may result in the elimination of steps within the development process that ultimately didn’t provide any value. Performing steps within a process just for the sake of doing it can be a waste of valuable time and effort, and the exclusion of this redundant work may deliver improvements, including the potential of an early system release date or the flexibility to address unplanned issues along the way.
First and foremost, the key to success is first to START using an SDM. There is no such thing as a “cookie cutter” approach or a specific SDM solution for all projects. The SDM acts as the starting point for the effort and should be tailored to meet the specific needs of a project. Find what works for you and stick to it. More importantly, as you move through the process, be sure to adjust the SDM to better suit your particular scenario and needs.