Hot answers tagged

71

Jeremy Gibbons is writing the book. Until it's finished, you can read his blog, Patterns in Functional Programming. He recommends reading his posts from oldest to newest. Browse his publications as well. He covers Gang of Four patterns in Design Patterns as Higher-Order Datatype-Generic Programs and describes the patterns of programming with recursive ...


45

There is no "correct" order to reading these books. They each focus on different aspects of software engineering. Clean Code - focuses on coding in the small. How to write classes and functions. Code Complete - focuses on the processes of software engineering. Pragmatic Programmer - focuses on working within a team producing software.


25

Here's a blog post by the author, where he says I thought that the basic organization of my dissertation was pretty solid, so mostly I was able to focus on adding and adjusting things to make it work better as a book. For example, I no longer had the constraint from my dissertation of having to focus on original work, so I was free to add data structures ...


23

Well, I don't know if this book will help you, but when I worked myself through that book about 20 years ago, it definitely improved my programming skills (independently of any programming language). And I guess especially a Java programmer will get some new insights he/she won't get by sticking only to Java. Joel Spolsky 2005 wrote a nice article about ...


16

Six months ago I was also looking for books to get up to speed with Java. I was also coming from a background in C++ (as well as Perl, VBA, and JavaScript) and ended up purchasing the following: Effective Java (2nd Edition) by Joshua Bloch Java Concurrency in Practice by Brian Goetz Java The Complete Reference by Herbert Schildt Core Java, Volume I--...


13

A good talk (~45 min) on this topic by Stuart Sierra: http://www.infoq.com/presentations/Clojure-Design-Patterns Not necessarily binding and authoritative, but I recognized a number of his examples from my own experience using FP for data analysis. Examples written in Clojure, but likely applicable to any FP language. The names he gives to the patterns ...


13

I did a bit of this when I started with Java, years ago. My approach was to read the VM spec, and to look at the output of javap -c, which displays the disassembled bytecode of a class. I also tried creating java classes with particular bytecode, using a java bytecode assembler. There is an assembler called jasmin, if you want to try that. You might also ...


13

I think Structure and Interpretation of Computer Programs is a great book to read. However, there are are a couple of problems with it. The biggest problem in my experience is that, while the book requires absolutely no programming knowledge, and is geared to complete newbies, it is geared to complete newbies who study at MIT. And so, while it does not ...


12

One of the good things to remember is perform exception handling when there is a need. For .NET development platform just follow the MSDN guidelines - Best Practices for Handling Exceptions, as well as check this nice code-project article - Exception Handling Best Practices in .NET However, the following guidelines are mostly true for any development ...


12

Congrats on getting your first job! And you really made good book choices! These books are master pieces for every programmer to read at least once. From my personal experience i would advice to read books interchangeably. It is a fact that you may get tired/bored from one book, and switching to related book will make you re-focus and behind the scene your ...


12

Absolutely! It's actually very helpful to break away from your primary language occasionally because this lets you see programming concepts through a different lens which will allow you to gain new perspectives. What makes any software good, or high quality is never about the syntax or language of choice. It's how that language is applied. Steve McConnell ...


12

In C#, you couldn't ask for a more authoritative source than the Framework Design Guidelines. This is what the authors of the .NET Base Class Library followed when designing the core libraries that come with .NET. It includes comprehensive guidelines on how to work with exceptions. In particular, it says: AVOID swallowing errors by catching non-specific ...


12

However, everyone who read it, read it like 20 years ago from what it seems. Actually, it was the basis of MIT's 6.001 introduction to programming until fairly recently, and still is used for similar courses in other universities even today. Has it been superseded by another influential book I should be aware of? Not really. There are other books that ...


11

It's definitely not a "learn to write Java" book - it's quite useful even for experienced programmers. The level is similar to 'Java Puzzlers', but instead of showing off weird details for their own sake, it teaches stuff that matters for everyday programming - gotchas and best practices (and most importantly why they are best practices). You probably ...


9

C++11 is a pretty big deal- not to mention that many books back in 98 taught C with Classes, rather than C++. I'd look for something newer. We have a question on Stack Overflow which supplies recommendations for books worth possessing. Edit: Of course, there are also many new C++ techniques which simply did not exist previously, especially where templates ...


9

As an owner of the book (though I haven't gotten through much of it) I can point out that it adds a rather large appendix with Haskell translations of his ML code. Aside from that, it looks like he's essentially taken his thesis, reworked it and officially published it, much like you'd see out of a new edition of any programming reference out there. You can ...


7

What you are asking for can only be gained with experience. Right now you are in a tough situation, but it is an opportunity for you to learn. I'll be honest: a software company without an experienced technical leader is in trouble. The problem is when we are designing a new heavy feature or building a critical module that can't tolerate trial and error....


7

Those who write books about frameworks are generally involved in the framework they are writing about, they have access to documentation and pre-release versions of the framework. They aren't random people that know about programming, they likely contacted the development team about writing a book and got the information or were asked by the development team ...


7

I think Effective Java (already mentioned) makes a pretty good start. For more comprehensive references list, my favorite is one at Angelika Langer Links - Java Performance: Books "Java Platform Performance: Strategies and Tactics" by Steve Wilson & Jeff Kesselman The book and related resources are available online at http://java.sun.com/...


7

Since the field of Computer Science is extremely wide, you wouldn't find everything that you are looking for in a single book. However, you could get almost all your fundamentals in order by reading at least one book from the topics below: Computer Architecture (e.g. Computer Architecture: A Quantitative Approach) Operating Systems (e.g. Modern Operating ...


7

My father taught me this trick when I was a child. Just read the book from any place without any order (or in any order, english is not my native language). Any way you like it. Skip hard parts, skip boring parts. Just read. First it will look quite a waste of time. Suddenly you'll realize that you understand something. And that parts that you've ...


7

Absolutely - an interpreter is just a "one line at a time" compiler. It performs much the same task, that of taking some form of human-understandable source code and turning it into something a computer processor can understand. A compiler will do this for entire source file(s), whereas an interpreter will do this on an as-read basis. You will need to ...


6

If you're genuinely interested in learning the design patterns look no further than Haskell. If you take the time to learn the language the hard way you'll run into and get cozy with most of the foundational patterns -- they're baked into the language. Don't skip over monads. There are a bunch of long-winded explanations out there and it takes some doing ...


6

It's fine to use it. You won't get the most up-to-the-minute information, but the large majority of C++ is the same language that it was in 1998. If you're just learning the basics, go right ahead. Just keep in mind that there have been some refinements, and look for resources that explain the differences so that you're aware of them. Here are a few of ...


6

From Stroustrup's own homepage (right at the top): The "special edition" is the hardcover version of the 3rd edition. It differs from the early printings of the 3rd edition by about 1,000 corrections and clarifications, by two new appendices (just over 100 pages; also available online, see below), and by an improved index. The only difference ...


5

I'm with Simon but I feel that it is important to add: Lean on your team a bit. I'm willing to bet that there's at least 6-10 years worth of experience in the group. They say that good leaders surround themselves with smarter people than they are. This is one of the reasons why. So, for your example, you could approach it like this: Investigate potential ...


Only top voted, non community-wiki answers of a minimum length are eligible