Who We Are
Our engineering & design teams currently consist of 9 (incredibly talented, friendly & collaborative) engineers (3 senior, 3 junior), web designer, product manager and CTO/short stop. We're currently hiring a second product manager and designer.
Our team (and much of the company) works remotely. Slack has quickly become our critical communication channel. We make heavy use of Slack integrations including our own bot to manage code deployment & staging environments.
How We're Organized
We've reached a critical growth phase as a team. We have just split our single team into separate self-sufficient squads with independent missions, heavily inspired by the Spotify model. Our current open positions will fill out these squads and our hiring plan into 2016 includes creating 1-2 more squads.
Each squad has its own mission, related initiative pipeline (for future planning purposes) and issue tracker (currently trying LeanKit Kanban boards) for tracking and managing ongoing work. We currently work in two week sprints.
We're currently experimenting with models to more deeply integrate product and design work into our workflow and plan to run a pilot design sprint in the near future.
How We Work - Engineering
We use git and GitHub for our projects. We use GitHub's pull requests for code review. We're currently tracking stories in Pivotal Tracker.
We practice continuous integration. We run our automated tests through our build system (Jenkins) and have invested heavily in tools to make deploying new code ordinary and routine. We deploy code every day.
We currently use ScoutApp and New Relic's suite of tools for systems and application monitoring. We catch exceptions with Airbrake, monitor front-end performance with SpeedCurve and custom metrics with Librato.
We deploy to physical hardware, finding the cost-to-performance ratio worth the tradeoffs, though we have experience operating VPS deployments and we are currently evaluating PaaS alternatives. We currently use puppet for configuration management.
Stack & Tools
Our two primary applications (a custom CMS and custom Community stack) are built with Ruby on Rails (4.1) making heavy use of varnish, postgres, redis, unicorn and elasticsearch. We also run a custom image service on Sinatra and two small, non-critical services built with go.
Our application architecture is evolving into a back-end that primarily serves as an API for rich client-side code built with React.js and the Flux architecture.
Open Source Code
We recently extracted and published a couple of gems we use in our color-based image search, which gives a little peek behind these scenes of some of the back-end code we write:
- multicolor: an opinionated library for TinEye's fabulous MulticolorEngine
- color-rgb: a set of utilities to help with dealing with RGB colors
Our "Joel Test" Answers
Do you use source control? Yes. git & GitHub.
Can you make a build in one step? Yes. This is automated with Jenkins. Deploys to staging & production environments are also a single command.
Do you make daily builds? Yes, this is continuous and automated.
Do you have a bug database? Yes, we track bugs in Pivotal Tracker.
Do you fix bugs before writing new code? Yes, in most cases.
Do you have an up-to-date schedule? Sort of. We engage in an agile (small a) process to track & estimate current & near term work & priorities.
Do you have a spec? Usually and we're getting better at better intitiative and story definition.
Do programmers have quiet working conditions? Yes. We all work from home.
Do you use the best tools money can buy? Yes.
Do you have testers? No.
Do new candidates write code during their interview? Yes.
Do you do hallway usability testing? Yes, though our "hallways" are on Slack.