thanpolas // web development as it happens

Hiring in the tech industry has been notoriously hard for companies, hiring Senior Engineers raises the bar even higher. I won’t dive into what constitutes a “Senior Engineer” yet, for the purposes of this article it will suffice to describe a senior engineer as a person that has a six-figure salary and has been working professionally on the high-tech industry for more than 15 years.

Senior Engineer

In this article we will dive into the hiring operations of a startup end to end and how to fine-tune it for senior engineers. Each section of the hiring workflow deserves its own article to properly analyze it in depth, so I will try to be as detailed as possible without making this post too long. The process is also remote-friendly as all operations of a contemporary startup should be in my humble opinion.

Understanding The Environment

The high-tech software market has never been hotter, as all the industries and verticals of the world gear up on the web and internet-based technologies the demand is immense. That fact cannot be overstated enough, there is one available engineer for every three job postings and one could consider this a moderate estimation.

That means that engineers today have choices. Understanding that fact and how it tilts the balance of power in the negotiation table is key to having a successful hiring campaign vs depending on pure luck. If you or your friends are wondering why high-tech companies have such lavish offices and spend so crazily on amenities, perks, and their employees’ well-being, now you know why.

The Locality and World Class Engineers

Supply and demand fluctuate based on the era, location and the specific technology needed by the company. Thus, the market value can fluctuate. By “market” here, I am referring to the high-tech, world-class type of market, and now, unfortunately, I will have to explain, so bear with me. In the original threshold of 100k I have intentionally omitted currency, these are stub numbers, apply your $, £, €, freely as you see fit.

Locality can drive engineering talent prices down. A company in a third tier country may compensate a senior engineer for as low as 40k. I will not question the seniority of that engineer, as I know first hand there are such cases, however, local companies are making two bets:

  1. That the hired engineer is not able or does not currently wish to relocate.
  2. That the engineer is not able or does not want to work remotely.

That naturally shrinks the available pool of candidates dramatically, however, most locally entrenched companies play the long-game and target local markets with lesser competition, thus are able to afford longer periods of hiring.

On the other hand, when you are competing on a global scale, you cannot leverage the locality factor. The competition is immense and unforgiving. At any given point in time your competitor may raise 10 times the funds available to you and wipe you out of existence in six months flat, or, most commonly, more well-funded companies in different verticals will drive the prices up for world-class talent.

What makes an engineer world-class? I’ve been also referring to the “high-tech” industry, this basically means startups. Businesses whose operations have a heavy dependence on the Internet (aka startups) are booming. Both on the startup space as fed by investments and in the established Interned-based operations companies (Google, Facebook, Amazon to name a few). The scale of the Internet provides a business opportunities platform unprecedented in human history. Very few industries can match the amount of innovation and capital that goes through these companies.

Now, if you take a step back and consider all the startups that have become successful businesses, you will see a strong engineering culture behind them. These are companies that have mastered the art of scaling engineering teams and in the course of doing so, have produced and contributed amazing technologies back to the community.

Code Quality, Engineering Procedures, Quality Assurance workflows, Product operations, DevOps, automation, are but a few of the parts where these companies operate at the highest level and state-of-the-art technologies are produced. We will try to summarise this level of operation by using the term “Engineering Excellency”.

On the other hand, you have what we call “Internet Scale”. The sheer scale of Internet-based applications is unimaginable. Well, it’s an engineer’s job to imagine it and engineer the product in a way that will allow it to organically scale while at the same time not committing the crime of premature optimization.

Through the course of multiple startups, corporations and personal experience, an engineer that has mastered either one or both of Engineering Excellency or Scaling can easily be considered world-class.

Preparing The Company To Hire

There is a lot to be considered by the company before starting a hiring campaign. The most important of which is the allocation of human resources that will have to be involved in the hiring process and the impact that will have on normal workflow and product throughput. Most startups that are setting up their formal hiring processes miss that point and when the conflict presents itself in the near future “Product vs Hiring” Product always wins and hiring gets stretched.

That results in long waiting times for the candidates as the company cannot timely respond in all the steps of the process. In a hot market, that will surely result in candidate attrition as the candidates may get hired by another company or get disheartened by the company’s demonstrated lack of organization.

As the CEO or CTO of the company, you are responsible for making sure that everyone in the organization understands that hiring is an equal operation to product and in most cases, it is more time-sensitive. It is more time-sensitive in the sense that:

  1. The sooner you make the hire the sooner the engineer will start having an impact.
  2. The moment your hiring pipeline is live you cannot afford to lose candidates because you couldn’t arrange an interview.

Creating The Hiring Procedure

The CTO is responsible for creating the hiring procedure end to end, in consultation with engineers and the CEO. The procedure should be clearly stated in a document that is available to everyone involved. Having the plan at hand, one can easily deduct the number of human resources that will be required and thus plan for them accordingly.

