Lost in the grid

Ali Rayl knew Slack’s customers better than anyone. As Slack’s first customer support staff, Ali personally answered every ticket during our early alpha and beta rollouts. She was in the weeds of every front line issue as the customer support team grew along with our user base. Over the years she became finely attuned to the evolving sentiments of our customers. So she understood the pain points they were feeling, whether from irritating bugs or major outages.
By the middle of 2017, Ali was feeling that pain keenly. At this point she was VP of Customer Experience, overseeing the second largest department in the company. Our patient, tireless customer support folks who triaged and responded to every ticket, tweet, and email our customers sent us. And the customers who were using our new Grid product were sending us an awful lot of tickets.

We launched Enterprise Grid in early 2017 to meet the demand from large organizations using Slack. We started out serving small teams, then grew to medium sized businesses. Now, our customers were name-brand companies that spanned global operations of thousands of people and dozens of departments and offices.
We reorganized our Product roadmap accordingly. Large companies required a variety of compliance, security, and audit features to meet their legal responsibilities. We built those. We remodelled the codebase around the concept of an Organization that could encompass many Teams (which we then renamed Workspaces). We built administrative workflows to manage all this.
To address this market of new larger customers, we had reshaped our original Accounts team – which had primarily supported existing customers of Slack – into a more traditional Sales department. The demand for Grid was driving our growth and revenue forecasts to new heights. Large customers were ready to pay top tier rates so that they could roll Slack out across their organization. The new workforce of professional salespeople we were hiring knew how to convert that demand into revenue. The deals were rolling in.

But the product wasn’t good.
On paper, Slack Enterprise Grid supported the use cases of a large organization. It could scale to hundreds of thousands of users. It allowed administrators to divvy up departments, projects, and offices as they saw fit. Granular permissions enabled careful control of who could see what. All the various compliance features had been vetted and approved. We had checked all the boxes we learned about from our customers.
But in practice, there were papercuts everywhere in the product experience. Some of them might be better characterized as festering wounds. And our users – the ones we were charging our highest prices to – were feeling those papercuts every day.
By adding an Organization as a container for Workspaces within a Grid, we intended to solve for the organizational complexity of a large company. But we also increased the complexity of Slack’s data model. We added an organization-level user for each person at the company, and a companion workspace-level user for each of the workspaces they belonged to. This allowed granular control over memberships and permissions, but also meant that all our code had to negotiate this two-level model. Bugs began to crop up.
User groups – a simple container for a list of users that allowed them to be referenced as a set – were left at the Workspace level. This did not match how people expected the feature to work, leading to frustration.
Channels could be contained within a workspace, shared to many workspaces, or shared to the organization as a whole. These variations in visibility had to be conveyed to the user so they understood the audience their messages would reach. It also meant we had to figure out how to manage these “cross-workspace channels” in everything from autocomplete to navigation to sharing flows. In many places where these relationships had been under-considered, users were met with dead-ends and confusion.
Worst of all, the design of Grid enabled organizations to add Workspaces at will. In many cases this meant a single user might need to sign into many workspaces to see all of their work. They would then have to switch between them constantly to make sure they were caught up.
This also meant our apps on desktop and mobile started loading more and more workspaces. The simple architecture we launched with in 2014 began to strain and buckle under the load. Our biggest customers, with the most valuable associated deals for our business, were the hardest hit.
In some cases our apps would hang or struggle to boot as they were crushed by the demand of loading a dozen or more workspaces. Understandably, this created ongoing irritation for people just trying to do their jobs. We were failing in our stated mission to make people's working lives simpler, more pleasant, and more productive.

Our Sales and Customer Experience teams were acutely aware of these problems. Our execs were hearing about these issues directly from customers by text message and in boardrooms. Significant engineering effort was going toward fixing them.
But we weren’t feeling the pain as users. Slack’s own workspace, named after our original company Tiny Speck, was still living blissfully on the original, non-enterprise, vanilla Slack. We were unbothered by multiple workspaces, channel sharing confusion, or fragmented User Groups.
We had broken a fundamental yet largely implicit rule of our product development process. We eat our own dogfood. Every new feature was incubated for weeks or months and was refined heavily with internal feedback before we released it. We used Slack more intensively than anyone else so we could find and fix issues and sand off rough edges before our customers are exposed to them.
This had been a crucial contributor to our early success, separating us from the many companies who set out to solve someone else’s imagined problems rather than their own. With Grid we had broken that promise. And our customers were paying for it.
By this time we had begun to recognize that Slack the product worked best for the size that Slack the company was at any given point. This was a predictable outcome of our development process and practical biases. When our customers were of a similar scale and stage of maturity as us – like our startup peers – this mirroring helped us build a product that worked well not only for us but our users. With Grid we were now shipping software intended for orgs many times our size, and the mismatch was evident.
“Until we switch Tiny Speck to Grid, we won’t fix Grid,” Ali put it bluntly. She was arguing this to the other execs at the company. Her unique perspective included a bird’s-eye view of trending customer support issues, an applied understanding of our engineering complications, and a deep intuition for how Slack worked. From this perspective, she had diagnosed the problem.
Her proposed solution would bring the pain our customers were feeling into sharp focus. We would move Tiny Speck onto Grid, and we would no longer be able to ignore the problems we were inflicting on our customers.

