Учитесь пользоваться поиском. Если у вас есть вопрос, поверьте, существовало множество случаев, когда у людей возникал тот же вопрос, притом некоторые удосужились задать его где-нибудь в интернете. Если вы нашли такой вопрос, ответ на который не выдает поисковик - вероятно вы стали мастером, поздравляю, вам нечего делать на этом форуме (в разделе "для новичков").
Английский язык. Без него никак. Реально, по-любому, стопудово никак. Вся документация - на английском. Решение серьезных вопросов - на английском. Даже запрос для поисковика нельзя сформулировать без знания английского. Нахождение документации на русском - временная мера, английский придется изучить, лучше заняться этим раньше.
Паттерны. Антипаттерны. Скорее всего паттерны поведают мало, в первое время, но уделите им время, книжка банды четырех - тонкая (немного букв), заложите ее в сознание - она даст о себе знать, когда придет время. Во многих антипаттернах, вероятнее всего, вы узнаете себя, не пугайтесь - процесс нормальный, все проходят через это, не поняв ошибки трудно ее устранить.
База. Пример: Ежели вы настропалились заниматься Image Processing'ом, то вам нужно разбираться в таких вещах как: - вычислительная математика: основные понятия, численное дифференцирование, интегрирование; - хранение изображений, видеоряда в контексте данной операционной системы. - etc. Как бы скучно это ни было, но все премудрости изучить придется. Существенно помочь могут вузы.
Решимость. Хороший программист всегда востребован. Если вы не востребованы - значит вы недостаточно хороший программист. Улучшайте навыки - не поддавайтесь синдрому непризнанного гения.
Я все знаю. Нет. Вы ничего не знаете. Автор испытывал подобное ощущение, по крайней мере, трижды в жизни (благодарю умных людей, которые выводили из этого состояния). Вы никогда не будете знать все, даже такое подмножество, как конкретный язык программирования. Всегда найдутся темные углы, чаще всего эти "углы" окажутся активно используемыми. Скорее всего вы что-то упустили. Языки меняются, то что вчера было стандартом - сегодня стало ошибкой.
Образование. Не надейтесь, что кто-то вас обучит (по крайней мере в нашей стране - РФ). Считайте, что все, что вам необходимо узнать - ваша задача. Такой, и только такой подход приведет вас к успеху.
Как начать обучение. Действительно сложный вопрос. Нет, я знаю рецепт, но дело в том, что таких рецептов - множество. Сложность заключается в том, что многие программисты, пройдя свой путь, начинают предписывать их как единственно правильные, некоторые только рекомендуют, но, в силу высоты их авторитета перед новичками, это равносильно предписыванию. Тут как на выборах - голосуй или проиграешь. Разница с реальными выборами в том, что от твоего критического отношения действительно зависит все. Если нетерпится с чего то начать - начните с insidecpp.ru (разделы арт, паттерны, антипаттерны, заметки заслуживают внимания. Замечу, что сайт не мой, даже автора не знаю лично) - автор слишком категоричен, по моему мнению, но для новичка такая крайность - самое оно (снова ИМО).