Planning is of utmost importance as it will minimize the team’s context switching penalty. So, for the procedure that I am outlining in this article, it would be advised to make it so that every step has its own dedicated time for each person involved, for example:

  1. Perform Initial Screening every Monday.
  2. Perform Secondary Screening on Tuesdays by George and Jill.
  3. Assess technical exercises on Tuesdays by X, Y, Z.
  4. CTO / CEO commit to interviewing within 3 work days of candidates reaching their step.

… And so on and so forth, depending on your specific case.

It is important to create the procedure end-to-end including the questions that will be asked so as to have a calibrated and comparable outcome. That doesn’t exclude “freestyle conversation” with the candidate, on the contrary, it is a part of the procedure so as to feel where the candidate is coming from and if they are a right fit for the culture of the company.

The questions posed to a senior engineer, need to reflect and respect the experience that candidate has. That isn’t only important for getting the right responses from the candidate, but also reflects the company’s appreciation of Engineering Excellence and respect for the experience the candidate has. That appreciation and respect is what will draw the candidates attention and will position your company favorably in their mind. One cannot ask an old fisherman if they know how to make the Clinch Knot, why would one ask a senior engineer if (a ==1 && a== 2 && a==3) can ever evaluate to TRUE. Edge cases that some random person posted on a blog post that has never and will never be used in production code is really not a senior person’s mojo.

So CTOs, as senior engineers themselves, should stay on top of that and make sure the questions posed will be able to gauge and assess the depth as well as the surface of the experience of the candidate.

Hiring Procedure Services

I could not make a small mention of the available services out there today, that will help you keep track of your hiring campaigns and have all information gathered in a single place. Personally, I have experience with workable.com which allowed me to define the hiring steps and layout our hiring procedure and then tracked the progress of each candidate as they entered the top of the funnel. I’m sure there are other similar services out there, but it is my sense based on the Job Ads I’ve applied to that Workable has the biggest share.

The Job Advertisement

Unless you have a really strong network of available engineers your job advertisement is the next best method to create leads. The job advertisement should clearly state the following:

  • A few words about what the company does, industry, technologies used and the stage where it is at.
  • A clear job description that enumerates the responsibilities of the position and what will be expected of them.
  • The technological stack required and the good-to-haves.

Although I often argue that job advertisements should mention a salary range, that would not be required if the Ad is properly written, with “codewords” that can be easily recognized by a veteran of the market. These “codewords” need to give a solid hint on the funding state of the company and/or the VCs it is backed from and briefly convey the ambitions of the company and the goals it has set. Let’s see an example:

Acme Inc is a fast growing company in the Support Bot business, we have recently closed our A round [of xxx amount of USD] and we are looking for a Senior Engineer to work on our Platform infrastructure as we enter new countries and scale our operations.

So the first thing the candidate will do is look you up on CrunchBase, check out the exact amount of funding the company has received, who from and at what time. Just from this information, an experienced candidate can infer a ton of information including the possible salary ranges this company can afford.

The next thing they will consider is that the company is experiencing growth, and notably has scalability problems, so this means that there is room for ownership and growth within the company. The last thing the candidate would consider is the mentioning of Internationalization and that may be something that appeals to them or not.

Starting The Hiring Campaign

Starting a hiring campaign is all about distribution. Getting your Ad under as many, relevant, eyes as possible. Even if you are hiring for in-house, do not neglect to post your Ad on popular job boards like StackOverflow Jobs for the off-chance that a candidate may soon be moving to your location.

Nothing more to say here, moving on to more important stuff…

Step 1. Initial Screening

The Initial Screening is about reviewing all the submitted applications and rejecting those that are obviously not a fit. From my experience this is about 96%, yea it’s a lot, but there is a lot of noise on the Internet so it is what it is. This job should preferably be performed by the CTO, as the most experienced technical person in the team. It doesn’t take as long as it sounds and with the help of a tool like Workable, it can be even faster.

Once the batch of candidate leads is produced, a second pass is required with a more careful examination of the candidates:

  • Carefully read the provided CV.
    • Lookup the companies that they have previously worked on, gauge the depth and width of their technologies.
    • Assess how the Candidate articulates their skills and experience.
  • Check the CV against LinkedIn.
  • Check the Candidate’s work with the intend to code review.
    • Github profile, projects and contributions, code review.
    • Bitbucket or other services profile, again code review.
  • Check the Candidate’s technical blog, if one exists, skim through the topics and read a couple of articles.
  • Check the Candidate’s social media, look them up if not provided, Twitter, Facebook, Reddit, everything that is public is fair game for review. What they talk about, their following are all pretty strong indicators of the quality of the Candidate.
  • Check other provided or discovered Candidate resources:
    • Public speaking, presentation decks
    • Community work
    • Meetup participation
    • StackOverflow participation
    • Podcasts
    • Youtube
    • Books written

