> My favorite definition of “legacy code” is “code that is not tested” because no matter who writes code, it turns into a minefield quickly if it doesn’t have tests.
Unfortunately, "tests" don't do it, they have to be "good tests". I know, because I work on a codebase that has a lot of tests and some modules have good tests and some might as well not have tests because the tests just tell you that you changed something.
So when you build a sewage farm on your back 40 you should get wealthier (while your neighbors thank you because their land tax went down), but if someone snaps a photo of your area that goes viral on {THE PLATFORM DU JOUR} thus making your county more popular and driving up a bidding war for postage stamp sized lots of land (leading to the land being valued at a higher rate than it was a year before) you suddenly have a massive tax bill because "we noticed you are living in a popular county" and the benefits of living in a popular place should be taxed away? Or do we need some kind of a standard for "more valuable" that deals only with tangible things? And if so, which tangibles?
> Why is it using an NIH format instead of using XML or INI or something?
The original suggestion was LISP-like or X.11 configuration file syntax (https://www.w3.org/Style/CSS20/history.html) - XML was still too new (but look at https://www.w3.org/wiki/Xsl-fo if you want to see what the W3C came up with for "styling, but in XML format for XML documents"). My guess is that the declarative shape imitates SGML with a C syntax to make it easier to understand.
> It's too global. This is good for consistent styling but bad for modularity.
Yeah, that was an explicit design choice - one that we're now asking for (and getting) more control over as the web continues to expand, but it's not like it wasn't considered, it was considered and rejected for MVP as it were.
> Pseudo-classes are ugly and weird and were a way-too-late NIH thing.
Depends ... are you using `display: table` or are you literally using HTML instead of CSS? If you are doing the former, you know CSS. If you're doing the latter, then you haven't demonstrated that you know CSS and we'll have to talk to figure out if you know it and are avoiding it or if you just don't know it.
This is the premise of The Napoleon of Notting Hill by G. K. Chesterton. In 1984 (100 years after the writing of the book), the King of England is now selected by lottery. Much wildness ensues.
> After 6 months I let them go, the improvement was far too slow.
The bit that's missing from this story is the "why" the improvement was far too slow. Was it primarily a failure to hire the right people, a failure to teach them what you wanted them to learn, a failure to understand what you needed to teach, or a deliberate lie on the part of all three of them to steal from you?
Unfortunately, "tests" don't do it, they have to be "good tests". I know, because I work on a codebase that has a lot of tests and some modules have good tests and some might as well not have tests because the tests just tell you that you changed something.
reply