No idea how this should take form, though, and if it’s even realistic. But it seems like due to AI, formal specs and all kinds of “old school” techniques are having a renaissance while we figure out how to distribute load between people and AI.
No idea how this should take form, though, and if it’s even realistic. But it seems like due to AI, formal specs and all kinds of “old school” techniques are having a renaissance while we figure out how to distribute load between people and AI.
There are three legs to the stool: specification, implementation, and verification. Implementation and verification both take low-level knowledge and sophisticated knowledge of how things break.
This is the same with compilers. Most of the time a programmer needs to know only the high-level language that is used for writing the program. Nevertheless, when there is a subtle bug or just the desired performance cannot be reached, a programmer who also understands the machine language of the processor has a great advantage by being able to solve the bug or the performance problem, which without such knowledge would be solved in much more time or never.
I am sure programmers cherish every case when they can do micro optimization but in the retrospect the high level cuts is what made the system fit the perf or memory budget.
2) unfortunately, LLM's, by their very nature (not having a model of what they do, are prone to introducing subtle bugs, i.e. it is like programming in high-level language whose compiler likes to wing it
If only you knew how the civil engineering sausage was made.
The amount of yolo'ing stuff based on vibes goes up when testing is expensive/impractical. They just paper over it all with disclaimers of the sort that would get laughed at for being non-starters in the software industry.
Which creates incentives I'm not wholly comfortable with, but the fact is that I'm more productive now alone, than I used to be in a team.
Prior to LLMs the idea was to involve juniors in the engineering process to give them an opportunity to learn rather than necessarily to improve the team's immediate productivity. Some companies famously (and consciously) refused to hire juniors to avoid the performance hit even prior to genAI (eg Netflix).
Involving LLMs in our engineering processes has very suspect implications for both productivity and quality of our output, since unlike juniors the LLMs don't even learn.