For many years we went for the tech that made us implement software faster than others. We picked productive languages (clojure/lisp) or languages to express more with less and with less bugs, we wrote frameworks, DSLs and even a few language etc; it worked indeed and we were faster. However, longer term (5+ years) it would be impossible to find people to update/support the code. The win at the start (sometimes a win that would have us win large fortune 1000 projects over the competition) would suffer in the long term from no-one (outside myself and maybe 1 other person) understanding how it works (other people left/went on to other things etc).
So now we just mostly deliver things in old, boring but very standard tech. Using almost written by us and definitely no custom low level stuff like we used to. Because we did all that work before, we know how to optimise for performance everywhere, how to optimise dbs, how to optimise frameworks and webservers. We do everything according to the standards and best practices; now we know that we can get people in 20 years to work on our code. But it is much much slower at the start; so much setup and plumbing. Very boring and tedious. I guess that's the point.
So now we just mostly deliver things in old, boring but very standard tech. Using almost written by us and definitely no custom low level stuff like we used to. Because we did all that work before, we know how to optimise for performance everywhere, how to optimise dbs, how to optimise frameworks and webservers. We do everything according to the standards and best practices; now we know that we can get people in 20 years to work on our code. But it is much much slower at the start; so much setup and plumbing. Very boring and tedious. I guess that's the point.