I’m currently interviewing for a senior software engineering role. I’ve been engaged with several companies, each quite different from the other. These are the heuristics I use to separate the wheat from the chaff, and the steps I took to get there.
This is by no means a conclusive and all-encompassing list.
The core is to improve my technical abilities. That means the ability to design better systems, that have higher reliability, under higher stresses. Further, to improve my ability to rapidly understand and improve existing (complex) systems.
Secondly, to work better in a team and to let the team work better. How do I improve my ability to enable other to do signinficantly better work? How do I adjust that approach towards a junior and how do I effectively support and learn from a more experienced / skillful engineer?
I’d like to learn this through exposure to technical challenges, and proximity to high quality engineers.
Tangent: I’d also like to develop my commercial skills. This involves to develop my ability to spot problems worthwhile solving in a market. To develop my sales skills to transform such a market+problem into a product, and to push to measure if this can reach commercially viable metrics.
Ideally, I’m submerged in a culture that has correctly prioritized and systematized this process. This requires interaction with the founding/sales team. So, a compact team with high openness, and a willingness to share and interact.
Step two to know what companies would make a good fit for me, means making explicit what components of work would make a bad fit for me. From experience:
These aspects define low quality work and a low quality working environment for me. In fact, they are intertwining symptoms of an environment that has:
Effectively these are the traits the following questions seek to shed a light on.
Have they thought well about this? A tangent: do they have specific projects in mind for you to work on, or towards? For me a good answer is a clearly outlined pain, best related to company growth: features can’t keep up with customer demand, tech is buckling under stress, excess technical debt prevents creating robust new platforms for features going forward. Worst answers I’ve encountered thus far are effectively about needing “dev knowledge in house” which implies babysitting a poor application. Without a clear goal, it will be difficult to feel fulfilled, as progress is not sufficiently measurable.
Companies that primarily sell a product where tech does not drive its’ success, tend to prioritize engineering differently than tech-led products. Such companies may sell a reputation, a process, an insurance, or something else altogether. And because the tech is not the differentiator, high-quality vs low-quality is flattened to a cost comparison that prioritises “it has to work somewhat” over “it has to work incredibly well”. That isn’t to say that such companies always have mediocre tech cultures, if there is a technical founder or early employee with a strong vision about this aspect of the business, results may vary.
More is not always better. Does the company take into consideration the detrimental effects of massive scope creep? Does the responsible have an aggressive opinion on this? What are the next highest priorities? If the company can paint a clear picture, it indicates there is pressure to build the right things and to build them well. A bad answer would constitute “we decide together”, which admits that the company does not know what it is doing.
This indicates the product prioritization process is poor, which indicates not sufficient commercial pressure or poor management of the engineering resources. If the answer to this is “a lot”, that’s a big red flag. A startup preparing for global scale with a validated solution/market fit is not premature. A startup working towards delivery of a todo list app MVP on a globally distributed kubernetes cluster through a 12 step automated devops pipeline: suspicious.
This is specific to the hiring process. The process often includes one or multiple stages of coding exercises. Are the exercises clearly outlined, and the criteria of judgement given? Is the information necessary to make decisions relevant for these criteria given? If the answer is no, it indicates that the company may (1) have just have started hiring, (2) has an unstructured hiring process and (3) does not continuously improve their hiring process. Points 2 and 3 indicate a company that is not oriented towards growth and excellence. Glassdoor experiences shed a light on this.
Are people generous, or is there a stand-offish attitude? Is there a cutt-throat environment? There are many different ways of giving feedback, but I like to keep in mind:
The style of feedback during the hiring process reflects on the company culture, and is an indicator for the kind of feedback you will be exposed to, get used to, and that will become second nature to you. It will likely shape how you give feedback to others in the futue.
Were these useful for you? I’d love to know what aspects you consider essential