Building for scale – 5 lessons learned on building platform services

I wanted to write about my past 12 months working on Atlassian’s platform team. I’ve been on the both sides of the fence. 12 months on product and 12 months on platform. I was previously a product manager for Confluence Mobile and now I’m a product manager for Mobile Platform.

To set some context, I love working on products. That’s what product managers love to do. When you’re a product manager for a product, you work on one specific product or stream of work. You go deep as you work on product depth. You focus on a vertical. On Confluence, I thought a lot about how customers create content, how they collaborate on content, on the page viewing experience. I could work all day on the design of comments which I still believe is fascinating. Should the comments be stacked, threaded, threaded and teased with a short snipped of text, or threaded capped with only the first and last comment?

When I joined the mobile platform team, I wasn’t sure what to expect. As I’ve only worked on products. By way of background, a platform team builds common services that products consume. The platform provides the building blocks for the products. They can use our login service, UI, analytics, feature flag, developer tools and other standard components. It allows the products to focus on core product value. They can focus on what makes their products unique and differentiated, whilst leveraging the scale of the platform. On the mobile team, we ship an SDK on a weekly cadence. The products integrate with the SDK. I’ve worked on projects such as the new mobile login service which 3 of the Atlassian mobile apps use on iOS & Android.

Now that I’ve been on the platform team, I understand that I have to be broader. I must be horizontal as I have to consider how a service will work across various products in our portfolio (JIRA, Stride, Confluence) and also future products.

I recognize that many people haven’t had platform experience or come across the concept of platform. I have a very unique experience having been on both sides. I wanted to share that experience and the lessons learned. As the majority of product folks I know have worked on products. Its when a business is at scale that it invests into building a platform. You leverage scale to build businesses. Its also exciting to be on a platform team because its something I haven’t done before. In my opinion its really hard in the early days and that is also why I wanted to share it. Here is my experience so that it may help you understand what’s involved.

1. Align on product & platform priorities

When you are in a platform team, you’ll get a lot of requests. These come from product teams, platform teams, management and customers (via the first three groups). Its fine to get requests, even lots of them. This is normal in any product team. The same principles apply. Have a way to receive feedback and give feedback. Thats important for customers and stakeholders.

I found that setting the vision and roadmap helped communicate to internal teams why we’re doing something and why we’re not doing something. I said no a lot but I didn’t tell people why. I felt that once people understood the why and where we were heading as a platform team, they understood why we couldn’t do a particular request. Its because we’re building this platform that’s going to help us go to moon/next stage/milestone. That’s why we can’t do this small feature request now or why it doesn’t fit in with the vision. The product teams need to buy into that vision.

I’ve seen that if product and platform team priorities don’t align, this can be problematic. We need to be rowing in the same direction. Building for platform is a tricky game. We’re sometimes behind the product teams as they can move much faster. We need to take into account the needs of various products including future products. We are making changes that affect all products and we may need to work with other platform teams. There are ways to solve this problem which I discuss below.

I believe in this American Indian proverb which one of our Co-CEO quotes: “if you want to go fast, go alone. If you want to go far, go together”. We do a lot of roadmap alignment exercises and check-ins. This helps to have both groups have aligned priorities and that we deliver things in a timely manner. If can deliver platform value to customers, then we’re going to go far.

2. Align on customer value

The way I prefer to work and how i’ve seen it work well is where both groups align on customer value. Our customers are your customers. As in the end user is the customer. The platform team doesn’t serve the product teams. We all serve the end users (long live the users!). This is not the easiest thing to understand as it can be  hard to define customer value for internal platform teams.  I believe to truly build a platform, you can’t be an order taker. Product teams are an important stakeholder. But a platform is not a consultancy. We’re building something for all the users and for the future of the business. Hence its important to align on customer value. We need to be able to express what we’re doing in terms of customer value. Thats why we get our platform engineers to talk about their work in terms of customer value. Its why we advocate for customer facing metrics. For my team its the activation rate (first time login on mobile login). You might have an internal metric as well which is fine. But its important to have a customer metric if possible to align everyone.

3. Push vs pull strategy

As you mentioned above, you can’t be an order taker. But you can’t build things in isolation either. You need to build things that CUSTOMERS want and products want to adopt. We need to build useful things. We don’t want to have an inventory of stuff that never see the light of day. That’s wasted effort. Hence the alignment of priorities and understanding of customer value is critical.

It needs to be a dynamic of push and pull. We push the platform mission and agenda. The products pull from the platform in the other direction. It can’t be 100% pull or 100% push. Otherwise you’re probably building ad hoc stuff that may not make up a platform and doesn’t truly deliver the value of a platform. Or you have a huge inventory. Like all things in life, its a delicate balance.

4. Build a minimum criticizable product to find product/platform fit

We found that in the past, the product teams are very focused on their mission. Its head down, focused on a particular silo. I was the same. I didn’t know what was happening in platform teams and couldn’t make their meetings. I didn’t have time to read all this documentation coming out of there. Even though I knew it was important. Its tough. Hence the alignment of priorities is critical.

We use to write big upfront documentation. Some people gave input but the majority didn’t look at it closely. Then we would spend months building something. Then throw it over to the fence to the product teams to integrate. When integration started or when we would meet with teams, we’d hear that we’d missed some critical requirement. We may have ended up building it in a way that they couldn’t use easily. Product integration became really painful.

We decided to change this up and work more like a startup looking for product/market fit. We would build a “minimum criticizable product” (aka MCP). Our deliberate intention is to build incrementally and deliver the classic startup “MVP”. I call it “criticizable” because what we’re looking for is feedback from the product teams. We want to give them the smallest piece possible that they can play with to start giving us feedback which we can then iterate on. This has an advantage in that now the product team can actually use it and pay attention to it.

This is the moment when the rubber hits the road. Our aim is to get to this learning moment as early as possible. The earlier we can integrate, the better. We want the integration to be as tight as possible from when the platform delivers to when the product team integrates. This enables us to get feedback early and iterate to get closer to product/platform fit.  It can be tough to co-ordinate because products can have differing priorities and may not be able to test it ASAP.

We changed from doing the heavy upfront documentation which no one paid attention to because it wasn’t tangible. Now we deliver the following:

1. Minimum Criticizable Product with incremental milestones

2. Lightweight tech spec which provides sufficient detail

3. Integration document which is a Confluence page which has details on how to integrate and what they need to do. There’s also checkbox next to each product owner to let us know if they have integrated.

I understand that not all platform services can be built this way. Sometimes these can be journeys that can take a year or years. I’ve found in my experience that breaking it up into incremental delivery milestones and producing the MCP has helped us achieve our goals.

5. After you build a service, you need to run it

After you release a service into production, products and customers rely on it. This is even more critical for a service like login. Like all new services and products, we had some issues when it was first released. When a service enters into production, there may be new bugs discovered which we hadn’t come across in our testing. We learned that we needed to reserve time for integration AND to harden the service. Your first release is never perfect and you need to keep improving it.

When we learned of some of these issues, we added more analytics into our analytics platform. We also hooked up real time alerts using Pagerduty. This gave us more oversight into what was happening and real time dashboards. There is now a rotating roster of people that get messaged if the service hits a certain threshold. We get early warning signals which triggers us to look into it. When this happens, we diagnose, learn and improve the service. This is the process of hardening and maintenance. Building a service is half the battle. Maintaining it and making it run smoothly is a skill. Ensure you have a block of time for hardening and have plans to maintain the service.

If you have any experience in building for platform or consuming platform services, I’d love to hear your feedback!

I’m out like the Black Panther,
Matt Ho.

Day 282: Living between San Francisco and Mountain View (inbetween state of mind)

