Sooner or later, we should stop using textual diff and switch over to higher level one/multiple, such as the AST-level diff (see what GrammaTech does, for example). This and integration of dependency management, is a must IMO.
I wrote https://github.com/amb007/persistent-buffer hoping to use the actual editing history foe precise diffing. I know that projectional/structural editor do such things, not sure if for diffing.
3. You can actually try and understand most of what's been written through reading, given that you're allowed the time for that. It's an investment, prevents technical debt and promotes progress. No one is born with the mediocre skills of big teams, one can (almost) always improve.
You seem to need to study programming before being able to do real DevOps. nix is kinda advanced in this sense even if it is has a small language. In my experience, very few ops are able coders.
I had bought the Kindle edition a few years ago because of recommendations, but still haven't read it as I am supposed to read it all (and prove theorems) in order to understanding the motivation. Could someone briefly say why the book contains what it contains?
Thanks
Metaprogramming is about making design more formal. A "constant fraction" of anything written by hand should be automated, ideally. Metaprogramming is not complicated, it is an essential skill, design may be complicated.
I would add that due to the heavy business emphasis in the industry, the level of apprenticeship has dropped to very low. Instead of letting experienced engineers guide newcomers, it is often the case that junior but agreeable and less paid engineers take the lead. This way, it takes much longer to learn the craft.
This. Having worked in the US and Europe, the local culture is ubiquitous. What is best for advanced software development, and engineering in general (IMO), is a low-context culture[1], which is dominant in the US -- so that many immigrants of diverse backgrounds can communicate efficiently.