Team
Building a great technical team starts at the interview. If the interview process is not welcoming, friendly, professional and humble, the word will eventually be out and many talented people will never apply. It's that simple.
Below is a list of some of the questions that I've asked and recommend. These questions are not designed to have a right or wrong answer. Rather, to reveal most about what's actually needed in a person in real life situations for highly efficient teams. In practice, at least one of them will lead to a deeper technical discussion, but I usually manage to go over all of these in about thirty minutes.
Project(s)
- What kind of projects do you like working on, including hobby-projects?
- Present a project / problem you’ve worked on recently / currently and are proud of.
- What was the depth and breadth of the tech stack you used on it?
- Did you use any tools such as static analysis, performance profiling, etc.?
- What were the most interesting / difficult parts?
- What were the most interesting things you learned from the project?
- Did you encounter any classical CS problems (sorting, graphs) and how did you solve them?
- What do you consider as beautiful / readable / maintainable code? (have an example ready)
General
- How large were your past projects in LOC (lines of code)?
- What do you think of LOC as a measure? Good or bad?
- How do you approach searching for answers and adapting solutions from the web?
- How do you decide which answer to adapt from StackOverflow?
- Do you have any engagement online (open source contributions, StackOverflow Q&A, etc.)?
- Have you ever found solutions on GitHub that weren't on StackOverflow?
- Have you ever had an outside-of-the-box approach to a problem? Why was it necessary?
- Have you ever gone against the flow? Why was it necessary?
- Have you ever bent or broken any rules? Why was it necessary?
- Have you ever established any practices? Why was it necessary?
- Have you ever written any utility functions? What problem did they solve?
- What, if any, industry trends do you like and follow (and how)? Any conferences?
- What classic CS books and/or authors do you like and have read?
- How do you fill in the gaps in CS education?
- Is multitasking stressful for you? Do you prefer focused work?
Students
- How do you balance studies with work?
- What are your favorite subjects and why?
Consultants
- How do you balance quality with speed of delivery?
Processes
Even with the best team in place, any engineering culture will only be productive if points like the following are implemented well:
- Tangible test automation and an unwavering commitment to keep it
- By tangible I mean a tests codebase growing measurably in lockstep with the main product codebase
- Work distribution: who does what
- Choice and integration of third-party tools
- Communication (interpersonal and inter-team)
- High-level code organization to ensure:
- Modularity, junior-friendliness, etc.
- Policy of issue creation
- Policy of commit messages & integration with issue tracker