C++ is complicated. Like quantum theory; if you think you understand C++, you don't understand C++. There's always some small feature or quirk that you haven't explored yet just waiting to jump out and slap your code with a hard-to-remove bug.
To help keep things on an even footing, you're going to need backup. These are the books, blogs and websites that I use regularly to whip C++ into submission.
It's not an exclusive list, and any suggestions are welcome.
Books
The Pragmatic Programmer, Andrew Hunt and David Thomas (Amazon UK)
A step-by-step guide to how to be a better programmer, whatever language you use. Experienced programmers may find the first few chapters a bit trite, but it quickly starts producing genuinely useful thoughts that you can start to use in everyday work.
In particular the chapter on estimating highlights a skill that most programmers tend to take for granted. Do you think your estimates are accurate? They're probably not as good as you think, and you can prove to yourself they're not if you check back in the project plan. This book will explain why this basic skill is so difficult to get right, and provide exercises to run through yourself.
Exceptional C++, Herb Sutter (Amazon UK)
Effective C++, Scott Meyers (Amazon UK)
These two books are both split into bite-sized chunks that make it perfect to digest during the morning commute, the odd long compilation, or even your pre-lunch "data dump". They overlap in many areas, but the issues they discuss can be so complicated that reading them twice can only help anyway.
Both address not only important gotchas of C++ such as argument-dependant name lookup, but also good class design and easy-to-avoid code smells.
Sutter presents each mini-chapter as a puzzle, so you can test yourself as you read. Most of the puzzles are extended from the "Guru of the Week" articles Sutter used to write, which can be read online here, but so much has been added the book is still a worthwhile purchase.
I can't recommend them enough. If you haven't read at least one of these books, you're probably not as good a C++ programmer as you could be.
C++ Coding Standards, Herb Sutter and Andrei Alexandrescu (Amazon UK)
Like an index to the previous books, Coding Standards is the first book I pick up when I encounter a problem. Even more bite-sized than Effective or Exceptional, most items are 1 page long. They start with a rule or guideline, justify it briefly, then provide references for further reading.
Rather than cover coding standards like bracket placement, it makes more general points like, "Prefer writing non-member non-friend functions" and, "Make base class destructors public and virtual, or protected and nonvirtual." Each rule is well-written and concise without being obtuse.
Websites
Stack Overflow
The one-stop-QnA-shop for all programming questions. It's run by Jeff Atwood of Coding Horror fame, and is a well-designed site with a fantastic community. More often than not I'm googling a problem and a stack overflow solution will come up in the first page of results. I am normally confident that this will either be the correct solution or at least get me closer to the correct solution.
The development blog is also a good read for those interested in the business of designing and running a website like this. Many of the decisions they took were influenced by game design, and specifically Microsoft's Achievements system.
My SO flair is below. I need to answer more questions to get a bit more rep:
Coding Horror
An interesting and frequently-updated blog covering mainly platform-agnostic programming tips and techniques. I don't always agree with his position, especially on things like the SOLID Principals, but it's always interesting.
Scott Hanselman
Scott is a Microsoft employee who blogs mainly on .NET and web development, but his more geeky gadget reviews and his insightful Hanselminutes podcast are also great.
Daily WTF
User-submitted stories of programming and IT woe. Most have questionable educational value but are always entertaining.
Sutter's Mill
By Herb Sutter, C++ legend and concurrency guru. Infrequently updated, but when they come they're usually brilliant.
C++ on Reddit
The best source of C++ news on the Internet.
Object Mentor blog
Home to several software engineering legends, such as Uncle Bob Martin and Michael Feathers. Posts are sporadic and sometimes get slightly evangelical, but consider it the salt to Coding Horror's pepper.
Monday, 4 January 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment