Early in my career at Slack I was looking for ways to have an impact.  I asked my manager what I could work on to add value to the team.  She said that we wanted to catch bugs earlier in the development process and that Cypress testing might be one way to do this.  I began exploring Cypress and eventually this work developed into a reliability initiative.

Spinning up new initiatives is tricky, and I learned some lessons along the way that might be applicable to people in other organizations. In this post I’ll describe the process I used to find opportunities, build consensus, justify the cost, and ultimately gain support from stakeholders.

Finding value to add

You may or may not get a straightforward answer about where to add value like I did.  To identify a place to add value think about a few questions:

  1. What is the team doing well?
  2. Where is my team struggling?
  3. What am I good at?
  4. What am I interested in learning?

You probably don’t need to focus on what the team is doing well.  Look at the remaining three questions to find an intersection between where the team is struggling and what you are good at or interested in.  Run your ideas by a manager or another engineer to validate that they seem like a good place to start.

Example Cypress test

In my case the team was looking to uncover bugs earlier; any bug we could proactively find was one a customer wouldn’t stumble on.  Having never done any automation testing before I was interested in learning Cypress.  I had already had some conversations with my manager about exploring Cypress as a way to address the reliability issues.  I now knew where there was potential to add value and began focusing extra cycles on learning about Cypress and how it was currently used.

Getting buy-in

The next step is gaining the support of stakeholders.  There are always costs to starting an initiative, whether that’s people taken away from other existing work or just the opportunity cost of choosing one direction instead of another. Making it easy for your stakeholders to justify this initiative to their own stakeholders makes it that much more likely you’ll get the green light.  Gaining support is not a competition against your stakeholders, it’s a collaboration with them.

To start, compile data to help explain what you want to do and to show why it’s more valuable than other ways that you could spend your time.  Involve other engineers early.  Reaching a critical mass of people ready and willing to work on something often contributes to making the value apparent.  Realize that change takes time, and you will likely have to persevere before things take off.

In the initiative I worked on I started a public Slack channel where I’d broadcast my findings about Cypress and document small successes along the way.  I would tag stakeholders on messages showing small improvements I made or data about how Cypress could have prevented incidents we encountered.  Over time this led to organic conversation about Cypress in the channel.

Cypress terminal output

Documenting what I was doing in a public channel made the initiative possible.  This may be a bit counterintuitive; showing your process can be scary as it lets others see missteps that happen along the way.  That’s not bad though, as it humanizes the entire process and let’s people understand more fully where you or the organization are (and where it would be best to get it to).  A public forum provides a place for your stakeholders to really understand what you want to start, and eventually it becomes a place to drive it forward.

Growing and tracking

An initiative can’t just be you.  To have sustained impact on the business (and value for your stakeholders) it will need to grow.  Growth can be organic or intentional, here are some ideas for both.

Organic growth comes from raising awareness: conversations with other engineers, demoing your work to your team, the public documentation of your process.  Any way that you can raise awareness about what you are doing provides an opportunity for organic growth.  In my case other engineers began posting in the public channel I had used to document the process.  They began to associate that channel with Cypress.  That channel provided a jumping in point for other engineers.

There is also a place to actively and intentionally grow.  If you have any sway over your team’s priorities you can begin to suggest or add things that further your goal.  Since you’ve gained the support of key stakeholders you may be able to get them to help you get things on the roadmap.  You can also ask other engineers if they’d like to get involved; if not, you can ask them what they think could be done better or what’s stopping them from getting involved.  By continuously raising awareness you will keep your ideas in the forefront of people’s minds.  One day at a meeting where we reviewed a production issue, we decided a Cypress test could have prevented it.  Another engineer in the meeting volunteered to write the test.  That engineer had been watching the channel, and so through a combination of organic and intentional growth the initiative had grown.

Growth is great, but stakeholders will not be satisfied with that; you also have to demonstrate that the value proposition you convinced them of is viable.  Showing metrics, data, and results sustains the initiative by maintaining the support of stakeholders.  If you’ve said that your idea will reduce bugs, demonstrate this.  Show the number of bugs before and show that now that number is in decline.  If your initiative is supposed to increase user engagement, show that engagement before and after.  Whether or not you know it’s working, showing quantifiable value is imperative for the initiative to survive.

quartz sphere over beach

Eventually an initiative can take on a life of its own; it won’t be “yours” anymore but will become a part of your team’s culture or process.  It can be hard to release control of something you’ve started but change of ownership is a great sign, and indicates that you’ve been successful.  This is a time to reflect on how to continue being involved and what may come next for you.  Can you make it even better?  Can you continue to enable more people to benefit from it?  Is there something else to start focusing on?  In my case I’m still very involved in Cypress testing, but I’ve more recently begun putting time and attention into Typescript.  It’s also something that will help with reliability but it’s a new adventure with new challenges and problems to solve.

There isn’t a formula for starting an initiative but I hope you leave this post with some ideas, some encouragement and maybe some new resolve to start whatever idea you’ve been thinking about.  You can.

Oh, and if you’re interested in starting an initiative at Slack, or working on one of the initiatives we already have going, we’re hiring!