When does it make sense to use a recruiter for hiring engineers?

Recruiters have a bad reputation, especially for spamming.

I get a lot of emails with unsolicited CVs. Whenever I’ve posted a job ad online, I know to expect that volume to increase. At least they’re helping train my spam filters when I click the “Spam” button!

This kind of behaviour means their reputation is well deserved. The problem seems to be that in almost every case, recruiters have completely misaligned incentives when it comes to finding you good candidates:

  • Success fee based recruiters are incentivised to place someone as quickly as possible and have no stake in the long term outcome of the candidate. Although they all have “refund” periods where you get your fee back if the candidate leaves after a certain period of time, the length of time is usually insufficient to properly judge whether someone is a good fit unless they crash out very quickly.

    Even if the refund period applies, they are then even less incentivised to find a good replacement because their profit margin quickly diminishes if they have to spend all the same effort again to get you more candidates.

    That is also the case if you’re too picky. I’ve worked with a number of recruiters (all recommended through referrals) where activity tails off after a period. There’s always an initial burst of profiles but as you reject them, they lose interest. This highlights the lack of incentive to persevere and find those good candidates.

  • Retainer based recruiters have the opposite incentive – to create a long process with no time pressure. They get paid regardless of the success of the project or whether the candidate stays with you or not. It can mean you get a more in-depth search, and is sometimes combined with a success fee, but there is still no incentive for them to place someone or put in more effort than the minimum. After-all, they still get paid.

The problem is that in both cases, the incentives are misaligned. You need a recruiter who 1) is looking for good candidates that fit your criteria; 2) who will find you someone who is good to work with; and 3) someone who will will stay with you for a long time.

There are always going to be exceptions, and no doubt the recruiter pitching you will claim they have a new and exciting approach that makes them different, but in reality the only way to match incentives is if they are working for you exclusively full time i.e. they’re an in-house recruiter.

This will be someone who really understands your company values, will work in the same office and probably sit next to the person they hire. They might not be an engineer themselves but they will want to work alongside someone good.

Of course, in-house recruiters are potentially expensive full time employees so aren’t necessarily appropriate for a small numbers of hires. They only really make sense for growing big teams.

A possible compromise is an contract recruiter who is working for you exclusive for a defined length of time e.g. 6-9 months. That person can get into the company culture and take the time to find the right candidates, but then leave once they have built the team.

They won’t be as bought into the success of the hires as a permanent member of your team but it gets close.

The advantage of using recruiters is they supposedly have good networks of people, although that is really only true for the top end executive search firms, if you’re looking for contract roles or for less skilled general administrative positions (not engineering).

The best engineers can pick and choose a small number of places they want to work at, so they don’t use recruiters. This means for hiring engineers, it’s really tricky to find a recruiter that will actually deliver.

Stay tuned for my next post on how to source engineering candidates without recruiters.

How the cloud changes how developers should think about costs

In the beginning there were servers, and they had a fixed cost per month. You ordered a certain spec and had a fixed price which was predictable every month. Sometimes you might exceed your bandwidth allowance but most hosting companies included a huge allowance so that was unlikely.

Regardless of how little or how much traffic served and activity performed, the cost remained the same.

For many early switchers to the cloud, the cost remained somewhat fixed. Although you didn’t contract a known price up front (before instance reservations), if you were just using VMs (probably on EC2) then you were still paying a fixed fee.

Network usage was the first real “pay as you go” element for most people moving to the cloud. Both public and private traffic was billed for precisely the amount used, which might have been a nice reduction but was probably a nasty surprise.

Moving from fixed, all inclusive contracts to pay as you go removes a safety net which makes you responsible for optimising your network usage whether it is wanted or not. You no longer have control over spikes and have to pay for sudden popularity or malicious attacks.

This is quite a drastic change of mindset, particularly with regards internal traffic. Verbose network protocols such as for database replication or queuing systems suddenly have a real impact on your budgeting, yet they are very difficult to predict because they’re out of your control.

But that’s just the beginning.

For new cloud-first architectures, every single element of your architecture is billed on a usage basis. Every message in a queue. Every row in a database. Every serverless function call. You can just as easily save a lot of money on low traffic applications as blow through your budget with highly trafficked systems, poor design or bugs.

For developers, this means efficiency matters again. Performance improvements have a direct impact on the bottom line and developer time spend on optimising and refactoring can now be given a dollar value.

The gain is in handing the undifferentiated heavy lifting to a cloud service. Instead of spending time reinventing a standardized component, time can now be spent on the core application code that differentiates you service.

DevOps no longer really means developers understanding how to operate their applications. It’s more about how their applications operate in terms of performance, and therefore cost.

This is quite a shift in mindset.

Innovation in incentives – how should startups structure salaries, bonuses, commission, stock options?

Understanding the business stage is important when trying to decide the best way to incentivise your team. Startups exist in a state of uncertainty, rapidly iterating to find product/market fit which can scale up. This is quite different from a large corporate with revenues that are likely to be sustainable for the long term.

Incentive schemes must be stage appropriate. They have to reward reaching key milestones which allow the business to transition to the next stage. So what does this actually mean for a startup? How should incentives be designed for those initial 12-18 months of the life of a startup?


At its most basic, an incentive is a trade. You’re trading an object of value for something else of value. For employees, this starts with money being exchanged for time. The value of that time is determined by a number of factors particular to the individual – their experience and their skills – in relation to the availability of someone similar within the market. Of course it’s not quite as simple a calculation as that, but this a basic approach to thinking about salary.

But salary is just the starting point. There are many other aspects of an employment package which make up compensation, which is in turn just one part of what incentivises people to work.

This is important because incentives have to be more granular than just a salary. The salary is really there just to trade money for time in the pursuit of a goal, but it doesn’t change whether that goal is achieved or not. Indeed, it’s not supposed to – a good proportion of someone’s salary is for subsistence. It’s what they need to live. Rent/mortgage. Food. Travel. Clothes.

The only thing that salary is linked to is the survival of the business. If it fails, you’re out of a job. Certain roles tie success not to the entire business but hitting quotas or targets, such as in sales. Those who are not very good at the job quickly move on. But for most role, there’s not such a direct association between quantitative success and whether you get fired or not.

By itself, salary is therefore an insufficient incentive for most startups.

Bonuses and commission

Bonuses and commission are the next thing which come to mind as very common options for incentives.

Commission is quite easy to deal with because it is just like linking salary/being fired to quotas. Commission is appropriate for sales based roles, whether new business or account management. It directly incentivises increasing the revenue of the business, which is the main goal for most for-profit organisations. However, it is very specific to sales roles and so isn’t helpful when considering a broader incentive scheme.

Bonuses are more challenging. The criteria which determines when a bonus is paid needs careful consideration. The goal must be clear and quantitative. It has to be achievable, but not too easily. And achieving the goal should provide more value to the business than the monetary value of the bonus (at least over the long term). Some consideration should also be paid to exceeding the goal – is it a binary state of achieved vs not, or is there a scale of achievement? In a pure sense, once the goal is achieved and bonus paid, there is no incentive to go any further even though this may be beneficial for the business. So can the bonus amount increase based on what is achieved? How high should it go?

Bonuses also have organisation-wide context. Who gets a bonus and how does it relate to the bonus structure for the rest of the team? People will compare their bonuses both in terms of the value and what they have to do to hit it. It’s very difficult to equalise all bonuses so there may be a negative incentive because someone is unhappy that their bonus is smaller or harder to hit.

Organisation wide goals

Salary, bonuses and commission are all paid to individuals on individual success. How do we incentivise a team or the whole organisation?

Well, bonuses apply here too. Everyone should be working towards a single goal for the organisation and if the effort of the group means you hit it, the group can benefit.

All the problems of bonuses apply here though so for more mature businesses, a profit sharing scheme is a good alternative. It is not a fixed amount so aligns both the goals of achieving a profit, and growing it. With proper transparency into the spending patterns (and decisions), the team can be involved with commercial decisions about whether to increase spending and how to cut costs.

Startups usually use stock options as another form of incentive. However, these only have value if a) the business is acquired (for more than the strike price); or b) the business goes public. Both outcomes are extremely rare and so far into the future that for all incentive based discussions, their value is basically zero. There is of course some value to feeling like you own part of the business and you will benefit in those two events to which you have contributed, but that value is not quantifiable in advance.

That’s not to say stock options shouldn’t be a standard part of startup incentive plans, but for the purpose of this discussion their uncertainty means they’re not a particularly useful incentive.

More individual choice

The problem with organisation wide incentives like profit share, bonuses and stock options is that they reward everyone regardless of effort. There should be consideration for the differences between someone who is putting in 30 hours a week vs someone putting in 60.

