Can anyone recommend any good material that seeks to provide a real world perspective on programming theories? I'm speaking from my perspective as a long time professional software engineer slash ex-cs student. When I say real world, I mean stuff like "Why should I use interfaces? Doesn't that go against DRY principles? It just seems like extra needless meta code." (which was the implication of another question that came up today.) It seems that the professor of this student's class hadn't given the obvious business reason for using them as "You use this so the main part of your application isn't dependent upon a specific implementation one or more of your components - for instance, a data store which may be replaced or upgraded without affecting the rest of your application or a plugin to an external device which may be replaced when a better one comes along."
I've noticed a tendency for students to reach key points of their CS courses and start asking questions on various Q&A sites about why they should use a certain paradigm, they understand the what and the how, but they're clueless as to why it's actually useful and go through the rest of their course thinking "okay, so what?" All too often classes are very academic and don't have any real world context. Having been there myself, I wish I'd had a resource like StackOverflow when I was at school.
I'm hoping that this question will provide students with a list of useful reading material that will help provide real world context to various programming paradigms and patterns they're learning in class [or otherwise] and helps them to grasp when and why certain patterns should be looked to in real world situations.
http://www.cs.bell-labs.com/cm/cs/pearls/
The Pragmatic Programmers are, well, pragmatic, but they are well versed in CS theory and they know when and how to apply it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With