Wix Engineering: Continue Your Learning Journey on Our Medium Publication

Wix engineering blog tells the story of our daily challenges and our way of solving them. You can read about architecture, scaling, mobile and web development, management and more. All written by our very own Wix engineers. But there’s more.


You can find even more valuable content on working at scale, solving robust challenges and creating highly efficient code. In case you missed it - introducing our Wix Engineering Medium publication.


Check out these featured Medium technical articles. You can find many many more on our Medium publication. And yes, all written by our very own Wix engineers.



 

Continually Growing Your Engineering Skills While Scaling the Organization - The Unique Wix Engineering Culture - Aviva Peisach


Aviva Peisach, our Head of backend engineering, shared the recipe for our secret sauce - our unique formula of investing 20% of our engineering time in professional and community growth. Learn how having a lively and vibrant engineering community gives each and every member of our teams an opportunity to grow and have access to the brilliant minds and experience of our talented and passionate engineers. Read Here.



How We Managed to Reduce our Latency by 3 Times - David Abramzon


Have you ever had performance issues with a big microservices architecture? In this article David Abramzon shares his personal story on how we managed to reduce latency in the Wix authorization system 3-fold, ending up with single-digit (in ms) responses consistently.



4 Microservices Caching Patterns at Wix - Natan Silnitsky



Wix handles a huge amount of traffic. More than 500 billion HTTP requests and more than 1.5 billion Kafka business events per day. Caching responses and events is critical to having the best performance and resilience for Wix’s 2,000 microservices. Read Natan Silnitsky’s article to understand how we do it.



There’s nothing like a first impression - How to successfully onboard developers - Dalia Simons

Photo by Etienne Boulanger on Unsplash


Onboarding is an important part of engineering recruiting that is commonly overlooked. Covid-19 days made this even more challenging — how do we onboard workers when we’re not physically in the same office? - Read Dalia Simons's article.

You can also listen to her podcast interview Onboarding Through a Pandemic.



How Skaffold Enabled Me to Deliver Features 10 Times Faster - Matan Cohen


How many times have you started a new microservice/consumer/module, and asked yourself: “How am I going to build the environment to test it? Check that it’s actually working?”

In this article, by Matan Cohen, you will get answers, and more.



How to Instantaneously Install NPM Packages While Supporting Multi-version and Avoiding Duplications - Schachar Levin

Photo by Christopher Burns on Unsplash


Have you ever waited five or more minutes for 1Gb of NPM packages to download just to write three lines of code? We have. It doesn’t scale.

Watch Schachar Levin’s talk to find the solution we implemented to face this challenge.



React Apollo vs Redux + REST: Implementing the same feature twice - Gytis Vinclovas


Two different client stacks - Redux with REST calls and the React Apollo with GraphQL. Read Gytis Vinclovas’ article to understand his experience, benefits and drawbacks of using one versus the other.



What is in your Testing Scope? - Olga Beregnaya

Photo by Element5 Digital on Unsplash


A Testing Scope is a list of product features, product parts, or product-related integrations that must be tested in order to reliably assess the quality of the product. However, It seems that not everyone clearly understands what it is and how to define it well: What should be included and what should be ignored? How detailed should the scope be? Do I have to align it with my stakeholders? What if the deadline is coming, and I don’t have enough time to test even the business-critical areas? All that in Olga Beregnaya's article.



My Website is Slow, Now What - Dan Shappir

Photo by Javier García on Unsplash


You built a great-looking, feature-rich website. But it also has a big problem: it’s just too slow.

As a result, your visitors are frustrated, and your bounce rate is high. So now, what do you do?


Watch Dan Shappir’s talk where he explains what web performance actually means, and how to measure and improve the performance of your website.



Detox: Writing Stable Test Suites - Rotem Meidan


Detox promises stable E2E tests, though often you may find yourself wondering why a test is flaky. No framework is free of issues, but we found that by following some ground rules, tests can get pretty stable, and if they are not, by using some built in tools, it’s pretty easy to identify the culprit.


In this article by Rotem Meidan, we establish these ground rules, and go over some common issues, and the tools we use in order to solve them.



Growing Object Oriented Software Guided by Tests - TL;DR - Nir Orman


Nir Orman with a quick summary of the first chapter from the book "Growing Object Oriented Software Guided by Tests" by Steve Freeman and Nat Pryce.


 


 

6 Event-Driven Architecture Patterns — Part 1 - Natan Silnitsky


The data-streams team, which Natan Silnitsky is part of, are in charge of Wix’s event-driven messaging infrastructure that’s used by more than 2,000 microservices.


During his tenure with the data-streams team, Natan implemented or witnessed implementations of several key patterns of event-driven messaging designs that have facilitated creating a robust distributed system that can handle increasing traffic and storage needs. Read all about it in Natan Silnitsky’s article.



Configure Local Environment Using Dotfiles - Zachi Nachshon

Photo by Karsten Würth on Unsplash


If you’re afraid from the day that you’ll have to recreate your local environment, this is the post for you!

Automate the local environment setup using a dedicated dotfiles repository to store all your favourite shell scripts, must-have utilities and application and custom OS settings.


A no-brainer approach to create a local environment from scratch, read this article by Zachi Nachshon, to find out how.



Behaviour Driven Development with Scala and Cucumber - Aurimas Degutis


Computer users and programmers see computer systems from different perspectives. Programmers must think of all the possible events that might happen in the computer system and write instructions so that computers and other programmers can understand how to handle and manage them. There’s a lot of details to consider for a programmer to write an instruction. A user doesn’t care about programming details, all they care about is that their computer behaves in a way that allows them to achieve certain goals. Because of those different perspectives of users and programmers, it’s difficult for them to understand each other and each other's point of view on the same requirements, problems and solutions. This imposes a communication barrier between the user and the programmer, since these same problems and solutions can be communicated and understood differently by each side.


Read this article by Aurimas Degutis to understand how to bridge this communication gap by using a specification language called Gherkin, which doesn’t just help both users and programmers understand system behaviour - it can also act as Automated Acceptance Tests with the help of Cucumber.



The Full React Native Layout Cheat Sheet - Dror Biran


Do you find yourself going back to React Native layout docs again and again, struggling to understand and master the difference between all the different props? Justify vs align, relative vs absolute, items vs content - it all could be very confusing.


Read this article by Dror Biran for a visual guide of all of the important props and lots of interactive playgrounds to test things.



React Native Animations — Zero to Hero - Ethan Sharabi


In this article by Ethan Sharabi, we cover basic-advanced topics of RN Animations and dive into a real use-case issue Wix had and how we solved it.



Everything you need to know before an interview for a QA position at Wix Engineering - Migle Paskauske

Photo by Tim Mossholder on Unsplash


Migle Paskauske with an article full of tips that will help you prepare for your next online QA interview.



Mobile App Architecture - React Native VS Native - Idan Ratzabi

Photo by MJ Tangonan on Unsplash


What are the differences and similarities between Native and React Native development? How to use the native knowledge as a base for React Native development? Read Idan Ratzabi’s article to find out.



Two mistakes in React.js we keep making over and over again - Yaroslav Serhieiev