Engineering culture at Snyk: The values that support and drive our teams
May 8, 2023
0 分で読めますSnyk has always been a company with an amazing and strongly defined culture. As we grow, we want to be intentional about sharing and spreading our core values while giving space for different departments and divisions to build on that core. Doing so helps Snyk hold onto what makes us Snyk and also helps new hires onboard successfully.
Engineering culture sits on top of the company values, adding beliefs and values that impact the way our software engineers make decisions or actions when working. In this case, we can turn all the motivations, standards, best practices, tooling choices, etc. into a well-defined engineering culture. This helps us keep and spread this culture to all of our fellow engineers.
We want Snyk's engineering culture to shape how our software engineers approach problem-solving, innovation, and collaboration. It helps build the environment that supports engineers in reaching their full potential and drives the success of the organization as a whole. At Snyk, we believe that our engineering culture is a crucial aspect of our overall company values that build on our values and priorities, helping us attract and retain top talent.
On top of that, we believe that a well-documented engineering culture will help us be more effective by:
Surfacing inconsistencies and forcing necessary discussions.
Making culture more predictable.
Empowering people to act (if I’m aligned with the culture and have the best intentions, I can’t get in too much trouble).
Making engineers row in the same direction.
Reducing friction between individuals.
Attracting candidates aligned with the culture (and deterring those who are not).
Assist with onboarding new engineers and establishing shared values and expectations.
How we defined Snyk's engineering culture
Snyk has a strong and well-defined culture on the organization level. When we speak to each other, our values are used to help us align and focus our attention.
One Team - We celebrate the strength of our community, collaborating with enthusiasm and purpose to do great things.
Care Deeply - We are proud to lead with a passion for each other, our customers, the planet, and the communities where we live and work.
Ship It - We operate swiftly, embracing continuous innovation to deliver results for our customers, always learning, iterating, and improving.
Think Bigger - We celebrate the strength of our community, collaborating with enthusiasm and purpose to do great things.
Learn Always - We believe there is always more to learn and that learning is the lifeblood of our growth as individuals and as a company. Never stop learning.
Each of these core values can be applied in different situations. We find that focusing on these values helps us be as successful. Now, how can we build onto these core values and help all of our engineers stay on the same page and be successful?
We brought together leaders from around all of Engineering, put our values in front of them, and brainstormed about all of the things that make engineering amazing at Snyk. Matching our core values in a way that speaks to our Engineering practices resulted in a written Snyk Engineering Culture document which stands as the basis for this blog post.
One Team
We celebrate the strength of our community, collaborating with enthusiasm and purpose to do great things.
We over-communicate
As a distributed company, we are verbose about our progress, processes, issues, etc. This includes communication, documentation, and best practices for sharing information. Examples include:
Sharing progress and updates on projects on a regular basis without asking for it.
Demoing new/WIP features.
Regularly recording and sharing videos for anyone to see.
A technical documentation guild that promotes best practices on how to be great at documenting and technical writing.
We regularly give and receive feedback
We encourage our people to review often and seek feedback from peers and leadership. We also know how to apply feedback and how to benefit from it. Feedback is a gift, and we always offer and accept it with that context in mind. To promote feedback, we have annual/quarterly/non-regular reviews, private 1:1 feedback, and a public appreciation Slack channel.
We never work alone
Decision-making, solving non-trivial and trivial tasks, resolving incidents — we always have someone to support us. People are not afraid or ashamed to reach out to collaborate with others. We err on the side of collaboration and encourage leaning on our One Team value.
For example, many teams practice pair programming / mod programming / group programming to support each other, keep focus, and bring the best solutions forward.
We have a blame-free culture
Everyone is part of what we do, and how we respond, grow, and learn is more important than any who-done-it retrospective. We always focus on improvements and future handling when discussing issues.
We're vocal in our appreciation for the work of others
We always extend appreciation in public channels of communication, including a dedicated #appreciation channel in Slack.
Care deeply
We are proud to lead with a passion for each other, our customers, the planet, and the communities where we live and work.
We consider quality/non-functional requirements
We are mindful of even implicit requirements when providing value to customers, for example, by considering usability, reliability, testability, efficiency, and overall production readiness. We:
Fix problems instead of sweeping them under the carpet
Cover features with a reasonable amount of tests
Provide the proper metrics, dashboards, and alerts
Internally use the products and features we build (ie. dogfooding)
We consider the ethical implications of our work
In conducting our work, we stay mindful of our ethical responsibilities to society and seek to drive ethical considerations into our requirements.
We consider requirements that provide value to vulnerable communities, such as accessibility requirements in UX.
We handle data according to the applicable regulations and take data governance seriously.
We do not employ deceptive design patterns (for example, ones that coerce people to sign up for things or otherwise trick people).
Engineers have a responsibility to raise concerns about potential ethical violations and should feel empowered to do so without fear of retaliation or retribution
We think about customers first
All customer issues matter, and supporting our customer and front-line teams is a vital task for our teams.
Engineers join debugging calls with customers to speed up fixes.
We keep a clear overview of issues and prioritize them together with feature work.
We do user research for all the new features to guide our design based on their direct needs and use cases.
We encourage connection and socialization (but don't force it)
We help those who love interaction to have more of it. But we don't force anyone to socialize since we know it's not what everyone wants. To help, we offer fun Slack channels, donut Slack channels, fun team time, social events, happy hours, and more (on and offline).
We are mindful that everyone is having a different day/experience
Snyk knows how to operate in a cross-time zone environment and has experience with distributed teams. We respect people's calendars (child care, doctor appointments, etc.), respect people's time zones (no meetings or expectations of Slack responses), and offer a learning session called Timezones for managers and those being managed.
We treat diversity, equity, and inclusion (DEI) as a core principle
We are strengthening Snyk’s inclusive culture, where we embrace differences, maintain a sense of unity, and empower each other to be our most authentic selves at work. We offer a variety of Snyk Resource Groups (SRGs) for different marginalized communities and have a Mosaic@Snyk internal mission to strengthen Snyk’s inclusive culture.
Ship It
We operate swiftly, embracing continuous innovation to deliver results for our customers, always learning, iterating and improving.
We work with vertical slices
Every piece of work we do begins with a clear user-centric deliverable in mind. These should run across the stack and help derisk the future work needed. We apply iterative development to receive early feedback.
Suggested reading: Marshmallow Challenge, Innovation Games: Creating Breakthrough Products Through Collaborative Play, Mark Finnern | Any significantly advanced work is indistinguishable from play, Visible Architectures, How Big Tech Runs Tech Projects and the Curious Absence of Scrum
Our teams have the freedom to choose their own process
Whatever process helps you ship: XP, Kanban, Shape Up, Scrum — pick your poison. At the same moment, we have freedom within a framework — to make it work for the team. But the team should be aligned with the group to some extent. Teams within the group should be able to plan, establish dependencies, and communicate about short-term objectives together.
For example, we have some teams that follow XP (e.g. no sprints, not pointing stories); another group uses Shape Up; and Infra uses a 1-pager/6-pager model for communication and decision-making.
Our teams follow "Definitions of Done" to track when work is really complete
Done goes beyond having it in prod but in the hands of real engaged users and stakeholders. We are continuously working on what is “Definition of Done” in internal channels.
We care deeply about the DevEx and build/purchase tools to support you
We’re always interested in implementing better ways. This means new tools can be suggested, tested, and validated to become part of our standard suite of available tools. For example, Polaris, Jira, and CircleCI are all available for our engineers, and we have Slack channels for supporting them and for adding new tools to the mix.
Think Bigger
We are fuelled by our ambition to achieve the extraordinary, pushing past limits to build solutions that can change the world.
We automate
Don't waste time and effort on routine processes, repetitive steps, time-consuming operations.
We refine processes
Don't stick to something just because it’s worked like this for ages. Hack and fix processes to make them work best for the company.
We think beyond team borders
We are thinking about and surfacing dependencies and being part of a group — not just the team. We are always sharing our progress on the levels above us, collecting feedback across our group, and encouraging big ideas (ex: Let's change how X works). To promote collaboration across teams in a fun way, we host hackathons and other events to bring everyone together.
We design for the future and develop for now
We strive to find a balance between Think Bigger and Ship It by thinking bigger in architecture and design and focusing on vertical slices, and scaling scope when implementing.
Learn Always
We embrace a mindset of openness and curiosity, learning from each other and always seeking ways to grow.
We encourage and practice mentoring and coaching
There’s no competing with a strong peer-mentorship culture. It’s a competitive advantage in growing an organization quickly. To support this, we have #miyagi-academy, #mentorship-* channels and are happy both to ask for and to share knowledge. We also offer a learning session on How to be an effective educator.
We offer a Snyk Employee Exchange program
In order to improve by iteration, we have launched the Employee Exchange program. This allows employees on the different engineering teams to switch to a different team for a sprint in order to learn new tech, experience new processes, and better ourselves as One Team.
We encourage Snykers to use their learning resources
We value knowledge, learning, and self-development. Snyk supports us to invest more in learning by encouraging calendar blocking for learning (and respecting those blocks), providing an annual education budget, and giving access to learning resources like Learnerbly, Udemy, O’Reilly, and more.
We regularly run retros and learn from our experience
While most teams run sprint/project retros, we also run retros for the new processes and initiatives at their early stage to identify what can be changed, fixed, or improved. The review and hack processes are all about us.
We perform incident reviews
We run post-incident reviews and postmortems. This helps us to improve in two ways: how do we address incidents and what can we do to prevent a similar incident in the future? To support this, we have an incident guild and a dedicated major incidents project.
We attend Snyk School
Snyk School is an engaging and interactive forum led by Snykers that will give you the opportunity to learn more about topics critical for our learning and growth.
We demo our work
We are keen to share technical changes by demonstrating them in working software. We share our success and progress in different meetings for different target groups: peers, support, business. This includes bi-weekly company-wide demos and monthly demo calls.
We have defined engineering roles
Having well-defined roles supports professional and personal growth in the sense of a career path. Engineers are able to understand where they stand at the moment and which aspects should be improved.
Conclusions
Now that we’ve taken all of our beliefs and practices and dropped them into the written word, we can more easily share them with all of our talented engineers spread all across the world. We can iterate on them as we learn (Learn Always!) and support Engineers in making the best decisions they can. Decisions aligned with our values and engineering culture will rarely lead them astray!
Culture can be hard to define at first. It’s something you internalize and live. Once you take a step back and look at it, you can see where there are values guiding how you approach work and problems. We challenge you to give it a try! What values do you find important in helping your teams be most successful?