The past 24 hours have been juggling several balls. I’ve had to ruthlessly prioritize what I need to do. The first thing was to order a bed so I can completely move in. In the past week, I’ve read lots of reviews about mattress in a box products and tested out some Ikea beds. I didn’t have enough time to check out other stores or go back to Ikea to put in an order when everything arrived.

Luckily you can order online so that’s what I did. I also knew from testing it out that Ikea won’t deliver stuff til next week. Which is annoying in that I want it now and my last day is this weekend in my current place! Anyhow I’ve ordered a bed frame, mattress and a chair.

I went with a white theme. As I read that white looks brighter and makes a room look more spacious. Whereas black color attracts light and draws you in, making room look smaller. My room is a reasonable size, but it’s not huge. So I’m conscious of the space. I also discovered there’s a smaller built in cupboard that’s great for things like my hat collection!

Unfortunately, there’s no upsell option on IKEA website to do assembly. Even though they list it as a service on their website. I decided to use TaskRabbit as I have used them before. I hired a tasker. I know from assembling Ikea beds and other furniture in the past that it takes like 4 hours or so a piece. It’s frustrating and tiring. So I have hired someone else to do it.

I’ve realized that it costs like ~$200 extra when you count the delivery fee of Ikea and the cost of assembly. Should I have bought one of those mattress in a box companies and one of their foundations? My setup is still a few hundred dollars cheaper and it includes a chair.

Personally, I don’t like the idea of spending a lot of money on furniture. I’m ok with spending a bit more on the bed. But I’m not convinced yet that Casper, Leesa, Purple is a better mattress and worth twice as much. If I don’t like my current mattress I can always return it as IKEA has a 1 year guarantee and their mattress comes rolled up too. I also wanted a frame with storage to make more use of the space.

When you’re an expat living in a foreign country, you might not know how long you’ll stay there. My plan is to stay in the U.S for minimum 3 years (up to Day 1095). My L1 transfer visa is valid for 5 years. So I want to review my situation after 3 years. So I don’t want to spend a lot of money on furniture. I also want the flexibility to be able to move around. I love the fact that I can pick up everything in one car and go from San Francisco. Check out the name of my podcast – This Mobile Life!

Now I have to buy stuff like pots & pans, pillows, towels, bed, sofa, tables, chairs, and more! It’s a lot of money to invest upfront. I’ve decided to buy the minimum set I need – MVP yo! Plus I need to get a car too. The bed costs $1,000 and doesn’t include sheets, pillows, comforter, duvet. You’re looking at a few hundred dollars for that too.

I was fortunate to get a combination of hand-me-down furniture from a colleague who was downsizing and lives in the same complex. I got an old table, cutlery, plates, tangine pot, and sushi mats. From the building manager they gave me the demo furniture they use for display apartments when showcasing the place. They placed a sofa bed and table in my place. They needed to put it somewhere and they realized that I didn’t have anything (maybe they felt sorry for me!). Anyhow I now have a dining table, sofa bed, computer table, and basic kitchen setup I can eat from! To their surprise, I asked them for more demo furniture. I asked for chairs. But they don’t have any. You can’t have any shame – that’s how I live my life. Ask for what you want 🙂

I’ve been looking for the bedding stuff. I ordered the Amazon basics sheets set for like $30. My friend was horrified that I bought it as it’s made of micro fibre. She says that it’s like sleeping in a plastic bag. To be honest, I don’t really care. I’m happy to sleep in any condition. But I will take her advice and upgrade them to something better!

Last night I’ve been reviewing articles about what to look for in a pillow and comforter. The conclusion I have come to for a pillow is that it depends how you sleep. Are you a side sleeper, back sleeper or stomach sleeper? My preference is to get a natural material like feathers or goose. I’m going to stay away from latex, memory foam or synthetic as it may get too hot. I’ve been looking on Amazon and it’s really confusing. I’m overwhelmed by the 1,000 choices available! I’m probably going to go to a store like Bed Bath & Beyond, Ikea or SF Linen outlet so I can touch and feel them. That way I can get what I want and take it home, and start using it.

