The thing is, I think there is a lot of subtlety in most implementations. Those subtleties come from unique requirements outlined by the client/business need/ or existing patterns.
As someone who has implemented a lot of CRUD functionality, I can honestly say there is very little code overlap between any two projects. Sure, the frontend calls the same CRUD endpoints. The backend essentially performs the same DB edits... but there's a lot to be considered before and after this. And no, it has nothing to do with just validation. It's about UX, performance, maintainability, extensibility, etc. All considerations when writing the code. When you're done the CRUD project, it's distinct. I think there's empirical evidence for this in the sense that the most we can abstract CRUD, is through CMSs. I've worked with a lot of clients that have great CMSs but still need to retain developers to support the CRUD ops and everything in between.
Is this the same type of "software engineering" employed as someone writing a custom backend for a electronic stock exchange? Likely not, though that's a whole other discussion.
This is where the real software engineering practice takes place, understanding what the business needs while staying within scope and being able to deliver a solution that's functional and maintainable long term.
I see a world in the not-too-distant future where new apps are built entirely by AI, but there will always be a need for people to translate non-technical business requirements into action items and software decisions. And legacy apps developed entirely by AI? Maybe we'll see it my lifetime but I kind of doubt it.
Both are the diffucult part. Especially since "business requirements" ofent is Agile newspeak for "no spec and fuzzy demands".
Nothing hard about that. Learning how to implement CRUD with validation in <insert framework / stack> is not software engineering.
That’s why it can be easily replaced with bootcamp students and — surely — later with AI. Because if it’s just a translation there’s no need for a human translator.