Maintaining our Technology Garden

Posted on June 21, 2020 | 9 minute read | Share via

I have worked in organizations of many different shapes and sizes. Some as small as just myself, in startups including tens of engineers and still others that have included tens of thousands of engineers. When organizations are small it is fairly easy to keep track of all of the pieces of technology used. This is generally driven out of both interest and need (a team of 10 engineers would struggle to learn and develop on dozens of different databases, multiple build and deployment systems, and many different programming languages). Still, as organizations grow it is not uncommon to find that the once streamlined technology stack begins to include more and more moving pieces. Is this ok? When should we stop it? How do we encourage innovation and exploration without every team having to manage all things?

Gardening

Growing up I had parents and grandparents interested in Gardening. Perhaps the wore off on me a bit. Putting together a garden requires thought and planning. You may start with a single flower that you really enjoy. As your garden continues to grow you may want to start adding in other types of flowers as well. As your garden becomes more diverse it is important to start to think about what you already planted - otherwise you might not be able to tell weed from flower and suddenly your beautiful garden becomes overrun. I like this metaphor to consider when we think about tending to our technology garden. We want to try new things but we also want to watch for what technologies we are leveraging as to ensure our garden remains beautiful. It demonstrates a balance that is important to strike that allows for growth while not allowing things to get out of control.

Tending to our technology stack

I like to write down tenets when thinking about how to manage this balance because much like problem statements I find that if I can get clarity and agreement on a few tenets then they in turn can be leveraged when making technology choices. For purposes of selecting or reviewing a technology portfolio I like the following:

Generally I like to think of the above in relative order but the importance is less about those that I have placed in this document and more about taking the time in an organization to work on gaining agreement on the most important driving criteria. For example, my set of tenants working on missile systems at Raytheon were quite different from those when I joined the robotics startup Kiva Systems.

Once we have a set of tenets the next question is how to structure the process of making decisions. For this I like to apply a rule of Conscious Deviation. The idea behind the rule is straightforward:

By following this rule we are explicit about making choices. In other words, we are conscious about what technologies we choose. We encourage everyone to participate in helping shape the technology portfolio and looking out for what is best for their part of the business.

Setting up a technology selection process

While the rule of conscious deviation is straightforward it is just a rule and doesn’t tell us the process for applying that rule. I am generally a big believer in minimizing formal processes but this is one area where I have been burned by not looking aggressively enough and thus have perhaps allowed a few more weeds then were necessary to pop up. As a result over time I will admit that I have slowly iterated towards the belief that for conscious deviation to be successful there needs to be at a minimum some level of cooperative review of technology choices being made. Now this does not imply a long process by which a select few in an entire company must sign off on each decision, but rather a process should exist that at a minimum ensures choices made are transparent and discoverable. Doing so allows the senior technologists in an organization keep track of the choices being made and being held accountable for those choices remaining consistent with the objectives of the business. It also ensures those same senior technologists can work together to plan out the garden (technology roadmap) as organizations grow.

Note: I often see teams write things down and one can argue the choice is transparent - but you would need to know where every team has written such things down. The discoverable component here is what I find lacking most frequently. I want to be able to quickly find the set of choices that have been made as to assess the overall health.

Depending on the starting point that a given organization finds itself in it may be appropriate for adding some additional checks along the way. For example, in my opinion it IS appropriate when an organization finds that things have gotten out of hand to be explicit in defining a more specific set of technologies be leveraged. In organizations that have a strong DevOps and Service Ownership culture when this happens it is even more important that the explicit problem being solved for be written down and expectations clearly communicated as such directives remove a choice from a team (a team was not autonomous) and Autonomy, Accountability, and Ownership are all connected (check back soon for a post on this…).

More then just building the new thing

While most reading this are likely thinking about the implications when building a new project it is also important to consider the fact that many technology choices live longer then the business objective that led to the initial choice. For example, if a company pivots into a different customer segment or if a company is acquired or simply as a company grows to serve more clients then originally projected. In my career I have argued to change database technologies, consolidate engineering efforts from many teams solving similar problems to a single team, deprecate business functionality thought to be vital, align different organizations within a single company build a singular technology roadmap to solve an even larger customer problem, and more. In most of these cases there has been significant investment (time, energy, learning) to date of many engineers on what exists which creates significant friction to moving towards something different. Stated directly, the near term incentives are stacked against such efforts:

What is important is that this should not distract us from working to make data driven assessments to articulate to the business when the time is right to invest in changing fundamental components of a technology stack. While the same rule can apply in re-evaluating existing technology choices I have learned the one or more of the following can be helpful in gaining adoption:

Final Thoughts

I would love to know what has worked for others in tending to their gardens. Where have you looked to more senior engineers to provide guidance or when have you wished for more flexibility? Do you have a simple rule like conscious deviation that has worked to communicate such intents to an organization? If so post it!


Tags: