When I interview experienced programmers I always expect to enjoy the experience. Regardless of our personal backgrounds, I know that we will have some important things in common. In all likelihood we will both have:
- Struggled with elusive bugs
- Been asked to write code from unclear requirements
- Been asked for estimates without any tangible requirements
- Faced unrealistic deadlines
- Had many “ah-hah!” moments
- Feelings of nostalgia over old, superseded tools
- Feelings of great satisfaction from coding it, and…it works
I could fill an entire book with a list of experiences shared by programmers around the world, regardless of where they come from or what software they write. The questions in this chapter are all about exploring this common ground. These questions are different from other questions in this book because the answers to most of them are subjective. Almost certainly you will find an answer (or maybe even the wording of a question) in this chapter with which you strongly disagree. Well, that's fine, and I look forward to debating the point with you online or perhaps even in person.
The worst answer you can give to any of these questions is a dismissive shrug. If an interviewer asks for your opinion, be sure that you give it, even if your opinion is that it (whatever it is) doesn't matter. Be ready to defend your point of view as if you were debating with a fellow programmer, perhaps as if you were debating with someone in your development ...