Hacker News new | past | comments | ask | show | jobs | submit login

I really like this list, but believe it's wrongly titled. I'm a nuclear engineer, who pretty much just writes modelling software all day. The software architecture stuff is something I've never been taught and always felt would be immensely valuable to learn. Some good resources for that on this list.

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.




> 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.

I guess this is hard to find, because theres no generic way that will work for all programming languages and contexts.

But i will tell you where i often find them: directly in source code.

People that are really good at this, dont have time to teach, and if they teach, its hard to get to the point to teach the 'tricks' implemented directly in source code.

Also, im my experience, besides the generic algorithms and protocols that you can implement in any language, the rest is very much context dependent.

So in the context of C++, that you have mentioned, there are for instance, at least, two great C++ shops for great source code, experience and tricks that i particularly like: Google and Microsoft C++ stuff.

The problem with this approach, is that you have to be like a 'source code vulture', opening up the engines you are interested in, and willing to expend some time reading and understanding what the source code do.

With this you can match and map with the more abstract knowledge in the field.

I've learned A LOT reading others people source code, specially the 'canonical' pieces of software out there.

Something no book wandering over abstract ideas can taught you about (the first exception to this that comes to mind is Tanenbaum books about OS, but he made Minix as a source code realization of the ideas in the book, so...)


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 basically the mission statement of Software Carpentry (https://software-carpentry.org/). They have a _ton_ of great material for those in scientific computing wanting to improve their software engineering skills.


I've looked into software carpentry, I'm glad it's there but learning how to commit and 'intro to <python/R/unix>' is about five years behind what I need. Most scientists can read intro tutorials themselves. I'll keep looking around on their website though, thanks for sharing.


Have you given The Pragmatic Programmer a try? It's a great resource that draws parallels to practical examples on what to do and what not to do.

https://pragprog.com/book/tpp20/the-pragmatic-programmer-20t...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: