Questions for prospective employers
I’ve been jobhunting a bit recently. Below are a few of the questions I find give me a reasonable sense of what a company is about.
Corporate
How many large customers? How many small ones? How much variance in customer spend is there? (companies with few large customers are probably going to work on whatever those customers tell them to work on; if they have many small customers and don’t A/B test something might be wrong)
Org chart: How many sales / dev / product / UX / admin?
Has the team released any interesting OSS in the last year (on work time)?
Has the team released any interesting OSS in the last year (on their own time)?
How much pairing do you do and when/why do you do it?
How/when do you do code reviews? During pairing?
Code
What’s your take on test coverage?
What quality metrics do you use?
Do you enforce a styleguide? How?
What languages & frameworks do you use?
How long does a typical CI build take? How long does a typical local build take?
What techniques do you use to keep tests running fast? (e.g. parallel tests, GC tweaks, avoiding I/O)
How many code repositories? apps?
Devops
How similar is your development environment to production?
How many architectural pieces are there (appworker, queue, cache, database)?
How many of these are outsourced vs self run (e.g. are you using RDS/heroku PG, or running mysql/postgres yourselves? Do you run your own queue or use iron.io?)
How often do you deploy? Continuous delivery? Fortnightly sprints?
How many production-like environments do you have (eg staging, uat)?
How long from ‘lets deploy’ to ‘done’?
How long to roll-back from a bad deploy?
How many servers are you running?
How many kinds of server are you running (db, cache, web, ci, SCM hosting…)?
Cloud or self-hosted (or something else)?
Team & Culture
How is the team organised? Small groups? Heirarchy? Triads? How do the dev team decide what to work on? How do you stay in sync across multiple locations (if applicable)? How do the team keep each other informed (eg email/chat/face-to-face)?
How often do you use A/B testing to determine whether a change stays? Who makes the call on what to test?
How do you set up a new development environment?