What it’s like to be a developer at YouScan

From popular tools to code review, deployment to daily life, here’s a look at the developer experience at YouScan from an insider.

Yaroslav Tykhonchuk
YouScan

--

Mob programming

Yaroslav Tykhonchuk, Software engineer

What are the most common tools that developers use?

  • JetBrains Rider, WebStorm, PyCharm, or VS Code are favorite IDEs/editors depending on the team;
  • Git, GitHub for code management and reviews;
  • Jenkins and GitHub Actions for CI/CD;
  • Kibana and ElasticSearch for logging, Grafana for dashboards;
  • Notion for knowledge base and as a product management tool;

Check more on our tech radar. Aside from that, our developers use whatever tools they are most comfortable with.

Which languages do developers code in?

Our backend stack is mainly written in C#. Our user-facing UI is written in TypeScript and uses React. The Data Science team develops in Python.

What is the development process like? (the lifecycle of a piece of committed code)

We use Shape Up methodology from Basecamp to shape, bet, and build our product, meaning that we have 6-week cycles to develop product features following a 2-week cool-down period when each developer decides what to do on their own. When the team has agreed on what to do during the cycle and has split into teams (individual, pair, or group) coding work starts.

The following is highly specific to developers that work in Product Squad. Our Data Science, Platform, Data teams have a similar but different development lifecycle.

  • Pull a master branch from youscan repository. If you want to share your work after, checkout to a new branch.
  • Complete a discrete unit of work (fixing a bug, getting started on a feature). Decide if it’s going to be live or not — we have a set of feature flags that show and hide code in production. Write unit tests, or extend existing ones.
  • If you were working on master just push the branch and wait for the build to complete a new artifact, otherwise open a pull request, and request a reviewer (just someone you want to share a piece of new code with or someone with more context on the part of the codebase you maintain).
  • When tests have passed successfully and your artifact is ready, hit the deploy button to ship a specific service to staging or production.
  • We ship 5–10 times a day depending on the service and have multiple channels in slack (#alerts-exceptions, #alerts-fatality), grafana, and kibana dashboards to monitor deployment after. If the change goes bad, I figure out how to fix forward or revert my change.
  • Optional: Socialize the change. This might mean telling your team or customer support agents, or telling a colleague in your triage channel, depending on the size of the change.

What is code review like?

Code review is not required at YouScan. Normally you ask for a review when you have something to share with your teammates or want to ask someone with bigger expertise to verify your changes.

How is testing done, and what kind of tests are run?

We don’t have QA engineers on purpose so every developer is responsible for their piece of code along with tests. Some practice TDD, some write tests after, the only thing that matters is that new/changed functionality was covered by tests.

How is code deployed?

When the artifact is ready and the developer pushes the deploy button, K8s or Swarm (depending on service) pulls a new image and extracts it into place. All of that happens in just a few seconds.

If something significant was deployed we share it to our #product-announcements slack channel so that everyone at the company can put their favorite emojis and recognize your work.

What is the average day-in-the-life of someone on one of the development teams?

I guess it depends on your team and your location. Some engineers are fully remote, some partially. Right now we have teammates drinking coconuts in Thailand, Bali, and Brazil near their laptops, while most of us enjoy the beautiful view from our Kyiv office during the workday.

Development teams can set their own working styles, but they are mostly centered around development time. We don’t have daily stand-ups, everyone just writes their status (progress, interesting findings, problems that have occurred) to the team channel, and is good to go coding. Btw, all channels in Slack are public, making the work of every team very transparent.

Teams generally interact in person or over Slack to discuss issues, coordinate development or ask questions. We have one weekly sync to deeply discuss the progress, talk through the created bugs and incidents that may have happened a week before and share a pair of jokes.

What makes YouScan a special place to be a developer?

At YouScan you get to be part of an incredibly supportive and highly professional team motivated to build a world-class product. YouScan has a broad stack and very interesting problems. Our coworkers are experts in their fields (and nice, easy-going people!), and we get to be curious and learn a lot.

--

--

Yaroslav Tykhonchuk
YouScan
Editor for

Software, people, cycling, mountains, diet, sports, yoga, meditation