Какую область изучать?
Для начала посмотри что тебе интересней: работа в команде или в одиночку. От этого будет зависеть размер проектов. На уровне железа (программирование микроконтроллеров и т.п.) очень много проектов, которыми занимается один человек, начинаешь подниматься выше и размер команды начинает расти. Программирование - это всегда про общение с другими людьми, про создание общего, понятного всем образа разрабатываемой системы. Если нравится общаться с людьми, далекими от IT, иди во front-end. Если хочешь общаться с админами разных мастей, иди в back-end. По мне front-end или desktop скучнее серверного back-end, так как в них очень много однообразия из-за работы с пользователем. Но это мое субъективное мнение, тебе нужно самому попробовать и составить свое собственное мнение.
Ответы на твои вопросы:
1. Развивать лобные доли мозга, они отвечают за целеполагание и достижение целей. Медитация говорят очень помогает в этом.
2. Принять простой принцип: сомневаться и размышлять до того как начал действовать, начав действовать не сомневаться.
3. Больше общаться с другими людьми, рассказывать им про свои "грабли".
4. Больше пробовать! Участвуй в открытых проектах, например. Можно кучу всего перепробовать.
1) Что бы не терять стремление нужно решить вопросы прокрасстинации и замены ответственностей.
2) Как не сомневаться ?, - есть понятие карьерного плато. В любом случае сомневаться и перепроверять нужно. Технологии развиваются быстрыми темпами - проводить анализ существующих и мигрировать по потребности приходиться довольно часто.
3) Как не наступать на грабли ? Ловить себя на месте когда вопрос решается "методом втыка", а мозги начинают зацикливаться на чем-то одном и не выходят "за рамки".
4) Попробывать разного по чуть-чуть... лишним не будет да и места где можно реализоваться сами найдуться.
Начать можно с банального Codecademy.
От себя могу посоветовать Play2 и Grails.
Админить линуксы нужно уметь в любом случае.
С++ мне лично не пригодился, максимум это приложения на Qt.
Вот на чистом Си приходится писать довольно много
И под микроконтроллеры и ядерные модули линукса, но и от Gtk я не отмахиваюсь.