This shouldn’t take more than 10 minutes per candidate and since we are talking about senior level people they are bound to have some, if not most, of the above points available. Once reviewed, and if you are still interested in the candidate, write your assessment of the candidate and pass it on for The First Interview.

Step 2. The First Interview

This is the first interview the candidate has with the company. It can, and should be done by a non-technical person. This interview should be very strongly scripted and whoever will perform it needs to be trained in performing it and in handling unexpected situations. The aim of this step is to achieve the following:

  • Provide a presentation of the company to the Candidate.
    • What do we do
    • Who we are, founders, brief history
    • Employee composition, 3 engineers, 2 executives and 5 marketing, support, and sales.
    • The stage the company is at today.
    • Future plans of the company.
  • Provide an outline of the position and the responsibilities.
  • Explain the Interviewing Process, what steps will follow and at what pace/time.
  • Make sure all Candidate questions are answered regarding the company, position, and process.
  • Ask the Candidate for their availability, when can they come aboard.
  • Ask about expected compensation and any special requirements (health issues, veteran, etc).
  • Ask about what the Candidate thinks about stock option plans.
  • Explain the next step regarding the exercise.

With the collected information, the CTO, along with two engineers (the Hiring Committee) make an assessment of whether they want to proceed with the Candidate or pass.

A lot of companies make the mistake of introducing the technical exercise without this step, steeply raising their dropoff rates due to Candidates not willing to invest the time on an unknown. In summary, this step ensures:

  • The company has as much information possible before actually engaging in interview talks.
  • No engineering resources are spent on this step.
  • The Candidate’s time is respected.
  • The Candidate has the motive to invest the time required by the technical exercise.

Step 3. Offline Technical Exercise

The Offline Technical Exercise should be a small-scale project that shouldn’t take more than a day to complete, ideally, it should be finished within a few hours. The topic should be a realistic scenario drawn out of past company experience, making it strongly related to what the company already does. An adequate amount of time respecting the Candidate’s schedule should be provided, which typically spans between 4 days to 1 week as long as a weekend is included and the Candidate has the choice of when the test will commence.

The end result should be requested as a private repository or a zip file, which should include a full test suite and documentation with instructions on how to install and run the program. Make sure you have a clear project statement and specifications, test it against your team and iterate from the first questions you’ll get from the Candidates.

Once the exercise is received, the CTO or the Hiring Committee (depending on required velocity) should review it and make an assessment whether they want to proceed with the Candidate. Reviewing the exercise is the reason why I am for an offline one vs all the other types of technical exercises (whiteboard, live coding, belly dancing coding, etc). In an offline exercise, and as the test is performed at the convenience of the Candidate, their full capabilities and flavor will be expressed. In short, from an offline exercise, the following can be easily asserted:

  • Project and directory structure.
  • Tooling and Quality Assurance procedures.
  • Open Source influences.
  • The competence in operating industry standard tooling and practices:
    • Github, other similar services.
    • Git proficiency - commits, pull requests.
  • Project documentation.
  • Testing abilities.
    • Quantity, quality and code coverage of tests.
    • Test tooling used.
    • Test documentation.
  • Architecture & design of codebase.
  • Code documentation.
  • Code complexity.
  • Code discipline.
  • Code quality.
  • A myriad of coding standards, practices, and conventions.

In contrast, let’s see what a live coding exercise can assert:

  • The Candidate knows how to code.
  • The Candidate can operate under highly stressful conditions that do not actually exist or ever have to be endured in the real workplace.

That’s it, really! I promise to write a more extensive article on why this is what it is, with elaborate examples. However, this is the case, and while a live coding exercise can help you assess the skills of a junior or intermediate engineer, it will most certainly discourage a senior person. The same reasoning as when creating the questions for Senior Engineers apply here, you need to respect the experience of the Senior Candidates and gauge their full depth and width.

Step 4. CTO Interview

This is the central point of the interviewing process. You can flavor it as you like, add one more step before with engineers so they have an experience with the Candidate as well if your team is large enough or skip directly to the CTO if you have more money than people.

A big part of this interview will be analyzing the exercise of the Candidate and walking through each part and the decisions that had to be made. That alone can provide enough evidence as to the Candidate’s technical proficiency and therefore the interview should next move to other topics of interest. So the next part is a conversational type of interview, that can be technical but it’s not required. The aim is to gauge and understand the following values of the Candidate:

  • Conversational skills.
  • Expression and elaboration skills.
  • Team playing abilities, ego/diva syndromes.
  • Decision-making process.
  • Problem-solving process.
  • Leadership traits.
  • Culture, background, flags of various colors (red, green, yellow).
  • Motivations and Ambitions.
  • Personal development roadmap.
  • Soft discussion about salary expectations to prepare the way for the CEO.

