I have never (in my 30+ years career) worked for a company that required formal code reviews. And yet have managed to deliver a ton of commercially successful software. I am pretty sure that adding a review step would have slowed me down tremendously. Without adding any commercial value.
However I can imagine that code reviews would work well for inexperienced developers being reviewed by more experienced developers?
At least in the US, code reviews are essentially mandated by legal compliance in publicly-traded companies. The law (SOX) says something like "no one person can destroy the company by making an engineering change", so viola, code review was invented. Private companies can probably get away with not doing code reviews, but often private companies want to pass security reviews like SOC 2.
> I am pretty sure that adding a review step would have slowed me down tremendously
This is very true. Everyone should work on a personal side-project at some point and realize just how much code review slows things down.
I have noticed that most developers prefer to spend a month typing code without having to think hard, instead of thinking hard for a bit and then solving the problem in a day.
C++ developer here (30+ years). C++ is really missing support for sum types. The Haskell JSON example shows how useful it would be to have native support for it. Yes you can build your own but it’s pages of boiler plate code.
All code is data. Many languages (Haskell for example) can directly manipulate code as data (macros). The unique thing about lisp is that the code is represented as a car/cons list. Other languages could do the same when writing macros. However most have chosen not to.