I have an open question for software engineers out there: As someone that has never studied CS but has written basic code most of my life (accelerated now with AI), where is the best place to learn software engineering fundamentals?
I don't think there is such a thing as "software engineering fundamentals", as the fundamentals differ based on the type of software you want to make. Do you want to make websites, or work on embedded systems? Do you need to squeeze every OK ounce of performance out of the machine running your code, or is developer velocity more important to you? Will your code run on a single machine, or does it need to be networked…
One prime example, single source of truth for data/concepts. To be violated only when performance is meaningfully improved (denormalized databases). But when you do so, you should definitely recognize you're opening up out of sync issues for that performance gain.
Though for the majority of code, there is no performance benefit to adding multiple sources of truth. Yet it's the most common error I see re: quality.
The sad thing is that software engineering fundamentals and best practices never became widespread or widely taught in school prior to LLMs