Step 5. CEO Interview

That’s the closing Interview, “closing” as in the sales term. The CEO will have to quickly assess all of the above non-technical points and provide the vision of the company. Then proceed with the offer.

Step 6. The Offer

This section deserves plenty of articles on its own to be properly analyzed as it touches on so many concepts and most importantly the market value. The market value is set, well, by the market. And as I have already explained the market for Senior talent is one, the global one. This kind of people have seen their fair share of ugliness and startups raise and crash. So naturally, they have a very well developed sense of what their market worth is, have quite a cynical view on the mortality of startups and have already fallen for all kinds of tricks and schemes to get them hired. Low self-esteem exploitation, future mythical riches, awesome toys at the office, are some of the classic tricks used, even today, to lure engineers.

So Senior Engineers have to be dealt with a straight on, single and final offer. Don’t try to haggle with a Senior Engineer, remember, they have options and it is most likely that they cannot properly handle commercial negotiations so they might “break” under this pressure and result in a negative outcome. To add to that, the company has to offer a +10% of the market value to the Candidate to be competitive, because after all, that is what being competitive is all about. That +10% can be expressed in many ways:

  • As a simple cash addition.
  • As a more generous stock option plan.
  • Work in a pioneering high-tech sector that the Candidate is particularly interested in (that’s more a matter of chance as you can’t be picking industries based on engineers’ preferences but it is a valid reason as to why engineers choose a job paying less over another).
  • The founders have a proven track record and the company’s target market looks really promising.
  • Autonomy and freedom of initiative.
  • [Put your idea here] - Imagination is the limit, but it will have to be something the Candidate wants.

So you have three variables to figure out the right offer for the Candidate:

  1. The Market Value based on the Candidate’s skills as assessed by your team.
  2. The Candidate’s ask price.
  3. Your budget.

As long as Market Value and Candidate’s Ask are not far apart, and the ask is within your budget you are in the perfect condition. But that usually isn’t the case, I won’t go into depth for the case where the Market Value is distanced away from the Candidate’s Ask, both will have to do their reality checks and resolve that on their next company/candidate. For the case where the asking price is far from your budget is where things get tough and the Candidate may skip.

Exchanging Cash For Stock

When your startup is still in the early stages and you are strapped for funds but need to have a Senior Engineer in the team, that’s when company stock comes on the table. Suppose the Candidate asks for 100k units of currency, and the company can only afford 70k. That is a 30k per-year reduction and a 30% cut in the Candidate’s market value.

That, is an exchange of stock for cash type of deal and is a totally different thing from incentive tools like Stock Options which aim at motivating the employee to stay with the company as long as the business is good. Assuming the Candidate is willing to enter into such negotiations the company will have to offer Common Stock to compensate for the “cash investment” of the Candidate.

The “Cash Investment” isn’t really an investment, in the commonly used sense. An engineer is not an angel investor and understands that this is an extremely risky investment to the point that it doesn’t make any sense to view it as such. Instead, what is happening, is that the engineer through that very tangible act makes a commitment to the company and the cause. And they expect that commitment to be of equal and fair value from the company.

The reason why Common Stock via RSAs (Restricted Stock Agreement) is chosen for that type of deals over Stock Options will be analyzed in depth in a future article. The tl;dr of the story is that Stock Options were simply not built for that type of deals, the contracts are extremely favorable towards the company eventually gaining back the stock and rightly so as it is a tool to incentivize the employees to stay longer with the company. When an engineer is paid in full their market value they are good addon to have but not necessary, as by now, most 5y+ engineers have already filled a bookshelf of those contracts.

As to the amount of stock to be offered, the CEO has to consider the “early stage” the company is at, as only at that stage a company has cash flow issues. Consider the impact a Senior Engineer can have on the team and the extent to which this is a make or break situation for the blazing fast pace a startup must have. Therefore, depending on the Candidate’s “commitment” an equal offering in single percentile digits sounds like a fair deal.

In Conclusion

In the end, it’s always a matter of timing for both parties to find all their stars aligned. Hiring can be a cruel and unpleasant process for many but I beg to differ. I find it as a great opportunity to keep my grasp on how the market operates and how our industry behaves. It is also a great source of ideas and insights into technologies and paradigms you have never been exposed to before.

There are a couple of takeaways here if I boggled your mind too much, the tl;dr of the post if you like… It takes a Senior Engineer to know a Senior Engineer. The Candidate is interviewing you as much as you are interviewing them.

blog comments powered by Disqus