There is a growing movement focused around work/life balance, with schemes like 30 hour weeks and ensuring staff get proper breaks by deleting all their email when they are holiday.

Whether this new way of working is reconcilable with the level of dedication needed in the early days of a startup is something I’d like to write about further. Is the legendary worth ethic of Jeff Bezos and Elon Musk necessary for billion dollar outcomes? But for the purposes of incentives, there has to be a link between effort and reward. Effort does not necessarily = results. Working more hours doesn’t mean better outcomes. According to some recent research:

…people who sleep fewer than six hours a night are 2.4 per cent less productive than those who get between seven and nine hours. Overall, the UK loses hundreds of thousands of working days due to insufficient sleep, costing the economy £40bn each year, or almost 2 per cent of gross domestic product.

At some point, the incentives to work more generate negative outcomes. As such, the level of productivity and output must also be part of the calculation.

Why not let people choose?

If your goal is something other than more money – family time, hobbies, travelling, reading – why not opt to work less in return for a different compensation package?

Of course, another word for this is “part time” but that typically implies a proportional salary reduction which might not viable for people who need their entire salary to live. How about if you could trade fewer working hours with your bonus, or a lower commission? Indeed, this might even incentivise you to be significantly more productive to achieve the same (or more) in less time.

Amazon is piloting something similar with an experiment allowing technical teams that work 30-hour weeks for the same benefits and three-quarters the pay of 40-hour employees.

Innovation in incentives

It seems to me that just being paid a salary is quite an inefficient way of incentivising your team.

For the business, it is a fixed overhead that has no real power to incentivise achieving company goals (neither once nor as they evolve).

For the employee, it just serves to fulfil basic security needs and has no relationship between effort or achievement. It’s a backwards looking measure of your worth in the market at the time you were hired and does nothing to link you to the success of the organisation you’re spending so much time with.

With more and more focus on work / life balance, there has to be more innovation in incentives. Bonuses and profit sharing might not sound innovative, but it’s interesting to consider how they’re applied to help encourage achieving goals for the individual and the organisation.

I think we’ll start to see more choice for employees joining new, innovative businesses that help align them much more in the short term, the long term, with financial outcomes and overall wellbeing. Compensation packages should be just that – a package selected from various options that are truly linked to outcomes and motivations. This will provide a compelling differentiator in the labour market and make success more likely overall.

What is the difference between customer success and account management?

Over the last few years, there has been a trend (particularly in SaaS) where account management is now being called “customer success”.

The latter is considered more modern. There are conferences. There are products. A whole customer success industry has sprung up and everyone now wants to call themselves a “customer success manager”.

But they are not the same.

You can’t just move from account management into customer success and apply the same approach. They are very different skillsets which are also distinct from customer or technical support.

So what is the difference? The clue is in the title.

Account management

This is about focusing on the “account” i.e. the financial metrics.

Account management is usually a sales function with the goal of increasing the account size.

The main job of an account manager is to understand the usage and how to increase it, selling additional licenses, seats or additional products that may be relevant to the account.

There is usually a reactive element to provide the customer with a direct contact if they have problems, but the account manager will typically route those to the right person.

The metrics are account expansion and sometimes new sales. Account managers are usually on commission or have bonuses to match their metrics.

Customer success

This is about focusing on “success” i.e. ensuring the customer fully adopts and deploys the product, then ensuring they continue to use it.

Most customer churn happens because the product was never fully deployed.

The customer success manager is supposed to build a trusted relationship with the customer to help them figure out the best way to use the product without the customer being concerned they are going to be charged more.

Working to understand what problems the customer is trying to solve with their purchase of the product is important. Training and directly walking the customer through everything will be a standard part of the job. This will be a lot of phone and conference calls, sometimes on-site too.

Proactivity is key here. The CSM must understand the usual usage patterns, know when they change and dig into support requests to ensure product problems are solved quickly. They’re also often the internal advocate for the customer across multiple teams and getting feedback to product management.

The metrics are retention (churn) and NPS. There isn’t any scope for commission but bonuses may be attached to those metrics on an aggregate basis for larger businesses.

What’s the same?

Communication. If you’re not on the phone or in conference calls with customers throughout the day, you’re probably doing it wrong.

Email is fine to a degree but whether you’re trying to sell a new product as an account manager or helping a customer with their deployment, nothing beats actually talking with a customer directly.

This is different from technical support which might be better delivered via email/ticket for complex engineering issues (although still often backed up with initial or followup calls).

How to prioritise what features to build

