This I agree with to the extent that my own ignorance and lack of a cs education is aggravating to me personally, and causes me to have foundation holes in my knowledge base/hack this to make it work/instincts. Like I cannot, yet, evaluate memory usage equitably, take apart assembly or compilers, although C today isn’t that different than ansi C from 91, and I have questions about foundational aspects of languages, how the dom works, or other basic things that seem foolish to the experienced. That said, the hallmarks of bad code are (1) it doesnt work, (2) its abstractions specifically work against the nature of the data as needed used and transformed by the business.
2 is the clarion of cs degree stake holders. Just this week, I had multiple sit downs with degree holders who said the approaches I forwarded made no sense, were absurd, and they couldn’t even look at the site example (just a firebase app I transformed). When we looked, and they tested, and they saw. All of a sudden, I didn’t hear, “Do you know where my degree is from… Etc.” I heard, “How did you do that.” “How is it that fast.” Then there was an hour on spacing code correctly, and some other semantic stuff, which I agree with… but the bottom line for me has always been that the stake-holders are sort of uncompromising arrogant a-holes, who tend to think of actual use cases as plebeian.
My general take — and this is heresy, I know — is that there should be a very limited separation of concerns. Data should match representation in such a way that the change in representation and composite of all representation states and their use cases (transformation of data) should form a feed-back loop with data structure such that the data can be read directly to build view and imply business logic, this means data is graph-like, or the database must be a graph database, but that’s just what makes sense to me. Say that out-loud, at a dev meeting and wow… watch the “this guy is nuts or what is he saying” looks.
Even without a graph database level of synthesis, a dev must know the business needs to build a data system that is in anyway forward looking. Like its just a must. It runs down to the level of design. I remember a designer giving me this happy, shiny it looked like a yogurt add splash page, for a web promo. I pushed back what he described as a “pharmaceutical ad, that only a doctor would read.” I proceeded with, “83% of customers of this product are in the medical field.”
So, what does all this mean? No idea. My take is that the industry is top to bottom broken for the company that cannot lay out $1–2 million each project every 2–3 years, and that is just to stay flat. That’s a poor position for most businesses to be in. Very poor.