The last thing on my priority list is organizing a cleaner to clean my old place. It’s been tricky finding someone for the weekend and at a decent price. I’ve been getting quotes from Yelp using their quoting feature. I can see their reviews and ratings too.

A lot of cleaners are already booked up, not available on Sunday or can only give me a 2 hour time window. It’s annoying. I also need to make a 2.5 hour round trip if I want to be there and review their work. I know I need to lock in something soon.

I know the next week or so is going to be busy running around both places to organize stuff. I’m in that inbetween state of mind.

But I know the end result will be good. I’ll be saving a 2.5 hour commute each day. It will also involve lots of ice cream to celebrate!

However it doesn’t end. I’ll also need to find a room mate and rent a car. Then do my US tax return called W-2’s. I also need to organize my personal finances in the U.S. Of course there’s a blog post to come about those topics!

I’m out like moving out,

Matt Ho

Day 275: The relationship between cooking skills to free food (In da eatclub edition)

“You can find me in the eatclub, with enough food to fill a tub” –  inspired by 50cent

I was speaking to my colleagues and other people at big tech co’s (total sample of size of 8) and the consensus was that like me, they don’t cook much either. If at all. For myself, I can get breakfast and lunch at work. In addition, if there’s left over food from lunch, I can get a free dinner too.

We have this system called Eatclub where you pre-order your lunch for the week. So I get my own meal from a daily selection. Its like a corporate Grubhub/Deliveroo / Delivery Hero. Your employer pays for it. Its usually 80% the same stuff with some new varieties each week. Its not bad. I’d give most of them a 7/10. In fact, i’ve rated a bunch of them 3 or 4 out of 5. These are some of my meal adventures that I had this week:

Continue reading

Day 274: Layer Management

The keys to success for living in the Bay Area is layer management. The Bay Area has a lot of microclimates. So when I travel from the city (San Francisco) to South Bay, the climate is very different. It could go from windy to sunny. Or very cold to cold. Also when I get on the Caltrain, it’s much warmer inside. I need to be able to remove layer of clothing easily in a confined space.

Continue reading

Day 269: How I passed the behind the wheel driving test on my first attempt in California!

I wanted to write this as a record for myself and also to help out other people that are going for their test. I actually passed my test the day before, however the previous day’s blog post was all about the ‘shake’. There was an earthquake the morning of the exam! It was crazy. I woke up at 2.30am and couldn’t go to sleep for about two hours. I had my driving exam at 10am. This is definitely not ideal exam prep! Here’s a summary of what I did to pass the California DMV behind the driving wheel test. Its about my experience.

Continue reading

How to update internal stakeholders on a weekly basis

Its a typical hot, dry Christmas weekend in Sydney, Australia. What better time to write a blog post about product management? 🙂 This topic has been bugging me for a while. So thought I’d write this to you whilst in my too cold air-conditioned living room.

A common question I get asked is how do I update people in my organisation on a product I’m working on. I’ve been asked 3 times in the past 3 weeks, so obviously there’s something here that others want to know. I get asked by:

* Founders / CXO’s wanting to know how to get their teams to report to them
* Product managers on how to report up to management or other stakeholders in their org.

I’ll discuss why we provide updates, principles, cadence and a template that you can use. This is a format I’ve been using in the the past 5 months for my team at Atlassian. I would like to detail how I do it and hopefully it can provide you some insights that can help you!

Continue reading

Prioritization for product managers

Deciding on what to do and when is a critical part of the role of product management. There are a million opportunities out there so how do you know that you are pursuing the right one? Life has many trade offs as does building products. Such is life 🙂

Here are some lessons that I have learned when deciding what to prioritize and why. This is a blog post I have been meaning to write for a long time. But alas it also got de-prioritized. This is what I believe in when prioritizing.

Continue reading