Systems Performance 2nd Ed.



BPF Performance Tools book

Recent posts:
Blog index
About
RSS

Why Don't You Use ...

19 Mar 2022

Working for a famous tech company, I get asked a lot "Why don't you use technology X?" X may be an application, programming language, operating system, hypervisor, processor, or tool. It may be because:

  • It performs poorly.
  • It is too expensive.
  • It is not open source.
  • It lacks features.
  • It lacks a community.
  • It lacks debug tools.
  • It has serious bugs.
  • It is poorly documented.
  • It lacks timely security fixes.
  • It lacks subject matter expertise.
  • It's developed for the wrong audience.
  • Our custom internal solution is good enough.
  • Its longevity is uncertain: Its startup may be dead or sold soon.
  • We know under NDA of a better solution.
  • We know other bad things under NDA.
  • Key contributors told us it was doomed.
  • It made sense a decade ago but doesn't today.
  • It made false claims in articles/blogs/talks and has lost credibility.
  • It tolerates brilliant jerks and has no effective CoC.
  • Our lawyers won't accept its T&Cs or license.

It's rarely because we don't know about it or don't understand it. Sometimes we do know about it, but have yet to find time to check it out. For big technical choices, it is often the result of an internal evaluation that involved various teams, and for some combination of the above reasons. Companies typically do not share these internal product evaluations publicly.

It's easier to say what you do use and why, than what you don't use and why not.

I used to be the outsider asking the big companies, and their silence would drive me nuts. Do they not know about this technology? Why wouldn't they use it?...I finally get it now having seen it from the other side. They are usually well aware of various technologies but have reasons not to use them which they usually won't share.

Why companies won't say why

Private reasons:

  • It is too expensive.
  • We know under NDA of a better solution.
  • We know other bad things under NDA.
  • Key contributors told us it was doomed.

These have all happened to me. Technology X may be too expensive because we're using another technology with a special discount that's confidential. If the reasons are under NDA, then I also cannot share it. In one case I was interested in a technology, only to have the CEO of the company that developed it, under NDA, tell me that he was abandoning it. They had not announced this publicly. I've also privately chatted with key technology contributors at conferences who are looking for something different to work on, because they believe their own technology is doomed.

At some companies, whatever reason may just be considered competitive knowledge and thus confidential.

Complicated reasons:

  • It performs poorly.
  • Our lawyers won't accept its T&Cs or license (example).
  • Our custom internal solution is good enough.
  • It made sense a decade ago but doesn't today.
  • It tolerates brilliant jerks and has no effective CoC.
  • It lacks subject matter expertise.
  • It's developed for the wrong audience.

These are complicated and time consuming to explain properly, and it may not be a good use of engineering time. If you rushed a quick answer instead, you can put the company in a worse position than by saying nothing: that of providing a weak explanation. Those vested in the technology will find it easy to attack your response – and have more time, energy, and interest in doing so – which can make your company look worse.

I've found one of these reasons is common: Discovering that a product was built without subject matter expertise. I've seen startups that do nothing new and nothing well in a space that's crying for new or better solutions. I usually find out later that the development team has no prior domain experience. It's complicated to explain, even to the developer team, as they lack the background to best understand why they missed the mark.

A common reason I've seen at smaller companies is when an internal solution is good enough. Adopting new technologies isn't "free": It takes (their limited) engineering time away from other projects, it adds technical debt, and it may add security risk (agents running as root). In this case, the other technology just doesn't have enough features or improved performance to justify a switch.

Safer reasons:

  • It is poorly documented.
  • It lacks features.
  • It lacks debug tools.
  • It has serious bugs.
  • etc.

Those are objective and easy to discuss, right? Sort of. There are usually multiple reasons not to use a product, which might include all three: "safe", "complicated", and "private." It can be misleading to only mention the safe reasons. Also, if you do, and they get fixed, people will feel let down that you don't switch.

Bad reasons:

  • Not invented here syndrome.
  • Pride/ego.
  • Corporate politics.
  • etc.

I didn't include them in the above list, but there can be some poor reasons behind technology choices. At large tech companies (with many staff and their collective expertise) I'd expect that most technical choices will have valid reasons, even if the company won't share them, and poor reasons are the exception and not the rule. People think it's poor technical choices ten times more than it actually is.

Just as an example, I've been asked many times why my company uses FreeBSD for its CDN, with the assumption that there must be some dumb reason we didn't choose Linux. No, we do regular Linux vs FreeBSD production tests (which I've helped analyze) and FreeBSD is faster for that workload. For a long time we just avoided this question. I finally got approval to mention it in a footnote in my last book (SysPerf2 page 124).

The only sure way to find out why a company doesn't use a given technology is to join that company and then ask the right team. Otherwise, try asking questions that are safer to answer. For example: "Are you aware of technology X?," and "Are you aware that technology X claims to be better at Y?". This can at least rule out ignorance.

Update: This was discussed on Hacker News, which included some other reasons, including:

  • Engineers don't know X and can't hire X engineers (certainly true at smaller companies).
  • The cost of switching outweighs the benefits.
  • Legacy.

And I liked the comment about "...random drive-by comments where the person is really just advertising x, rather than being genuinely curious."



Click here for Disqus comments (ad supported).