I’m looking for project suggestions that would force me to “get my hands dirty” with advanced C++ features. I’m talking about projects that would utilize the full power of the language (STL or even boost (didn’t use it much yet)).
Why? Because I want to learn, I want to find new challenges. At work, things start to be boring, really. I was used to constantly encountering new things, new ideas and features. This is most of the time not the case of legacy company code, as you can imagine. And still, looking at some questions and answers here that delve into the depths of templates, shared pointers and all that stuff I happen to find myself lost, not knowing the answer or even worse – not even understanding what’s going on.
That’s why I’m looking for something I could code myself, using preferably only C++ (+ boost perhaps) – a command line utility, no graphics please. And I really do not want to join any open source community. Looking at others’ code is helpful, I know. But that’s what I do at work a lot so… no thanks. The project can be anything, meaningful or meaningless, a useful utility or just something made up that has no real usage. The only requirement is, that it would force me to really test my C++ skills. Or at least it should be very difficult or even impossible to code with basic knowledge of C++ – I’m the kind of person who is never satisfied with code that just works, so I believe this will force me to learn. But bear in mind that I’m a working man and my time is limited, so answers like “code your own OS” really won’t help much.
And, no, I’m not joking. Not at all. I started to learn C++ about 15 years ago and I’m still learning new stuff on a regular base.
Have a look at The Definitive C++ Book Guide and List and make your pick.
I’d recommend Modern C++ Design by Andrei Alexandrescu and C++ Templates The Complete Guide by Vandevoorde & Josuttis. These two alone are enough mind-blowing input to keep one programmer getting new ideas for months, if not years. (Note that reading them in this order has the advantage that Andrei’s book is thinner and makes you want to read the other one just to fully grok what he writes. Reading them in reverse order has the advantage that you won’t get lost as often in Andrei’s book. Whatever you prefer.)