Three pillars of microservices culture

Shun
5 min readOct 24, 2020

Focusing on communication, teams, and innovation can help you transform your organization.

When we are dealing with Microservices, there are three major focus areas.

  1. Aligning Principles → Do one thing well, Build afresh, Try early, Tool Making etc.
  2. Practices → Agile, DevOps etc.
  3. Culture — ??

In this snippet, the focal point is Culture. When you are arming your organization with the right tools for managing platform, code and runtime environments, there is a critical foundation factor to consider — your company culture.

Culture:

Culture is important because it not only sets the tone for the way people behave inside an organization, but it also affects the output of the group.

“The code your team produces is the result of the culture”.

What is culture:

Quite a bit has been written about culture in general — from many perspectives including anthropological as well as organizational. We’ll focus on the organizational point of view here.

“Shared key values and beliefs” that convey a sense of identity, generate commitment to something larger than the self, and enhances social stability — Linda Smircich

“Why we do it the way we do” Damon Edwards.

Importance of Culture:

How does culture affect team output? And, if it does, what kinds of team culture improve team performance and work quality?. The software and hardware are only part of the puzzle when it comes to assembling a successful microservices culture for your organization.

It turns out companies that are good at microservice implementations also spend time architecting their company culture and, in many ways, the code and operating system details are less important than the culture details.

We’ll look at three aspects of culture that you should consider as a foundation for your microservice efforts: communication, teams, and innovation.

Three pillars of microservice culture

Pillar — 1: Communication

“communication dictates design” — Conway’s Law.

Basically, the way teams communicate both within the team and with other teams is directly reflected in the code they produce. Bell Labs researchers showed that things like hidden dependencies that can result in “unexpected responses” are introduced at the team level — long before the code is written.

That means designing modes of communication can be just as valuable as designing the code modules. The folks at ThoughtWorks even coined the phrase “Inverse Conway Maneuver” to emphasize the notion that companies can actively evolve and manage organizational structure to achieve desired results.

Here are things you can do to improve the quality and immediacy of communications for your teams:

  1. Design boundaries: Engage in up-front design to produce clear, stable boundaries in your code modules and assign teams along those same boundaries. Acknowledge existing physical separation as a “natural boundary” for both teams and code. Make Conway’s Law work for you. Try to maintain stable teams, even if the membership fluctuates over time.
  2. Communication tools: “Individuals and interactions enabled by processes and tools” — Provide lots of communication tools (video, chat, mailing list, wikis) to make it easier for teams to get to the right person as soon as possible. Most important, try to make it as easy as possible to create connections between teams.
  3. Decision processes: Initiate processes that require all decisions to be recorded and published for anyone to see. This helps remote workers to keep up when they can’t be present and it creates a “syslog” of team actions and decisions for historical review.

Pillar — 2: Teams

While the story of how Jeff Bezos used “Two Pizza Teams” to help minimize groupthink is well known, only a handful of the companies are aware of the social science behind this idea.

Robin Dunbar’s research into primate groups identified the importance of group size as a factor in managing cooperation within the group.

As groups get larger, the amount of “overhead” needed to maintain cohesion increases. In 150-person teams, Dunbar’s research estimates that almost 40% of the time is spent keeping the group in sync. But in teams of around five, almost no overhead is needed to stay on task.

What can you do to increase the effectiveness of your teams?

  • Aim for Dunbar level 1 or 2 teams: Dunbar’s team size observations (teams of 5, 15, 50, and 150) show that there is less overhead and better communication in small groups. If you need to work with larger groups, break them into small sub-teams in order to reduce the overhead.
  • Autonomy within teams: Give each team as much autonomy as safely possible. Allow them to decide how things work within the team as long as it doesn’t adversely affect other teams. And, with autonomy comes responsibility. Be sure teams own their product and take responsibility for its entire lifecycle — including post-release support.
  • Rely on team interoperability, eliminate dependencies: While teams have autonomy within their own group, it is important that they interoperate well with other teams in the company. Stateless interop, not tight integration, is the goal. Teams should not be allowed to break other teams’ code, and teams should not have to wait on each other in order to do a production release.

Pillar — 3 : Innovation

Finally, the reason communication and team dynamics are so important for microservice-style companies is that these elements can greatly affect the innovation atmosphere in an organization.

“Innovation can be disruptive to an organization but it is essential to growth and long-term success”

Small teams reduce unhealthy groupthink and make it possible to communicate with reduced overhead and ceremony. This, in turn, makes it easier to spawn unconventional ideas and get them implemented and tested more quickly.

And small ideas, executed quickly, is an important element in establishing an innovation dynamic in your company.

As stated in HBR, “Your Team Shouldn’t Run Like a Well-Oiled Machine,” small teams working independently exhibit a greater rate of innovation success than large, tightly managed teams.

So, what are the keys to fostering innovation?

  • Central mission, loose structure: Innovation happens when business goals are well understood and “the way we do things today” is not highly valued. Provide your teams with clear goals and let them know they are free to explore unusual paths to reach those goals. Defending the status quo is not likely to produce new, creative ideas.
  • Maximize learning: Organizations with innovative cultures value learning. Several companies we interviewed put a major effort into “lunch-and-learn” sessions, guest lectures, and workshops — usually on company time. Also, encourage your employees to study not just within their stated field of expertise, but also in new or related fields.
  • Failure is an option: The path to success is not a straight line. There are lots of failed attempts before discovering something new. Elon Musk tells his employees “failure is an option here.” Mistakes are a learning opportunity. If you punish people when they fail, you kill innovation.

Takeaways

Microservices is more than source code and containers. Companies that do well transitioning to a community of loosely-coupled, independent teams, all spend a good deal of their time designing and managing their organizational dynamics and fostering an innovation ethos throughout the organization.

Of course, evolving your company’s culture doesn’t happen overnight. Like any important refactoring work, it needs to be done in small, verifiable increments over time. When done well, this will result in a healthy and sustainable system that will be easier to maintain over time. And that is the microservice way.

Managing communication channels, aligning teams, and establishing a safe place to innovate are all essential to enabling a successful culture that can take advantage of a microservice-style approach to designing, implementing, and maintaining software.

--

--

Shun

Engineering Leader,Cloud Architect, Data Science