Deciding what to build and when is the most difficult task for any product/engineering team. There are always multiple competing interests that appear at different times, pulling you in every direction.

Without an understanding of how to prioritise, you can easily switch contexts too often, damaging productivity and making everything feel manic.

Despite this, it is it possible to define some prioritisation rules. These are mine:

  1. Critical problems waking up your team
    Your team are the first of two crucial stakeholders. It sounds obvious, but without team members you can’t deliver your service! Stress and fatigue caused by outages have a knock-on effect on your customers because product quality suffers. Engineers must be on call for their own code and systems, but if there are too many out of hours incidents and the trend is not towards a reduction in volume, they will eventually leave. Being woken up (or interrupted out of hours) has a huge impact on quality of life which has to be addressed quickly.
  2. Critical problems breaking service for your customers
    Customers are the second of the two crucial stakeholders that determine prioritisation. Your business only survives because customers generate revenue but without your team, you cannot service your customers. As such, customers come second. But any critical issue that is breaking a core service for your customers must be solved quickly. This can range from a complete outage to a major bug that is preventing functionality from working. These types of issues should be parachuted into the current development cycle and fixed first. It’s much easier to keep existing customers happier than to sign up new ones.
  3. Bugs and improvements requested by or affecting existing customers
    Linked to #2, keeping existing customers happy is the best way to build a sustainable business. This is especially the case with SaaS, where accounts often grow and revenue can be increased without anywhere near the cost of acquiring a new customer. Existing customers also know what they want to see in the product because they’re actually using it. You don’t necessarily have to agree with them and it may not be appropriate to build everything every customer asks for, but bugs and smaller improvements help to improve retention. SaaS revenue compounds.
  4. Innovation
    Since it has never been easier to start a business, differentiation is crucial to standing out amongst the inevitable competition. Products have to continually evolve because what is differentiating today is just a standard feature tomorrow. This means having a unique perspective of the market and what customers want from it. Building solutions to interesting problems helps attract the best team. It makes customers want to stay with you because they see the product evolve. And it makes you stand out from competitors. You can’t stay ahead just by copying.
  5. What lost deals or prospects are asking for
    Having a unique position in the market isn’t sufficient if you don’t offer the key features everyone is asking for. Understanding why customers are not buying and/or what they are asking your sales team for will give you a good insight into what you should be building. Sometimes you can commit to delivering requests as part of a deal (or with a chargeable services element on top). I’d also argue there’s a place for a whole product team dedicated just to building requests that come out of the sales and marketing discovery process.
  6. What your competitors are doing
    This is often linked to #5 if competitors are defining the market. You need to ensure you cover at least the core functionality for buyers who have a simple checklist, but then this is where #4 comes in to make your offering stand out. However, it is the lowest priority to simply copy what competitors are doing because by definition doing so will mean you’re always behind.

Whether you agree with the ordering above or not, the important thing is to have a set of rules which can be applied to inbound requests.

