Сначала о самых главных навыках ЛЮБОГО программиста:
1. Непрерывно улучшать чтение\письмо по-английски!
2. Уметь искать ответы в google.com или др. поисковую технологию
3. Всегда, всегда задаваться вопросом: "А может кто-то уже решил мою проблему?" и пользоваться навыком из п.2.
По сути вопроса:
1. Если опыта программирования нет, то я бы рекомендовал прочитать "C++ за 21 день" от Дж. Либерти
2. Если опыт есть, то читать книгу Лафоре про Объектно ориентированное программирование на C++
3. На этой стадии опыт написания кода уже есть, поэтому Стив Макконел с его Совершенным кодом
4. После этого читаются правила от Скотта Майерса, но через призму скептицизма. На этом этапе уже должен быть достаточно опыта чтобы понять что вам подходит, а что нет
5. Чтение Рефакторинга от Фаулера
6. Только на этоп этапе читать Страуструпа. Читать вдумчиво. Читать так, чтобы каждое его слово и каждая его мысль была понята, прочувтвована
Практикуясь той или иной фиче языка, идиоме рекомендую на реализациях алгоритмов сортировок, структур данных и всем что связано с алгоритмами.
Да, и читать надо по-умному! Для программиста чтение проф.литературы означает "Непрерывно вбивать код" и пытаться применить хотя бы в каком-нибудь 'hello world'-е изучаемой технологии или языке или идиоме. Только постоянная долбежка позволяет вбить в память пальцев нужные и правильные вещи на уровне инстинктов, которые экономят время при создании больших программных проектов.
UPD:
Один из нюансов чтения проф.литературы заключается в том, что почти никогда нет возможности прочитать с первого раза! Будьте терпеливы, т.к. наверняка Вам придется перечитывать как минимум абзац, не редкостью будет перечитывание 2-3 страниц, а иногда и целой главы с начала. Процесс проф.литературы - итеративный. С первого раза формируется "общее" представление с "дырыми" по прочитанному материалу. Повторное чтение закрывает часть этих "дыр". А паралельная практика при этом дает еще ясное понимание того как надо и как не надо и где именно у Вас не получается.