For the past seven years, I’ve held the position of CTO of Signal AI, a leading B2B SaaS AI platform that aids in better decision-making by analysing vast amounts of external documents. During my tenure, the business underwent significant growth. Our customer base, the scale and complexity of our ingestion pipeline, and our team size all grew by more than tenfold.
In such an environment, change is the only constant.
And although Agile and modern product development principles embrace change, the realities we face are not the neat iterations where technology teams ideally flourish. It’s much messier than that.
As the CTO, I realised that while certainty might not be achievable in scaling businesses, most of my work centred around providing as much clarity as possible and foster an environment resilient to uncertainty.
Here are my three key learnings:
A technology strategy is your compass to balance reactive and proactive work
I firmly believe that in scenarios with an in-house technology team, merely responding to changes is insufficient. You need to anticipate changes and proactively and incrementally put things in place so that when the time comes, you can perform rather than form. This proactive approach is even more crucial in B2B SaaS, where the feedback loop between initiatives and outcomes is much longer and less direct than in D2C. A technology strategy serves as the compass to traverse changes and underscore the importance of long term initiatives. It’s also an essential tool for the broader business, acting as a barometer to gauge how emerging opportunities weigh against long-term objectives. The strategy is not your roadmap or a detailed technology selection plan, but a high-level framework that should enable people to make relevant decisions.
Design for resilience
In such a fast-changing environment, context can shift with little to no notice. Factors like accelerated customer adoption or changes in usage can exert pressure on unforeseen system components. Designing a failure-tolerant system is key to absorbing these shifts: controlled service degradation, will allow you to manage the unexpected while going back to the drawing board to plan the next step. A modern stack and healthy foundational engineering principles are all you need. Highly cohesive and lowly coupled systems, good integration principles (pro tip: Microservices is one of - and not the only - solution), run on an elastic platform go a long way. Investing in observability is key, so you can understand what’s happening when things go off rails. It’s critical to match the technical solutions with the right mindset: it’s a shift from having a list of SLAs to hit to a way of thinking and designing software. Counterintuitively, this mindset will not slow down your time to market; by having people more aware of the low-hanging fruit of designing failure-tolerant systems, you will enable faster prototyping principles, and better time to market.
You might never achieve the ideal org design
While in hyper-growth, your rate of change is higher than the adoption rate from teams and people. Teams are more often in the form/storm stage than the perform stage. Use team topologies as a north star, but acknowledge that it’s an ever-evolving scenario. To balance out decisions, I kept assessing individual team maturity and the pace of change of each domain. The domains with more business and technical complexity, tend to be more resilient to change. That’s because, due to their complexity, their pace of change is slower. When possible, use those teams as a springboard to the rest of the organization. Be honest with people and teams about the journey ahead, and how things might change or how their contribution to onboard new team members (at the cost of some team stability) is part of their mission.
Communication and great people are the glue to all these. Emphasise talent density over quantity, treat people like adults, and encourage honest and open communication.
More than everything else, it’s a crazy rollercoaster; celebrate achievements, and don’t get too low on the inevitable mistakes along the way.