We set about preparing ourselves for the move. Before we could even get started we were faced with questions we hadn’t fully anticipated. We had to figure out how to divide up the company into workspaces. What channels belonged together? Who should have access? How should we manage that over time? Does it make more sense to divide up our work by department, project, region, or job description? We had channels that did all of these things, and when they were all in one big bucket that fluidity was natural.
When considered within a larger structure, it wasn’t clear what would work best. Of course, our customers were dealing with all these questions as well. As Dave Macnee, one of Slack's earliest Sales & Customer Success representatives, relates:
I remember taking a call with McKinsey on a whimsical pouf in the "Jam Band Room" in SF because I couldn't find a proper meeting room. They liked Slack but had a lot of questions about why Grid worked the way it did. How they should organize their Grid instance – workspaces for practice areas? / verticals? / geographies? I made recommendations and spoke with authority. And had a laugh afterwards thinking about me telling McKinsey how to organize internal communications. That might encapsulate the early Grid era in Sales.
If a customer was starting fresh they could come up with something plausible and see how it evolved. But many customers were, like McKinsey, trying to graft an organizational map onto an existing Slack team with idiosyncratic patterns and organic relationships that had built up over time. Our Sales & Accounts people had heard about and relayed these challenges from many customers. Now we had to solve them for ourselves.
After much discussion, we settled on a Global workspace for company-wide channels and announcements, department-specific workspaces for PDE (Product, Design & Engineering), Customer Experience, and Sales, and a Social workspace to collect our random fun channels.
One of our first realizations was that channels in “secondary” workspaces felt much farther away in day-to-day use. Any given employee would spend most of their time in their department’s workspace where their work channels belonged. Other channels that had previously sat alongside those work channels were now behind a workspace switcher. Out of sight, out of mind. Our social channels got quieter. We recognized this might be a good sign of increased focus, but it also marked a subtle cultural shift for the company.
We wondered if the gaps between departments might start to grow as we got used to the new structure. These growing pains were happening as hiring continued at a breakneck clip, adding hundreds more people to the company every year. What would the experience be like for those new people? It wasn’t clear as we navigated the migration what we might be losing in the process.
As we packed our proverbial bags, we also realized that our own Slack workspace was full of old channels that had outlived their usefulness. Either abandoned, forgotten, or simply finished, they nevertheless hung on – cluttering up sidebars and autocomplete lists. Our new Search, Learning & Intelligence team added a clever feature to recognize these dormant channels and offer to auto-archive them. We refined our sorting algorithms to prioritize channels and people in the workspaces you belonged to, so that the constellation of things you cared about was closer at hand.
We fixed a slew of minor bugs and product gaps that had fallen through the cracks during Grid rollout. We set out on larger efforts to resolve cross-workspace issues more fundamentally, eliminating a wide range of issues that made navigation and cross-referencing objects across them difficult. At this time we were also rapidly evolving the product and code to support Shared Channels, our new product for inter-company communication.
Our codebase felt like it was barely keeping up to the new demands we were placing on it. We began to outline the shape of a second-generation technical architecture spanning our servers and apps that would incorporate the requirements of Grid and Shared Channels more coherently. Simultaneously, we began to experiment with switching to programming languages and techniques that were better suited to the scale we were now addressing. We didn't realize it at the time but this work would consume most of our engineering effort for the next several years.
By the fall of 2017 we had moved Tiny Speck onto Grid. Ali was proven right. By using the product as our users were experiencing it, we saw its defects more clearly. The natural drive to eliminate the friction we were experiencing resulted in improvements on a daily basis. The pain had become productive. The product got better, incrementally at first and then more broadly as larger improvement efforts landed.
Meanwhile, Enterprise Grid was making the business more successful than we’d ever imagined. Against all odds, we had broken through and made the leap from consumer demand to enterprise demand for Slack. This was the holy grail for a B2B SaaS (Business-to-Business Software as a Service) company like ours. We were making money from teams of all sizes, from tiny startups to the biggest companies in the world. And the enterprise demand was so strong that it allowed us to begin to see, hazy and far off, the mountaintop we’d been striving toward.
Grid put us on the path to taking the company public.
One of several mentions of Slack in HBO's Silicon Valley.
Thank you to Jamie Scheinblum, Myles Grant and Dave Macnee for their notes and help with this post.