The following post was written by Ted Young (Copyright by Ted Young http://www.tedmyoung.com) This is probably the most relevant interview help we have found anywhere...
There are three categories of questions I’d like to hear from a candidate:
- About the company itself: products, finances, market, etc.
- About the culture: work-life balance, level of formality, number of meetings, etc.
- About the development process: roles, requirements, testing, state of the code base, etc.
The first one is important, because you’d like the company to be around for a while. Hopefully you’ve done some initial research about the company before you walk in the door.
The next two categories require some thought. Think for a minute: what would your ideal day be like at work? Would it be sitting at your desk at 7pm, debugging through some hairy code, trying to get a build out the door for the next day’s demo to users (or management)? Most people will probably not choose that scenario as an ideal day, though there are those who are quite attracted to that kind of pressure and love living on the edge in that way.
After going through many years of being a consultant, founding or co-founding three companies (four if you count the one I co-founded with my father), working for a consulting company, and then working for some “real” companies (eBay, Google, etc.), I’ve gotten to the point where I know a lot about what I want in a company’s culture and development process. No company is perfect, but I’ve learned through lots of experience (i.e., mistakes) what environment works well for who I am.
That’s the key: not every environment (i.e., company) works for everyone (as great as Google can be, it simply wasn’t for me). For example, do you like lots of alone time to think and write your code? Or do you prefer throwing ideas (and code) back and forth with other developers. Do you like gnarly algorithmic problems or squeezing performance out of every SQL call? Or maybe you prefer working with users/customers/interaction designers to come up with interfaces for an application?
Or do you just want a job?
If that’s you, and you’re pretty good at what you do, there are lots of places where it’s easy to just have a job. But make sure that’s what you’re happy with, because if you just want a job, you can be sure that the people around you just want a job as well, but don’t be surprised if you find that you care more about things like quality and craftsmanship and good tests than they do. After all, it’s just a job.
Some other questions to think about asking when you’re diving into the development process:
- How would you like to get requirements, i.e., in what form? On paper? As a mockup or prototype? Lots of whiteboard discussions?
- Do you want things like Continuous Integration? How about bug tracking?
- Do you care how available the people who define the requirements (product managers, owners, customer proxies, etc.) are?
- How about testing: how much is done by an official QA group and how much is done by developers?
- How complex is the code base? What’s the test coverage?
- Would you rather deal with a single active development branch, branch per feature, etc.?
- How does the team decide what to work on? Is it assigned by a manager or do developers pick what to work on?
One last area to think about is how much will you learn by working at the company? And that’s not just limited to their training budget, but it’s about who are the other people you’d be working with? Are they learners and teachers (i.e., do they like sharing their knowledge)? Or maybe the company’s in an area you’d like to know more about, such as finance or consumer-oriented software. Perhaps the non-developers you’d be working with sound interesting.
I could go on and on, but hopefully you understand that it’s less about the questions and more about what gives you satisfaction and joy in what you do. Figure out what questions you need to ask so that you’re as happy as you can be, because (and here’s where I sound like my dad) life is too short to spend a significant part of your life in some company that is a bad fit for you.