Bringing the SaaS
I’d like to share a journey with you…
Our starting point is a business that has been around for over fifteen years, operates as the leader in a stable but niche market, and gets decent praise from its customers. The actual company and product aren’t a secret but since this is my personal blog they’re not exactly relevant either. Suffice to say the products are a complex mix of custom hardware and domain-specific software. However, when viewed through a certain lens, we’re in a traditional software shop that is doing traditional software-shop things. Posting a monthly release to a customer service website so it can be downloaded and installed on desktops worldwide. Dealing with customer escalations and pushing out patches. Once in awhile taking a break from new feature development to make architectural enhancements. Like all development shops, there are things that could be improved. But generally things are working fine and ongoing projects support the business objectives. People know “how things get done around here” and it all happens without too much grief or drama.
Well enough, but we have to leave this place. Although things are good, they’re not good enough. Legacy markets have matured and aren’t growing as fast as they used to. There is more growth to be had in adjacent markets, however customer demands are higher over there. Across the board, expectations have changed as everyone has gotten used to the “app lifestyle” that they enjoy on their phones. They want the shiny new web-mobile-async thing. There is a huge interest analytics. These products are used in R&D settings and customers need to be more efficient and effective. There are some gems lurking in their data. And — let’s face it — we could stand to be more efficient and effective ourselves!
So we need to leave because it is not safe to stay here. Because if we don’t disrupt ourselves by making some fundamental changes to the business then we risk becoming irrelevant in the market. That would lead to cost cutting and the death spiral.
Mapping things out, we need to get to a place where we are more effective at getting the right products into customers’ hands with a minimum of friction. Some of these customers are going to be companies that we’ve never heard of and that we cannot reach through our traditional channels. Going to market in new ways is going to require some major changes to the status quo. That’s never easy for so many reasons. People don’t like it when their cheese moves around. Plus, we’re going to need to level up our capabilities in a big way. Not least, we’re going to need to form some new partnerships both inside and outside the company — without letting these bog us down.
This is going to be a complicated journey and there are many topics we could discuss. But since I’m a working software architect (i.e. the kind that spends 80% of time getting hands dirty and somewhat less managing and pontificating) the best perspective that I have to share is one of how software can support and enable business strategy. Specifically, I’m going to lay out details of how a new SaaS platform was architected, designed, and implemented — specifically to support this transformation. I’ll share the thought processes, decisions, mistakes, and wins. I’ll include as much technical detail as possible. I’ll also weave in some thoughts on engineering culture and other soft topics.
In the interest of complete disclosure, my company is two years in on what is sure to be at least a four-year effort. Or maybe it is a five-year thing. As I write this it’s not like I know how this turns out. We live in the real world where markets, people, and companies are always changing; so it’s hard to know how long much longer we have to the goal. And when are large software systems ever really done?
First up: architectural principles!