In my first years of working as a developer, I dreaded a few words like “marketing”, “exciting”, and “strategy”. And for good reasons: most times they were void of meaning.
A few years later, as a technical lead, and later as a technical coach, I learned that the lack of meaning in the words “technical strategy” hides a deeper truth. If there is a technical strategy, it’s often not clear to developers. If there isn’t one, I can tell in the first 42′ of conversation.
In a series of three articles, I will share more about what I think technical strategy is, why it’s useful, how to start building one and who is responsible for creating it. In this part, I’m tackling the first two subjects: what is technical strategy and why it is important.
What is Technical Strategy?
There are many definitions for strategy, but I like to explain it in simple words. The simplest explanation I found is:
A strategy is a set of decisions that influence more people over a longer period of time and that are typically very difficult to overturn.
Let me give you an example from programming. How you decide to implement a private function today might affect you and a few other people. Moreover, any of your colleagues can change it. The decision to use _your favorite technology here_ affects all the developers for the lifetime of the product and requires considerable effort to change. The first is a tactical decision, while the second is strategic.
There is a gray area between strategy and tactics, as you can see from the explanation. It’s ambiguous what “more people” and “longer period of time” and “typically” mean. Is “more people” two people, 10, 20 or 50? Is a “longer period of time” two weeks, a month or 5 years? Is “typically” 90% of the time or 95% of the time? You should get used to these types of ambiguities if you want to understand strategy and tactics; reality isn’t as neat as programming. Strategy and tactics intersect and influence each other all the time, something you should keep in mind if you expect to make only strategic or only tactical decisions.
The technical strategy is nothing more than strategy applied on technical decisions. Yet again, reality kicks in and things aren’t so neat. Strategic technical decisions are not only about technology, they are heavily influenced by the other functions of the business: marketing, business development, financial, product etc. They result from a dance between various needs, constraints, and concerns of the world around development.
Why is the Technical Strategy Important?
The short answer is:
If you don’t make strategic decisions, someone else will make them for you, and they might not be the best for your business or product.
Here are a few examples of decisions to make for the product:
- The technologies used and the infrastructure
- The modules structure and communication
- How code is written; new developers will have to change it or live with it
- The source control system and the bug reporting tool
- Whether it’s OK to work from home or not, and this will influence the tools used.
Someone needs to make these decisions. Can you make them so you don’t waste a lot of time and money with their aftermath? Or are you OK with throwing money at the problem (maybe rewriting the product completely) when it’s successful?
Either way, someone needs to make a strategic decision. Then there’s the issue of skills.
When it comes to strategic thinking, not all people are equal. Our experience shows that it’s not an innate trait; it’s a trained one. It’s hard to say where it comes from, but we suspect a mix of experience, deep analytical skills, and lots of personal exploration. In addition, the person making these decisions has to be relatively comfortable using partial and incomplete information. In today’s world, there’s no time to try and develop the same product in 5 technologies to see which is the best. These experiments tend to be limited to very specific parts of the code.
It doesn’t have to be one person. With good facilitation, a group of smart people can make better decisions than any one of them. This requires facilitation skills from someone in the team or an external facilitator (brought from a company like Mozaic Works).
Is your company investing in building a technology strategy? Let us know in a comment how it helps the product success.
Check below the next 2 articles from the series: focusing on what a technical strategy should contain for a specific product and who creates it.
Product strategy: technical strategy in practice (II) – what a technical strategy should contain for a specific product Product strategy: technical strategy in practice (III) – who creates the technical strategy