Also a request for any resources of scientists trying to get their head around how to write good software, we're all pretty much people who once read a C++ tutorial and just went with it.
That is an interesting question I had not thought of. I genuinely cannot think of a single resource that teaches good software engineering practices, like how to structure code in a robust and maintainable way. In fact, many books that I read usually include examples using terrible coding practices. And then the ones dedicated to software engineering are usually too out of date or academic (GoF, Fowler books).
I would say read up on inversion of control and dependency injection. And then a book on unit testing. Writing your APIs to use dependency injection and making them easily testable (by testing output not internal state) gets you most of the way there.
That is an interesting question I had not thought of. I genuinely cannot think of a single resource that teaches good software engineering practices, like how to structure code in a robust and maintainable way. In fact, many books that I read usually include examples using terrible coding practices. And then the ones dedicated to software engineering are usually too out of date or academic (GoF, Fowler books).
I would say read up on inversion of control and dependency injection. And then a book on unit testing. Writing your APIs to use dependency injection and making them easily testable (by testing output not internal state) gets you most of the way there.