By Andrew Norman, Principal Architect at IT consultancy BJSS
DevOps brings together developers and operations to work closely together to benefit the business; when combined with a lean and agile approach it increases staff morale, productivity and leads to improved project success. However, many DevOps teams tend to be light on process and reliant on a flexible team that is emotionally and technically intelligent.
The agile DevOps process places more pressure on delivery teams than a project that runs along more traditional lines. The process is characterised by continual measurement, frequent demonstration and regular milestones, with constant approval or rejection. It’s an environment where people who are egoless, talented and engaged will thrive.
Here are my top tips for organising successful DevOps teams to ensure the best possible results are delivered for a business.
Build an egoless team
Roles within DevOps teams are defined by tasks rather a tightly specified role description. This offers a number of benefits, such as giving people the opportunity to experience different problems, taking on various perspectives and gaining a better understanding of the software development lifecycle. For example, a project manager (PM) on one project may be a development manager (DM) on another, while a technical architect (TA) on one project may be a solutions architect (SA) or team lead on another, and so on.
It’s vital all senior team members in any project buy into this egoless approach. This means senior people are able to play many roles, while supporting less experienced staff, and acting as enablers and mentors to teams.
In any project it’s important team members understand their role. However, in an agile DevOps project the problems to be tackled, and therefore the resource profiles required, vary as the project progresses. To illustrate this point, SA and TA roles are often held by the same person, but in larger projects where each position is full time, they would ideally allocate 80:20 effort per role. This approach ensures good peer review, guaranteeing all key decisions are sense checked while allowing for a degree of fault tolerance.
Form the team early in the project
The nucleus of the team should be formed at the start of a development with the combination of a manager and senior technical person working to shape the project, engagement with the client and the outline of the solution.
During the next phase the workload increases. For large scale projects, it’s essential to make as much of the on boarding of new team members as efficient as possible. As new individuals join the team, any useful new information they learn should be retained in a sufficient way.
This project elaboration is an intense discovery phase, where the senior member of the team will have many tasks to prioritise based on risk. However, it’s important attention is given to establishing the culture of the group, as well as building strong relationships both within the team and in the interface with other related projects.
Having a reproducible on boarding process also assists with the inevitable team change that will happen from time to time on any project.
Share the work load
One of the most important lessons for the PM/DM is to ensure the most experienced staff have time allotted to non-core tasks such as meetings, coaching and mentoring junior staff.
For example, in the construction phase of a large project, the TA could be expected to spend 50 per cent of their time on identified project tasks, with the remainder being focused on supporting the development process and team.
Organise the team for the project
How a team is organised depends on the project but should always be based upon the principles discussed above. Team organisation must reflect the need for efficient communication, reducing the need for lengthy discussions, while increasing efficiency.
By also avoiding the silo mentality, often found in waterfall projects, a DevOps team can work together to ensure the project is completed with little wastage. Two team members working on a section of the project together will likely make fewer mistakes, or notice the mistakes as they are being made and correct them quickly, without the error being seen in the testing phase further down the line, which can be far more costly to the project.
By following these tips, DevOps teams will not be inefficient, divisive and damaging to the business and in turn, ensure the best possible results are delivered.