Over the years, the Shutterstock development team has grown from two people to almost twenty today. We’ve tried to maintain a consistent development culture during that time because it provides a spirit that makes us want to be here and keep getting better at what we do.

A while back we decided to see if we could write down a few core principles that we stand for. What we came up with is our “Developer Ethos.” We do our best to uphold it and look to it for guidance.

It’s a living document that we like to re-visit and update. Here’s its latest incarnation.

Get feedback as early as possible, and work together

  • discuss design, implementation, approach, etc.
  • get feedback from developers, product managers, QA, end users
  • feedback mitigates risk that we’ll get too far off course
  • working together consistently produces better ideas, better code
  • sharing encourages us to write code we’re proud to show

Prefer encapsulated, loosely coupled systems for core functionality

  • loose coupling means you’re only solving one problem at a time
  • it’s a good sign if we can release the code on CPAN
  • as with unix command line utils, firefox extensions, etc, less is more

Choose the smallest implementation that provides a way forward

  • if we need to iterate, we’ll iterate—let’s solve the problem first
  • “a way forward” is a key part of this ethic—avoid creating tech debt, and think about what’s good for the business in the long-run
  • think incrementally, develop incrementally, deploy incrementally (this is harder than it sounds—challenge yourself to break things up into smaller pieces)
  • diffs should be comprised of core functionality changes
  • smaller implementations mean less testing, fewer bugs
  • if a similar problem has been solved before, reuse that solution
  • if we need to refactor, let’s, but separately from new functionality

Make your code readable, understandable, maintainable

  • optimize for humans reading your code, then for performance
  • name variables carefully, be explicit, write comments
  • a wise man once said, “write for someone who’s not as smart as you”