We are looking for a Senior Front-End Engineer to join the web team—the team behind the Unsplash website. Over the years, we’ve taken Unsplash from a humble Tumblr blog to a fully-fledged web app supporting tens of millions of users and tons of useful features. We’ve done all of that with a lean team of just 2/3 web developers, but there’s still so much more to learn and do, and that’s why we need you!
To get a taste of what it’s like to work on the web team, here’s some insight into how the website has been built so far.
Interactive front-ends involve the coordination of many different asynchronous events. To deal with this complexity we have adopted functional reactive programming (via RxJS), and to join this together with our React components we use observable-hooks.
By adopting (strict) TypeScript and functional programming we’ve eliminated whole classes of bugs. We use finite-state machines and tagged unions such as
RemoteData to make “impossible states impossible”.
At the application boundary we use io-ts to decode external data such as API responses or URL query parameters, so when an API response inevitably goes awry, the data doesn’t flow into our components and cause an obscure error further down the line—it’s immediately clear where the problem is and the API team (not the web team) is notified.
For layouts we take full advantage of CSS grid and flexbox. We organise our component styles using CSS Modules.
The web team is currently just 2 people and we work closely with the API team (4 people) and design team (2 people).
We designed our company in a way to get as much of the stuff that’s not the creative work out of your way, so you can do your best work. We don’t believe in a top-down, shoulder-tapping, 9–5 type culture. You have the autonomy to manage yourself. We don’t work set hours. We respect flow. We believe you should be able to structure your days for what makes you feel the most energized and creative.
When we’re working on a new feature, someone from each team will spearhead the project for that team. Everyone has the chance to be a leader and has the opportunity to influence and push their own ideas.
In-depth code reviews help us share knowledge. We don’t review code just to pick on some style nits—we automate as much as we can so we can spend time reviewing the important things like code architecture and identifying patterns for potential abstractions.
Frequent and smaller code releases help us identify problems early and validate our impact. On an average day the web team alone deploys 3-6 times.
We constantly monitor front-end performance, using SpeedCurve to set budgets and alert us when we exceed them. When there’s a regression in performance we take the time to investigate and fix it.
When a runtime exception slips through the net, we take the time to understand what went wrong and to find the necessary steps to prevent it from happening again.
We’re looking for someone who:
At Unsplash we’re enabling everyone to create by making visuals open and accessible.
Today, Unsplash powers more people and products than any other visual search engine in the world, with more than 100 million images downloaded every month—more than the rest of the industry combined. Our team builds unsplash.com, Unsplash for iOS, and the Unsplash API, directly powering over 10,000+ applications including Medium, BuzzFeed, Facebook, Squarespace, Google, Trello, and Square.
We’re depended on every day as a fundamental building block in the creative process, allowing anyone, from students to award-winning creators, access to high-quality, usable imagery.
Our team is made up of people who enjoy making things people love. We care about details and we care about quality. We do more with less. We’re open and transparent about everything we do, both internally and externally.
Available to all full-time employees.