Introduction to Software Development Processes
Gabry defines the Software Development Methodology to be a set of related activities that lead to the production of the software (2017).
While this is the simplest concept of the processes, there are many formalised industry best practises in operation today; some of these include Rational Unified Process (RUP), OPEN, eXtreme Programming, Scrum, RWSP, DSDM and more.
A software development scenario
Though I have worked under a range of these processes, I have found the Scrum methodology to be the best performing in most workplaces.
In my current workplace, there is a Scrum Master who overseas processes are being followed correctly and provides support for unblocking issues; while the Development Team and Project Managers collaborate to deliver pieces of work in short two week bursts called Sprints.
Each Sprint in methodically planned prior to commencement and tasks are sized according to their ability to be completed within a given Sprint as well as their priority in the overall Backlog (Layton, n.d.).
I have found that this technique works very well in that each day a Standup is held where everyone is made aware of each task and how it is progressing with an assigned member of the team. This gives complete visibility to the project and provides a level of autonomy to team members and their involvement in picking up pieces of work to complete. It also highlights any issues or blockers immediately and opens them to the overall team to assist in unblocking and resolving much quicker than alternative methods or processes.
Breaking down a project into smaller pieces that can continually be delivered as opposed to only delivering the entire project at the end of a roadmap has many advantages (Kneafsey, n.d.), some of which are:
- Flexibility / Agility
- Cost Control
- Business/Customer Engagement
- Higher Team Moral
- Increased Collaboration and Ownership
- Increased Project Control
The Agile methodology where Scrum falls under, while structured, provides a level of flexibility in the inclusion of Spikes.
Spikes are time-boxed exploratory phases during a project that are used to test the viability of a solution or route before undertaking it as a formalised project Epic (Yodiz, 2016) with task breakdowns.
These are extremely useful when discovering best ways forward for potentially difficult or challenging areas that have not fully been defined yet; particularly when dealing with technical unknowns or implementations around complex architectural solutions.
There are a wide range of software development processes, each with their own merits and demerits. While this post has clearly chosen Scrum, the others work well when teams are organised best around them. Chose what works for you and do it well.
Gabry, O. (2017) Software Engineering — Software Process and Software Process Models (Part 2) [Online] Medium.com, Available from: https://medium.com/omarelgabrys-blog/software-engineering-software-process-and-software-process-models-part-2-4a9d06213fdc (Accessed on 13th May 2018)
Layton, M, C. (n.d.) 10 Key Benefits of Scrum [Online] Dummies.com, Available from: http://www.dummies.com/careers/project-management/10-key-benefits-of-scrum/ (Accessed on 13th May 2018)
Kneafsey, S. (n.d.) The Benefits of Scrum & Agile [Online] TheScrumMaster.co.uk, Available from: https://www.thescrummaster.co.uk/scrum/benefits-scrum-agile/ (Accessed on 13th May 2018)
Yodiz (2016) What Is Epic In Agile Methodology (Definition & Template of Epic) [Online] Yodiz.com, Available from: https://www.yodiz.com/blog/what-is-epic-in-agile-methodology-definition-and-template-of-epic/ (Accessed on 13th May 2018)