Software code review plays an important role in software quality. The code review can happen in multiple stages, by multiple people, on multiple deliverables. Each one of them focuses on specific areas of software.

We have followed two different types of code reviews for our projects

  • Peer code reviews
  • Team code reviews

Peer code reviews

Peer review is mainly between two people. Developer and another teammate.

Code review Process

For efficient code review, we have set up a pull request process for our code repository in git bitbucket. The developer will create a pull request after completing the coding and…


The spike in agile denotes something is not clear to the team. It needs more research to proceed further. In such cases, the recommended approach is to have time-boxed research and these are called research spikes.

Let’s understand the different situations that require research spikes.

Research spikes

During the iterative implementation phase or before starting the development, there are chances that the team is not clear on some of the items like

  • User needs/ Requirements
  • Architecture
  • Design
  • Technology and Tools
  • UI Controls
  • Existing code

Requirement Spike

In cases, the user needs are not clear enough for translating them to well-defined…


Problem Statement

In a complex and enterprise level application, the fundamental entities can be updated in various integration points or endpoints. You will build many business rules based on these entities data. As the system grows bigger and bigger, it would be very difficult to track all the integration points that will update the entities data.

In such cases, there are chances that it would be very difficult to get things right. It will be very hard to identify all integration points that will update the entities data to plug the new business rules.

Let’s take an example to make…


Software availability is one of the important criteria considered for the success of any software. It is important to make sure business is not impacted due to software deployment activity. Achieving the highest software availability is possible in many ways. Here, I am going to discuss a few solutions to minimize the impact on software availability due to software deployments.

New release of software should not bring down the system. To achieve the Zero Downtime Deployment, the software should be built considering the factors that do not demand any downtime.

There are many factors that will impact software downtime. I…


Predicting failures of software in a production environment is very critical, apart from ensuring the quality during the development stage. The failures can happen in many ways, predicting them upfront and ensuring there are solutions for all such failures is a smart way. It will position you ahead in the race.

The preparation for failure should start from the initial stage of software design and carry on to the development and testing cycles. We must keep questioning our decisions in all these stages about the probability of failures and associated solutions.

If you are prepared for failures, then you will…


The software Integration is one of the most common practices in all types of software platforms. Instead of reinventing the wheel, it is always recommended to integrate with the available robust and well-proven partner/component.

It is important to follow the best practices in software integration to achieve quality. Otherwise, there are chances of fragile integration leading to production issues.

I will be discussing 3 types of software integration

  • Integration with Third-party partners
  • Integration with Third party components
  • Integration between modules

Each one in the above list is different in nature. One common practice to follow is making it loosely coupled…


In Agile, every user story should have clearly defined Doneness or acceptance criteria. There are two important parts while defining the Doneness criteria; one is functional, and another one is non-functional. In most cases, people will define the functional acceptance criteria very well and do not give much importance to non-functional doneness checklist.

For ensuring software quality in all aspects, the doneness criteria should be achieved from both functional and non-functional aspects. To ensure non-functional doneness criteria is also taken care, we must define the checklist and ensure it is followed for all user stories.

Reaching your pinnacle needs a…


There are many ways for protecting the Software quality and devising various techniques to ensure there is right test plan for each software release. Based on my experience in many projects from small size to an enterprise level software, code churn-based analysis and testing is very effective in uncovering issues and protecting software quality. Code churn is nothing but the code changes made for the software to achieve a certain functionality.

Code Churn

While designing test plans, the basic question to ask would be to find out what code changes are done in the software. …


One important virtue of software is UX, the way you design it better, it will make the software value better. Every software has two important aspects from UI perspective one would be look and feel, second one would be software UX (user experience). In these two, User experience (UX) would play a major role. UX should follow more pragmatic approach so that it is user friendly for the users.

The software should be more interactive than merely an event based system. In earlier days, designing better UI would have been enough. However now with the level of expectation, creativity among…

Lokesh Raj

18+ years of experience in Software Architecture, Designing and developing enterprise level software.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store