Sign in

Consulting CTO open to projects. I’m a serial entrepreneur, software engineer, and leader at early- and mid-stage companies.
Photo by Andrea Piacquadio from Pexels

A good interview process for software engineers should reliably assesses whether candidates can write code to solve the kinds of problems they’ll face day-to-day. The question will arise: why don’t we give candidates a coding test as a take-home assignment? This would provide the candidate with a much more “natural setting” to demonstrate their skills outside the pressure of an interview. A larger and more open-ended problem will allow for a better-rounded assessment. And besides, if someone doesn’t want to do this test, isn’t that a sign they’re not truly interested?

Many companies regard themselves as software startups but don’t operate that way. Instead of creating a product that can be resold with minimal effort, they provide bespoke customizations to satisfy client requirements in order to make that next sale. Supporting the burgeoning complexity of one-off rules, integrations, and the stream of maintenance tasks consumes company time, and requires hiring more people. Over time, a company may find itself effectively becoming an execution team for clients, not a scalable tech company in charge of its own strategy.

The entire point of a tech startup is that it scales, by which I…


All software teams have technical debt — parts of the code that weren’t created with today’s challenges in mind, or were written poorly, or were expedient hacks that are now problematic. Having tech debt isn’t necessarily a bad thing; if people spent all their time making code perfect, nothing would ever get done. But too much accumulated debt makes it slower to deliver new features and is a source of bugs and quality issues.

What should an engineering leader do when a team is mired in tech debt? This post lays out the the general playbook I’ve followed. …


I manage software engineers and regularly collaborate with teams across our company. We need to make dozens of decisions a week, ranging from the technical (how will we solve a particular problem?) to nuts-and-bolts process (after a sale, which onboarding steps should be manual or automated?) to the strategic (what customer problems are we solving?).

Organizations should deliberately consider how they make decisions so their process will improve over time.

Without such course-correction and introspection it can be hard to explicitly connect symptoms like mounting personal frustrations, politics, and time spent in ineffective meetings to the root issue of poor…


Many companies, especially technology startups, include stock as part of the job offer. But it can be hard to assess the value of the stock if the company is not yet public because there’s no market price or way to sell the stock. For example, suppose a person receives a job offer from an early stage startup with a salary of $100,000 plus 40,000 shares given over the course of 4 years. Is that a good offer or not?

To understand the value of stock in a job offer, you may need to ask for context.

This post is written…

Our Health Check Survey is a tool for keeping pulse on team sentiment and getting ahead of critical problems. It’s an organization-wide web-based survey that’s regularly sent out asking team members how they are doing. Responses are not anonymous, but only managers may view individual answers. Conceptually, these surveys are an extension of regular 1:1s between an employee and their manager, but cover more breadth. Aggregate results are shared with everyone and can be trended over time.

At VTS, we started running these health check surveys 9 months ago. The results have been overwhelmingly positive:

  • Employees appreciate being able to…

As a director of engineering responsible for a lot of hiring and recruiting, I often talk with folks who have recently graduated from a 3–6 month code bootcamp. A common question is:

What do I need to do next, to get my first job writing software?

The fact is that a bootcamp crash course will not magically turn someone into a top software engineer. It will take thousands of hours of additional experience to catch up with a computer science undergraduate. While the practical skills learned in a bootcamp are useful and a great start, the real value of these…

At VTS, the engineering team worked diligently to distill the attributes that define our culture and make work meaningful. The resulting engineering values provide a solid foundation for our team and are a deep source of pride and identity. The process of how we crafted our values is as important as the values themselves; the bottom-up collaborative approach gave the team buy-in and ownership.

How we crafted our values is as important as the values themselves

In this post, I will first present the VTS engineering values. I’ll then discuss why values matter and what makes for useful values, both…

Software engineers are often asked to jump into the interview process with a minimum of advance preparation or training. This post is a condensed guide for helping people get up to speed with technical interviewing. The insights and tips are based on the over 400 software interviews I’ve done since 2003 at five companies, including at as a ‘bar raiser.’

I’ll discuss what matters during interviews; how to think about high-signal questions; how interviews are typically structured; and I’ll end with some general observations. This post does not cover specific interview questions.

Ah, the Interview Process

Based on just a brief summary of…

Anyone in tech has probably heard that it’s hard to hire good software engineers; but folks might not realize just how expensive it can be. Simple back-of-the-envelope math shows that it can easily cost $50,000 to recruit someone and bring them up to speed. It’s even more if you need to hire a replacement for someone who’s leaving because you also need to re-build their institutional knowledge.

It’s very expensive to hire good people, but it’s even more expensive when good people leave!

Each time you hire someone, that’s like buying a new truck — which nobody gets to drive.

Cost of Hiring an Engineer

A simple equation for the cost of hiring a software engineer looks like:

Cost of hiring =…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store