Question: I want to get into C++ team at work. Their job is to write CGIs in C++ (mainly but not limited to). I know basic C++. Reading the list at [C++ book guide](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) question on SO, I've got three books from a friend (I actually had the first one).

1. The C++ Programming Language - Bjarne Stroustrup - for reference
2. C++ Templates The Complete Guide - David Vandevoorde / Nicolai M. Josuttis
3. Modern C++ Design - Andrei Alexandrescu

---

1. I would like to know if there are any projects or ideas you can tell me that I can implement so that I get better at it.
2. The setup I need. I have a Macbook and a personal crappy Ubuntu dev server machine. I can bootcamp to install any OS if need be.
3. Can you please also give me some suggestions on how to begin writing CGI (or any tutorial)?

Answer: 
The best way to become better at C++ is... writing C++ code. Start with a simple raytracer without any external dependencies (just write output to a PPM file).

1. I think this is an interesting enough problem and will let you get started with the language core,
2. The lack of dependencies will reduce distractions with potentially complex third-party library idioms which you can't appreciate yet and annoying things like libraries and linking. Plus, you will have less C++ quirks blow up in your face.

Build on that after you have more experience. Go back, refactor your code, add more complex features, third-party libraries (e.g. write a JPEG output, start using bits of boost, like smart pointers).

Rinse, repeat.
> 
> answer to the title of the question :) assuming C++03
> 
> 
> 

From Bjarnes website:

[1. New learning](http://www.research.att.com/~bs/new_learning.pdf)

[2. Principles and Practice Using C++](http://www2.research.att.com/~bs/programming.html) (Should give ideas about short programs/projects)

[3. Learning and teaching C++](http://www2.research.att.com/~bs/C++.html)

And yes, have a good reviewer by your side if you have to learn good C++. Keep a copy of the relevant standard handy (open-std.org)