Collaboration (or lack thereof) between IT teams
DevOps is an idea / philosophy that has
been gaining mainstream adoption over the last two to three years. As you might
have guessed from the name it relates to bringing together development and
operational teams. In reality it's not just limited to Dev and Ops, more
generally it's about methods, processes and tools to enable IT teams to work
more collaboratively with each other and other parts of the business (at least
that's my take on it).
In many organisations there is seemingly a
conflict in the goals and objectives of development and operational teams.
Development teams usually have goals relating to the development of new
features on time and to budget. The operational teams, especially those that
deal with infrastructure are more focused on ensuring the availability and
manageability of systems.
Operational teams sometimes distrust the
developers believing that they just want to push out changes as fast as
possible to meet their deadlines and don't adequately test their changes. They
are weary of any proposed changes and therefore can be reluctant to approve or
support them and may even seek to endlessly raise queries about the changes.
They may feel that changes are thrust upon them and that they are not consulted
on the best way to achieve a particular goal or that they don't have the
necessary tools to support the changes to the system or the financial backing
to procure those tools.
Development teams on the other hand that
their expertise and professionalism is being questioned and that the
operational teams only know how to say no to changes. They may resent the fact
that the Ops team deny or provide limited access to production systems and
therefore make it harder for them to do their job.
However, this isn't limited to just Dev and
Ops, unfortunately this sense of distrust can manifest it self between all
parties from development, operations / support, service management through to
enterprise / technical architects. How many of you have come across
organisations where there was a discord between dev and ops? How about
organisations where service management’s take on providing a service was almost
exclusively focused on maintaining the status quo and incremental improvements
if that because of the fear of change because they may impact service KPIs and
therefore reflect badly on them. Perhaps
you’ve seen first hand what happens when technical architects / enterprise
architects define enterprise architecture artifacts (standards, policies,
guidelines, principles etc) but do not engage with all areas in developing them
and therefore do not get the buy-in necessary for widespread adoption. Some
organisations may involve the business and technical architects but fail to
consult operational teams. In such circumstances, the operational teams may feel
the EA artifacts were developed from an ivory tower and do not reflect what can
actually be supported.
In my personal experience, these problems
are largely driven by the fact that the performance of these teams areas
measured on different factors that can be diametrically opposed, a tendency for
these teams to work in silos and lack of collaboration at an architectural and
daily operational level. If you work in for a relatively new organisation it is
in some ways easier to avoid these problems or to alter the way these teams
behave and work together. In contrast for established organisations, getting
people to change can be very difficult.
So how do you deal with these problems and
get these teams to work as a cohesive whole?
Identify the root causes
Well, firstly you need to understand what
the root cause is and what each team’s complaint is, what issues they face in
doing their job. This needs to be conducted in a fair, objective and
independent manner, people are unlikely to tell you their real thoughts if this
exercise is facilitated by a member of a team with which they do not trust. For
this reason you really need an external mediator that is not affiliated with
any of the teams and it must be made clear from the outset that the objective
is not to apportion blame for the problems.
Develop a plan
Once you have identified the causes you
need to determine how to resolve these issues. Often asking the teams what can
be done differently to avoid the problems is a good start for identifying
options.
Align the objectives and goals of teams
As mentioned, you need to find a way to
align the goals and objectives of your teams and ensure that you’re not
measuring them on things that will lead to conflict rather than collaboration
on achieving a common goal.
If your development team is working on new
features, have members of the operational teams allocated as SMEs to help them
to understand a plan for the impact the changes will have on infrastructure.
This way the operational team understand the changes and having provided input
into at the design stage they are more likely to be supportive of changes
because they will understand how the changes will impact the availability of
systems.
If you are developing EA artefacts, yes you
should involve the business but also involve technical architects, development
and operations. If you don’t they are likely to be ignored or sidestepped even
if they are endorsed by senior management – believe me I’ve seen it happen.
Foster / Encourage Trust
Developing trust between teams can be
difficult but you can start with encouraging teams to share knowledge. For
example, the operations team can share information on the infrastructure that
their applications will run on, best practices – this approach means the
operations team can have more confidence that the application is appropriately
designed to make best use of the infrastructure.
A complementary approach that I like very
much is the idea of Joint Architecture Design described in book The Art ofScalability (the book also has a website http://theartofscalability.com).
To paraphrase from the book the idea of the JAD is that for an application/solution
you have a software engineer, an architect and operations engineer work
collaboratively to develop the design. This incentivises teams to carry the
solution through the various stages of its life cycle.
Comments
Post a Comment