Updated: Aug 19, 2020
When you’re part of something extraordinary on a daily basis — you tend to forget how extraordinary it actually is…
This is why I’ve decided to put on paper, or in a blog post in this case, the story of the extraordinary Wix Engineering culture, which I feel lucky to be part of and have helped shape over the past 3 years.
I’m Aviva Peisach, Head of backend engineering at Wix. With over 20 years experience in Engineering management and VP R&D roles in various startups and enterprise size organizations I can fully appreciate Wix’s unique investment in engineering and want to share some of the recipe for our secret sauce with you.
I will not cover all of our engineering practices, since there are too many to fit in a blog post and since they are continually changing and evolving to adapt to our growth and needs.
Instead, I want to focus on our unique formula for investing 20% of our engineering time in professional and community growth.
20% of your time to grow your professional skills
Wix is an engineering-focused company: our founders are engineers and about 50% of Wix’s staff is R&D. Since engineering is the heart and soul of Wix (as well as most of our muscle and brain power), we significantly invest in keeping our engineering in best shape by allocating 20% of every developer’s time to enhance their software engineering skills and build a strong, innovative and collaborative engineering community both within and outside of Wix.
Can you imagine having 1 day a week, every week, allocated to growing your engineering skills? We do so since we genuinely believe (and that’s proven on a daily basis), that investing this time makes us better engineers and significantly increases our velocity, productivity and daily joy of creation.
So how does it work? How do we invest this valuable time?
Every Thursday, all engineers per site and profession (e.g. Server, Front End, Mobile, Data science, and QA) meet for half a day of training, knowledge sharing and community building activities.
If we zoom into the server guild, for example (which happens to be the guild I head), every guild day is different, but will typically include:
Project spotlights, where developers share their recent projects, product, architecture and/or technologies they worked with, and challenges they faced, and talk about the lessons they learned.
Themed training: every 3–6 months we select engineering topics we’d like to focus on. For example, in 2019 we picked Performance, API first, JVM Internals, and TDD. Every topic then evolves into a full syllabus which includes talks, workshops, live coding sessions and related use-cases demonstrations. Speaking about that Performance training example, it featured:
Talks about Performance-oriented design
Performance pitfalls demos
Discussions about eventual consistency, product tradeoffs, and scale issues to consider for high Performance
Sharing of tools for monitoring and Performance tuning
Sharing “war stories” on Performance related issues and lessons from our day-to-day operations.
After that everyone was more of a Performance expert.
By engineers, for engineers
All guild activities are created by our engineers, for our engineers, hence every developer gets to contribute content to our guild days. You do not necessarily need to be an expert in a specific subject, you just need to be passionate about learning and sharing the knowledge you gained.
This is where Tracks come in: these are typically an hour and a half long events where we have dozens of different activities you can choose from. Typically, in every guild day you get to select one of 4 different track options. A few examples of the variety of our tracks:
Mob programming (pair programming on steroids) — this is when you get to code in a group of fellow devs and get to share and learn coding standards, refactoring practices, Intellij tricks and incremental thinking. And come out with a working program.
Design track — where you share a design dilemma (typically one you’ve faced and solved for one of your products) and do a group design for it, discuss considerations, debate on tradeoffs, provide new perspectives and reach suggested design alternatives.
Town Halls — these are mini unconferences where you can raise any issue / dilemma on your mind. Examples include talking about Mocks vs Stubs and working through questions like “how do I effectively estimate my tasks?” or “how should we effectively enforce deprecations?”. We also hold group discussions to hear other people’s experiences and insights. Town halls will often suggest guidelines or areas to be addressed by the guild.
Building your professional brand track — where you get to invest and consult on your brand presence — this is a sounding board for your next idea for a tech talk or a blog post. This is where you get feedback from other engineers to help you shape your idea into reality and get more tips on how to grow your engineering brand presence.
Learn a new coding language — where you get to learn (group-guided or self-guided) together. We had Node, Python, GO, Haskell, and more to come.
Pairing & sharing — where you pair with a developer who’s not in your team and share a recent dilemma or a recent project and either do mutual code review, design brainstorming, or prepare for post mortems. The point is to both gain and provide fresh perspective on your day-to-day dilemmas.
And since tracks change on a weekly basis — so much more, any dream you have on something you’d like to learn and practice together — easily becomes a track.
Every quarter you get to have a guild week. This is a week away from your team — where you get to pair with engineers who are not in your group and work together on tasks and initiatives outside your regular backlog.
You can pick a guild week track and here are a few examples for popular tracks:
Infrastructure track — where you get to contribute and build the next generation of Wix infrastructure, framework & tools, thus both helping to boost overall dev velocity, and give your perspective on usability of the framework
Join a team track — where you join a different team and work with them for a week. This allows you to both gain and provide a different perspective on code, developer practices, design, and production challenges. Learn another part of our huge product & gain new friends in the guild.
OSS track — Where you help open source our products and infrastructure to contribute to the entire engineering community.
Academy track — where you get to work on your next guild talk / workshop or next conference talk (many Guild talks tend to become talks you give in global tech conferences) or work on your blog post. Accompanied by the great minds and mentors from our Wix Academy — helping to boost your talk graphics, stage presence & delivery skills, dry-run and create stunning outcomes.
Bring your own track — Have an idea or initiative you’re dying to work on but never have the time to do it? You can bring it to a guild week, pair up with someone, and make it happen.
So many options to choose from, so many worlds and perspectives to explore, all allowing us to break the routine, grow our engineering skills and experience while innovating, contributing and helping others. A perfect Win-Win-Win.
The Wix Engineering community and guilds exist and evolve beyond the scope of guild days and guild weeks, of course — with active slack channels, newsletters, shared boards and more, we continuously share knowledge and lessons learned. People are always willing to help and consult, which eliminates the fear or uncertainty about who or where to ask.
What about the coronavirus affect you ask?
Well, initially we canceled all guild activities for a month or two allowing everyone to adjust to the new remote reality. But soon enough we revived all of those activities in a remote format. Guild days are conducted over Zoom, for workshops and tracks we break out to smaller groups via breakout rooms and we try doing something fun on every guild day like bot competitions, ice cream toast sharing, and funny group photos.
We also now conduct our guild days & weeks globally allowing everyone to be exposed, contribute, and leverage knowledge across the entire guild and not just on the local site. So indeed, some of the intimacy and the f2f affect are gone, but so is the new reality. Guild days and weeks remain the glue of the guild and allow us all to feel like we are a part of something bigger, like we're closer together - which is even more important now, with the remote reality upon us.
Having a lively and vibrant engineering community gives each and every member an opportunity to grow and have access to the brilliant minds and experience of our hundreds of talented and passionate engineers.
This post was originally posted on Medium
This post was written by Aviva Starovolsky-Peisach,
Server Guild Manager
For more engineering updates and insights:
Visit us on GitHub
Subscribe to our YouTube channel