Improving the software development process through DevOps

DevOps is one of the very popular terminologies especially in software development companies and there are many misunderstandings about what is DevOps, is it and new Software Development Life Cycle (SDLC), is it Agile or does it improve process agility, it is a role inside the team or what is the DevOps and how this can improve software delivery.

The big challenge

As we know that software after implementation and delivery, is used by the end-users inside the organization, it needs to be maintained and also operated, not only that it needs to be enhanced with the time until it is decommissioned or replaced with a new software powered by new technologies.

Most of the time, the team that manages the development, is different than who manages quality, and as well is different than who manages security, deployments, operations, and maintenance. Each team may have different objectives, leaders, and performance indicators. This led that the teams may compete more than collaborate and this often creates the blame culture and mindset.

This kind of siloed vertical disciplines inside the team, created a huge delay in the process, manual checks, and reviews, and even every team needs to deliver his work to the team after that in the process.

Whether it is Waterfall or Agile, software development contains almost the same steps, from analysis, design, development, testing, deployment, operations, and maintenance. Each SDLC deals with these steps in different ways according to the SDLC principles and planning. While most of the companies moved to Agile, they used the same team structures from Silos that every member is focusing on a specific area from these steps.

Although adopting Agile principles focus on enhancing the end-to-end development process by eliminating the issues in traditional software development lifecycles, the same challenges in managing the operations were still there and DevOps’ main purpose is to overcome those challenges.

Read more

7 Mindset shifts that will boost the effectiveness of teams’ harmony in solutions implementation

Any work that we are doing, even if it’s done by individual efforts, will affect others in some way. The affected other side is the end customer who is concerned about benefits and results from this work. The end customer can be a consumer, a citizen, an organization with complex teams, or even a collection of all.

I believe that working individually or within a team(s) needs a different mindset shift that can have more understanding, empathy, active listening, collaboration, and appreciation.

This kind of relationship should be from both sides, not only you as who is doing the work but you as who is receiving the end results of this work. We are always facing challenges while delivering and observing teams that are complaining about the customers and how tough they are, how the customers provide vague and unclear requirements, how the customers want to change their needs without paying costs, how the customers are not appreciating the efforts.

Many complaints, sometimes I actually feel the same, and I become very frustrated. In these situations, you need to pause, rethink again, emphasize, and see what is the outcome of this tension, what are the trade-offs we should take, and what are the implications of our actions in the long term relationship with that customer.

It is not always on the customer side, it is also inside the team who is carrying out the implementation, and this team’s understanding and how the team is showing empathy.

Many times, I see individual members of the team who are seeing the customer as ignorant, they do not understand, they are seeing themselves as the experts in the situation and the customer is outdated. Sometimes, team members quit the project, or a company does not want to work again with that customer because of how tough was the process and the relationship between the teams.

Changing the mindset is not something easy, it may need changing our way of analyzing, engaging, implementing, negotiating, contracting, and many aspects that can support the healthy relationship on both sides between the implementers and the customer for better end delivery.

So, I wanted to list different mindset shift factors that can affect the way we think from both sides to deliver better usable solutions. I am using the client to indicate the end-user(s) who will be involved to provide their needs and requirements, impacted by the change introduced by the solution, and concerned by the outcomes of this solution. The implementers who present the teams that are responsible for the implementation and delivery of the solution. These two sides can be in the same organization or two different organizations, below is the summary of these factors:

The factors

Shift factorsClient(From)Client(To)Implementers(From)Implementers(To)
RelationshipClient-Vendor relationship mindsetPartnership mindsetThe expert mindsetThe learner mindset
ListeningMy way or the highway mindsetListening to act, and take the right actionExecution MindsetUnderstanding and empathy mindset
NeedsEverything is important mindsetPriorities MindsetSolution boundaries mindsetlimitless alternatives mindset
ScopeUnbounded scope mindsetRealistic and focused scope mindsetRigid scope mindsetAdaptive & dynamic scope mindset
Management FrameworkProject Management mindsetProduct Management mindsetScope management mindsetExpectations and Value management mindset
The Adoption JourneyBusiness needs as destination mindsetOperation needs and the journey mindsetDevelop for test and deliver mindsetDevelop for usage and operation mindset
PracticesFixed mindsetInnovative mindsetSolution defensive mindsetResourcefulness mindset
Mindset Shifts Summary

In the next paragraphs, I will discuss each shift factor in detail.

Read more