You’re going to get input from your team, customers, investors, board members, friends, competitors and more. Technical debt, refactoring and rearchitecting also have to be considered (maybe it comes under #1 in extreme circumstances, but it can probably be considered as part of a project that fits into one of the normal priorities).

Things will also change over time.

Only one thing can be top. Unless there is a single, ordered list of numbered priorities, nothing is the priority.

Challenges of running an enterprise SaaS business in the UK

Since starting Server Density in 2009, a B2B enterprise SaaS business, my biggest challenge running has been commercial.

This is a broad area but covers everything from sales and marketing to new customers through to account management and keeping existing customers happy. In recent years, the latter has developed into “customer success” as a specific discipline distinct from customer support or technical support.

In the last 12 months I’ve been involved with hiring for commercial roles in both the UK and the US and there is a clear difference between countries when looking for that crucial enterprise B2B SaaS experience.

My conclusion is that whilst you can quite easily build out product, engineering and customer support teams within Europe and the UK, it is very difficult to do the same with early stage commercial teams. There’s the occasional highly talented individual who has done it before in the UK, but otherwise it’s almost impossible to recruit for commercial roles here. The initial sales, marketing and customer success hires need to be in the US.

The reasons for this are as follows:

The UK and Europe have well established communities around technical roles: engineering, product development, operations, developer relations, community, events, and customer support. You can find people doing these roles at all levels of experience and seniority at companies of all sizes. There are plenty of academic institutions linking with industry to develop more of the theoretical experience, and mainland Europe in particular benefits from a significantly lower cost base which has made outsourcing popular. This all means that there is a large talent pool that scaling startups, corporates and other businesses can access.

For commercial roles in enterprise SaaS, this ecosystem simply doesn’t exist. There are very few SaaS businesses founded and being scaled in the UK or Europe.

The “founded and being scaled” part is important because it’s not the satellite sales offices that count – at the point where you’re creating a new sales office, you have already figured out the repeatable business model and are simply scaling it. It is the stage where you’re still figuring out product-market fit that needs the highly experienced people in key roles who have done it before.

Those people are in the US.

From the BVP Cloud Index, 42 cloud/SaaS companies have a market cap of +$1bn. Of those, 36 are HQ’d in the US and only 1 in the UK (Mimecast).

This is a problem because it’s self-reinforcing cycle. Companies start and are scaled in the US because that’s where the experienced people are and the people are there because that’s where the startups are.

London is the best place to start a technology business Europe. With 58,000 tech firms already located here and more venture capital investment than in Germany, France, Spain and Ireland combined, I agree that London will remain a major hub for the types of businesses that already do well here – fintech, fashion, design, consumer, retail, eCommerce and mobile. But SaaS is lagging.

There are signs of improvement, although there is still some way to go:

  • SaaS specific funds like Point Nine Capital and Notion Capital are sowing the seeds but their portfolio companies often relocate commercial operations to the US.
  • Box recently opened its European HQ in London, but they have already IPO’d.
  • Apple and Google have both announced major new HQs in London, although they are long past the challenges of startup scaling.
  • Mimecast has their HQ in London and IPO’d several years ago, although they listed in the US on NASDAQ.
  • NewVoiceMedia is a UK based company that looks like it might IPO in the future (given the amount of capital raised).
  • A second round has been launched by the GCHQ Cyber Accelerator specialising in security products, most of which will come under the enterprise SaaS category.
  • The UK is positioning itself to try and lead the world in AI, self-driving cars, space flight and other “deep tech” developments which tend to have a more B2B commercial focus.

In the meantime, what I think this means for SaaS businesses is that you can start off in the UK and Europe with an initial product and initial funding, but to scale the commercial model through to IPO you have to relocate that part of the business to the US.

Engineering, product, support and operations should remain in Europe because the expertise is available here at great value for money, but sales, marketing and commercial operations need to be where the talent pool is greatest – the US.

A different approach might apply if you’re not going for IPO or trying to build a big business – there are plenty of small, successful businesses in the UK and Europe. But then the risk of being outcompeted will arise instead.

Rewriting, refactoring, rearchitecting – when is the right time?

With any product development, there’s always a tension between perfection and getting things released.

The engineering mindset is geared much more towards architectural, design and implementation perfection. The phrase “it’s done when it’s done” is the ultimate manifestation of this approach but that simply doesn’t work with any real product. Customers expect rapid bug fixes, regular iteration and ongoing improvements.

It’s difficult to get the balance between good engineering and “good enough” to release. Bugs hurt the customer experience, creaky architecture can result in poor performance or entire outages, and technical debt wears away at the happiness of your engineering team. But there are some things which might indicate you’re spending too much time on the engineering!

  • Refactoring, rewriting or rearchitecting code as a project by itself. The best time to refactor is when you’re already touching the area of the codebase in question. Rewriting code delivers no customer benefit but takes up a lot of time, usually introducing new bugs as well. Major rewrite and replace is usually only justified once you’ve hit scale limitations but even then, taking a component based approach and delivering small changes sooner is better than a grand rewrite over months.
  • Investing time building for a scale you have not yet reached. Code will usually last much longer than you expect and so unless you have instrumentation which is showing a customer (or on call) impact either now or imminently, this is probably not a good use of time.
  • Rewriting in a new language, or introducing a new language into an existing codebase. Only dramatic changes in usage scope really warrant considering writing something in a language that isn’t already part of your stack. Hitting a scaling limitation might be a reason e.g. shifting from Python to Go for a systems problem within a high performance environment may make sense, but the right consideration should be given to the ongoing maintenance cost . Who else on your team has experience with that language for the future? How are you going to maintain the technology? Who is responsible for updates? What happens if that team member leaves and you have bugs to fix?

Generally speaking, starting a new project or component is the time to consider new technologies, languages, frameworks and approaches. Anything with the words “rewrite” or “rearchitect” should be approached with extreme caution and scoped within an existing project that will deliver customer benefits at the same time.