Но смею вас уверить, что если жизнь заненсет меня в ИТ компанию...
Это вряд ли. Особенно если процесс трудоустройства Вы начнёте с изложения своей экономической программы.
Я готовлюсь к устройству на работу через некоторое время. По каким критериям обычно отбирают программистов? Мне хотя бы начать с младшего программиста.
Да критерии, в основном, те же, что и везде: знания, опыт и коммуникативные качества.
Ваша способность/неспособность решать олимпиадные задачи по программированию и Ваш IQ потенциального работодателя, скорее всего, заинтересуют в минимальной степени. А вот знание распространённых языков программирования и соответствующих библиотек -- в существенно большей. Поэтому с точки зрения перспектив трудоустройства,
систематическое изучение современных программных платформ (Java, C++, .Net) принесёт Вам гораздо больше пользы, чем решение учебных задач на скорость.
Настоятельно не рекомендую Вам упоминать о сложностях на прошлых работах (плохой начальник, не понявший Вас коллектив и т. п.); Вы меняете работу просто потому, что хотите сконцентрироваться на разработке ПО.
Ну и о Ваших сомнениях в собственных умственных способностях тоже лучше не надо... :)
Кроме этого, имейте в виду, что в случае успешного трудоустройства, возможности рефлексировать по полгода над программой в 200 строк у Вас не будет. В практической деятельности интересует не оптимальное решение, найденное за неограниченное время, а приемлемое решение, полученное в приемлемые сроки. Другими словами, в какой-то момент придется себя заставить перестать думать и начать стучать по кнопкам.