Mob Programming And Software Development Life Cycle (SDLC)

In this article, Mob Programming, Refactoring, and Software Development Life Cycles are discussed. Different Sofware Development life cycles are broken down for easier understanding with their individual pros and cons. The various benefits of mob programming are also explained with examples.
 

Mob Programming

 
Mob Programming can be defined as an approach to a software development process where the entire team (a group of three individuals or more) works on the same project, concurrently, within the same shared space, and on the same computer. This approach can be compared to pair programming and is quite similar except there are only a pair of individuals working as a team.
 
It is also known as ensemble programming and the motive of mob programming is to collaborate with everyone on the team while working on the shared goal of the project. The members of the team are likely to be a group of people with diverse skillsets.
 
It may sound contradictory but mob programming helps in better productivity and more effective workflow since the members are working at the same time and same space collaborating with a single macro goal and keeping each other in check with the main mission. When you are in the flow state, you don’t want to be dragged out. Every time a developer is interrupted, it has been researched that it takes an individual 20 minutes to get back to the flow. In mob work mode, everyone is in the same zone and the whole team though tended to be disturbed now and then, but are all in the same flow as a whole. This helps boost productivity and effective work. Let us take an instance of a performance of a musical band – it’s the multiple instruments playing in cohesion at the same time, each band member contributing that creates the beautiful music.
 
Often referred to as the Whole team programming, the entire team works together from start to end in mob programming. When we as an individual, we work in our micro view making our sole work the most important aspect of the whole equation but by working as a team, we work on the macro view. The Database Architect will not just focus on the Database but the holistic overview of the application. The Testing and Quality Assurance members will not just be working on to find bugs but with the developers themselves, help reduce these bugs which in turn has always helped create a better system with zero errors, just because of full communication between them throughout the working.
 
When you sitting for your job alone, you are only focused on the current issue. But with sitting together with other members of the team, they’ll also overlook our work. In most cases, management is the problem. But with Mob Programming Effectiveness, Efficiency and Flow of work is a beneficial outcome of this process of work. It's always better to work slowly on the right thing than faster on the wrong thing.
 
How can 5-6 people work on the same computer at the same time?
  • It is the concept of mob programming of having diverse team members more than 3 to work in the same project at the same time, in the same place sharing even the computer. But, it's also necessary to realize, 5-6 people are doing different prospects of the same work with different retrospection. Working as a team is better than working separately for various reasons.

Refactoring

 
Refactoring can be understood as the process of restructuring the codebase of a program to make it more elegant, cleaner, and simpler without altering the external functionality.
 
Read by Refactoring
 
Read by refactoring can be defined as the technique of reading the code or understanding it by attempting to make modifications to it by using the functionality of IDE’s built-in functions for refactoring the code. This is a great approach to minimize the risk of bug creation as the IDE handles the actual modification of the code and thus making it safer.
Software Development Life Cycle (SDLC) as the name speaks for itself, is a life cycle the software industry uses to design, develop, test and release their software to produce high quality products. The Software Development Life Cycle consists of various stages; they are listed below,
  • Planning and Requirement Analysis
  • Defining
  • Designing
  • Building
  • Testing
  • Deployment
Some of the commonly used Software Development Life Cycles,
 

Waterfall Model

 
Waterfall Model is a phase-by-phase approach to develop a software where the output of one phase is lead to another phase. These phases occur in a sequence one after the other.
 
Advantages and Disadvantages
 
Waterfall models are extremely simple to follow through and use and deliverables are specified with a proper review process. Howsoever, the project would not be complete until the end of the life cycle which makes it an extremely risky approach and with this uncertainty, it isn’t a great method to work on for large enterprise level projects.
 
To learn more on Mob Programming, watch this video, 
 
 

Iterative Model

 
An iterative Model is an incremental approach of a life cycle for software where small developments and modifications are added on each newer iteration. This approach is great on large mission-critical system development. Also, customer feedback would also help to better the system in a short span with multiple iterations and releases.
 
Advantages and Disadvantages

Small changes can be integrated into the software over the iterations thus making it easier to see the results in a small duration of time, but this also adds up a sketchy timeline and effort with the possibility of ever-changing demands while working on consultation for clients. It might be great for the clients, but the development firm is likely to face difficulties more than they signed up for.
 

Spiral Model

 
This is a minimum risk approach for software development in regards to both the clients/ customer to the software development firm. The spiral model has 4 phases:
  • Identification
  • Design
  • Build
  • Evaluation and Risk Analysis
This process helps to accommodate changes as the life cycle takes four phases where prototypes can be used extensively and requirements can be captured properly.
 
Advantages and Disadvantages
 
Spiral Model can turn out to be extremely complex for the spiral process might go indefinitely. While it accommodates the need of changing requirements and more precise way to note the requirements from the clients, it makes this process equally difficult to manage without being able to foresee how the end of project would be like.
 

Agile Model

 
The agile model is probably the most widely and extensively used software development life cycle approach across the firm around the globe. Agile approach asks us to retrospect upon each project as every project must be handled in a different manner. In this approach, each of the tasks is broken down into time frames to deliver a certain feature. The iteration Model is then applied to build it as a deliverable adding incremental changes with the last final build consisting of the entire features.
 
Agile follows the listed principles,
  • Individual and Interaction
  • Working Software
  • Customer Collaboration
  • Responding to Change
Advantages and Disadvantages
 
The agile Model is an extremely realistic approach and supports rapid development with minimum resource requirements. It can also be easily managed and gives a lot of flexibility for developers, testers, and DevOps. However, complex dependencies can’t be easily handled and possesses risk to sustain and maintain the system. Also, since it highly depends on the interaction with the client, it will help in requirement analysis but would be torturous if the customers aren’t clear with their needs. This model anyways is the standard for today’s software development practice in companies across globe.
 
In this article, we learned about Mob Programming what it is, and its various benefits. We also discussed what refactoring is and the reading by refactoring approach to understand a project deeply. Then we learned about Software Development Life Cycles such as Waterfall Model, Iterative Model, Spiral, and Agile Model.