Phase change in software

  • Programmers are about to become more like modern mechanical engineers.
  • Early mega corps based on mechanical engineering - Brunel.
  • The science behind engineering (Physics, Chemistry) was done in free time / unpaid.
  • Mechanical engineering.
  • Now scientists play a larger role in IT.
  • Big tech hires academics.
  • Engineers don't write web frameworks or set up infrastructure.
  • Off the shelf scalable solutions.
  • The future platforms are run by AWS, GCP, Azure and a handful of smaller based on open source software.
  • No one needs to write database engines anymore.
  • Engineers will work at big tech implementing software based on the work of academics. No one else will do anything interesting apart from big name open source projects.
  • Remaining engineers will glue things together and run it on one of the big platforms.
  • Software will increasingly be written tailored for the big platforms.
  • The day of the self-taught engineer writing large scale software is over.
  • Today the opportunity to write a core library from scratch only happens when a new language appears.
  • Most of these core libraries are full of holes (https://blog.carlmjohnson.net/post/2020/avoid-dependencies/)

Conclusion

If you want to write interesting software you need to work at one of the big tech firms writing for their platforms. You will be implementing things designed by academics working at those firms. Otherwise you will be writing an open source copy. To do this you must have a CS bachelor degree. If you do not have a degree you will be working out in the real world gluing other peoples software together to run on a big platform. That's if you need to glue libraries at all and instead are just configuring no-code applications. Or your primary function will be to write "code" in yaml files.