Unsplash is hiring a 3rd full-stack engineer!

Sami Jaber
Unsplash Blog
Published in
4 min readMar 14, 2018
Our office space in Montreal — Annie Spratt on Unsplash

About Unsplash

Unsplash started as a simple solution to a common problem: find beautiful images that are free to use for any purpose. We’ve come a long way since the first version of Unsplash, but that core mission remains the same.

Today, Unsplash powers more products than any other visual search engine in the world, distributing photos to more viewers than any other platform, including Instagram. Millions of creatives of all types, professions, and demographics download more than 30 million photos per month, making Unsplash more used than Adobe, Getty, and Shutterstock combined.

Despite Unsplash’s large community, our product team is a small group of engineers, designers, and data scientists distributed throughout the world.

About the team

The web team is just two full-stack developers building the React & Node.js application that powers unsplash.com, working in collaboration with designers and the API team. As the third member of the web team, you’ll therefore work on a variety of tasks. We strive to maintain a healthy balance between work that directly impacts the company’s product, and infrastructure work necessary to keep the codebase healthy as we move forward.

Here are some values that we have organically developed throughout our day-to-day:

  • Incremental change: whenever possible, we split work into reasonable, easily-reviewable chunks. Even when upgrading a critical piece of infrastructure, we take the time to refactor our code in multiple preparation steps so that migrations are smooth and straightforward.
  • Optimization: we regularly improve the user experience by identifying bottlenecks in how we use our tools (React, Redux, React Router, etc). When we realize we’ve been doing something inefficiently, we immediately course-correct. We’re not scared to ditch old patterns, but we do our best to study new ones before adopting them. We’re always learning.
  • 80/20 split: we usually spend 80% of a given week on big projects, and 20% on technical debt. It might not always be the case, but we consistently think of both areas when prioritizing work.
  • We solve user problems, not technology problems: We are here to build a product, not obsess over tools or over-architect software. Luke, one of our teammates, elaborates on this in an article about how we have scaled Unsplash.

About the job

To give you an idea of what you’d actually do, here’s what’s currently on our plate:

  • Incremental Server Side Rendering (SSR) implementation: we are working on adding SSR in order to improve page load performance and SEO. We have spent a lot of time getting the big pieces to fit together, such as code-splitting, routing and progressive enhancement. We’re now implementing SSR route-by-route, but there’s still a lot of challenges before we’re 100% there. Once that’s done, we will begin to implement caching of HTML on the CDN, which will help to further improve load performance and also reduce the load on our API & web servers.
  • SEO: this isn’t the hacky search engine optimization you might have read about elsewhere: there’s a whole world of interesting problems relating to accessibility, performance, and internal link structuring that powers the majority of Unsplash’s on-site growth. We’re constantly experimenting with small changes to help users find the best visual content, while balancing the minimalist aesthetic that puts the focus on the beautiful photos.
  • New features: we work closely with our designers and community to continually refine the photo discovery and contribution experience, whether that’s redesigning the photo page to better showcase the photos or releasing a brand new user stats page that improves our contributors’ understanding of their photography’s impact.
  • Front-end performance: we’re comfortable with our browser’s devtools. Wasted React updates and re-renders, inefficient Redux selectors, redundant network requests are some of the problems we keep an eye out for. We’re keen to improve our time to interactive, first meaningful paint, JavaScript bundle size, and other crucial metrics — monitoring as we go using the synthetic performance monitoring tool Calibre. We hope to setup Real User Monitoring (RUM) performance monitoring soon, to help us understand our true performance in the wild.
  • Incremental TypeScript migration: started when when one of us integrated TypeScript into our build on Make Day; now over 60% of our codebase is in TypeScript. We use a variety of TypeScript’s features to keep our code safe, less error-prone and easier to read and write. We are incrementally migrating our JavaScript files to TypeScript, adding types as we go. On the rare occasion a bug does escape our static types, we are quickly notified thanks to exception monitoring in production with Sentry.
  • Infrastructure maintenance: we do not shy away from tweaking our webpack configuration or implementing integration tests to make sure that we can safely ship code fast and often.

Important: If you don’t know TypeScript, don’t let that stop you from applying: most of us had never worked with it before it was introduced at Unsplash. Same goes with React, webpack, and every other tool we use: don’t be discouraged! We’re not looking for an Expert React Developer; we’re looking for a quick learner who’s fun to work with.

If you decide to apply, all we want to see is a message that feels like a human wrote it. We don’t want you to send us your resume. Instead, tell us who you are. Show us relevant work you’ve done that you’re excited about.

While Unsplash has its home base in Montreal, it is a distributed company: you’re eligible wherever you are! If you’re curious about how we work, read over our hiring page and feel free to message us with any questions.

Sami and Oliver

--

--