Software engineering research is a train wreck
Software engineering can only exist with an incredible amount of discipline.<p>We routinely start new implementations in excel and perform formal normalization checks over models before writing any code.<p>You can get away without having a strong type system as long as your tables and relations are clean. This stuff is so powerful.<p>Figuring out how to funnel your domain instances into a SQL db and writing all your complex logic in terms of basic queries is how you can build an ecosystem in which determinism and formal proofs of correctness are possible.<p>For me, software engineering is about correctness for the business end. There is certainly still a layer of craftsmanship below the engineering realm which enables all the magic. This is where things like performance and reliability live. Interacting with the outside world is an icky thing, and the specific implementation always depends on the use case.