When picking a development process and methodology to follow it is best to use common tools and guidelines. This article looks at four of the most common practices used in software development, including: Agile, Waterfall, Lean, and Kanban. Following these practices will not only increase your development throughput, it will also increase developer satisfaction and happiness.
At the beginning of any project you have to answer a key question: what development methodology (or SDLC) should we follow?These debates are similar to discussing religion. Passions fly and logic goes away. In practice, many companies follow one or a select few processes across all projects. While it makes sense to have common practices, it makes much less sense not to allow for or define exceptions.
The above graphic is commonly used to illustrate where certain methodologies shine, and where they should not be used. The majority of my career has focused on new product development in software – so most of my experience is aligned with the top half. An individual who has focused exclusively on operations and infrastructure might find that they worked with the bottom half of methodologies.
When Vanick engages with new clients, we have to evaluate what processes and methodologies fit with what we are trying to accomplish. Many of our migration, infrastructure, and implementation projects take a form of iterative waterfall or Kanban. Our software maintenance projects are almost exclusively Kanban or Scrum. New product development is almost exclusively agile as we begin the projects by defining the problem we are working to solve.
This flexibility allows us to be more adaptive to our client needs, but it create to significant challenges. First, you have to create a way to identify when to change or adapt processes. Secondly, training your team to effectively executive on a multitude of processes.
The first challenge can be solved by adopting common practices recommended by PMI and qualified authors. Even though specific processes during execution might require focus and clarification, generalized processes and methodologies are fairly standard.
The second challenge is much more difficult. It would be almost impossible to find talent that not only can keep up with that complexity across multiple projects, but learn from it in a dynamic way. You have to solve this problem by creating specializations. For example, we have Project Managers that specialize in Sitecore. These Project Managers follow scrum the majority of the time, as it fits our work project. Project Managers specializing in Sharepoint will utilize Kanban more, where we commonly complete migrations and implementations.
Another way method we use to assist our team is by focusing almost exclusively on outcomes. We create metrics to hold ourselves accountable to, and define those outcomes that we feel are most important. Those metrics (say the budget for example) cross methodologies, and allow our team to understand what leadership see as critical pieces of information regardless of process followed. This solves the majority of issues on projects that are low to medium complexity. Higher complexity projects require attention to ensure that processes make sense and are followed.
In the end, adaptability is necessary for effectiveness. Work with your team to establish the processes that make the most sense with your work profile. Once you have established your processes, make sure that your team is applying learnings and are adapting as holes inevitably are found.
Below are good resources to use when looking at methodologies for software development.
Robert Wysocki. Effective Project Management: Traditional, Agile, Extreme.
Steve McConnell. Rapid Development: Taming Wild Software Schedules.
David Anderson. Kanban: Successful Evolutionary Change for your Technology Business.
VP of Operations