🔥 Three Developers 🔥
...and a story each
About going far together
Who are we
...and why we are here
-
Who: Frontend Engineers at commercetools
-
From 4 different vertical teams
-
3-4 different locations (Germany and Spain)
-
-
Why: Share and tell stories about our work
-
About how we work and achieve things together
-
Jest, Cypress
K8s, Circleci
React, GraphQL, Apollo
Mandatory: Tech Stack
...just briefly
Something else: Verticals
...and why they're fun to work in
-
Focus on a business domain
-
Orders, Products & Categories, Prices or Checkout
-
-
Make your own decisions as a team
-
Different domains and problems have different requirements
-
-
Work in a cross-functional team
-
A Product Owner, UX, Backend and Frontend Engineer
-
But
...not all problems are vertical!
Inner Source
work as if it was Open Source
Chapter
align across team boundaries
Don't repeat mistakes
3 stories, 3 developers, 3 improvements
1. Unit testing hell
2. Merging & Deploying
3. From Inner to Open Source
Unit Testing Hell
...sometimes a unit is not enough
Want
Don't want
-
Brittle tests
- Change code
then change test
- Change code
-
Snapshot confidence
- All we need is
a snapshot
- All we need is
-
Confidence
- Refactoring
doesn't break things
- Refactoring
-
User Focus
- Ensure features work
for the end user
- Ensure features work
Unit Testing Hell
...sometimes a unit is not enough
-
Introduce react-testing-library
-
Write tests not too many mostly integration
-
-
Tech Time
-
Gradually experiment and introduce new things
-
-
Rewrite a MoneyInput from downshift to react-select
-
Not a single test needed to change
-
Merging & Deploying
...more often while being iterative
“
”
The goal is not to deploy, but to flip a switch.
“
”
Reverting is a lot more difficult than turning a feature off again.
“
”
Deploying often, means smaller changes,
means less breakage
-
Deploy any pull request as a stack
-
Shorter feedback loop with stakeholders
-
-
Use a feature toggling solution
-
Flip switches without deploying in real time
-
-
Deploy 9 applications independently
-
Less coordination, smaller migrations
-
Merging & Deploying
...more often
Inner to Open Source
...there is more to share than you think
Want
Don't want
-
Redundancy
- Multiple ways to do the same thing
-
Worry about infra
- Solve customer
problems
- Solve customer
-
Share tooling configs
- Not reinventing
boring things
- Not reinventing
-
Outside contributions
- Improve things
together
- Improve things
Inner to Open Source
...there is more to share than you think
-
Shared tooling configs include:
-
ESLint, Jest, Babel preset, build and run scripts
-
-
Shared frontend code includes:
-
Application Shell, UIKit (Design System), etc
-
-
Open Source and contribute your learnings
-
Own API SDKs, Formik, Apollo, Enzyme
-
What (could) come next
...there is always something to improve
Type System
Destructive E2E testing
...more confidence in refactorings
Seeding data, visual regression testing
Better CI/CD performance
Better support for monorepos, short circuit runs
❗️ Thanks ❗️
Three developers and a story
By Tobias Deekens
Three developers and a story
- 668