Скажу сразу - очень даже реально. Я проработал 10 лет инженером-конструктором, упёрся в потолок карьеры и зарплаты - и переучился. Фирмы постоянно в поиске программистов, рынок реально голоден (да, до сих пор). Джуниоров ищут меньше, но большие фирмы часто готовы взять начинающего в расчёте на перспективу. Для них иногда проще вырастить, чем найти готового.
Вероятно, вас будут убеждать люди из вашей среды, что ничего не получится, что это всё сказки и инфоцыгане. И вообще, лучше синица в руках, чем журавль в небе. Но нет, не сказки. А с другой стороны в среде IT, где некоторые, особенно старички, которые приходили в профессию давно, по призванию, а не за деньгами, получали высшее по профилю и вообще поели... пуд соли на этом пути, могут быть не очень вам рады, говорить, что "понаехали тут, айтишка не резиновая, права купили, а ездить не купили" и всё в таком роде. Справедливости ради, таких людей я почти и не встречал. Так что это вас смущать не должно, и по опыту своему и своих знакомых могу сказать, что такая смена карьеры реально стоит того (в данный исторический период, который в обозримой перспективе не закончится). В-общем, я ни о чём не жалею. И всё же есть некоторые вещи, которые стоит обдумать заранее.
Если расписать по пунктам, то у меня есть такие соображения:
1) Часто пишут про призвание - это, мне кажется, скорее правда. Если "душа не лежит", то энтузиазма может не хватить. Знаю людей, которые начали учиться и через короткое время поняли, что "не моё". Либо нужно настолько бескорыстно любить деньги, чтобы вам было вообще всё равно, что делать за них, но я таких людей не встречал. В любом случае попытка - не пытка, но я бы посоветовал не вваливать много денег в обучение на начальном этапе, достаточно будет бесплатных вариантов. Сначала убедитесь, что это "ваше". Желательно вообще "подсесть" на программирование, сделать это своим хобби. В день по полчаса, без сидения по ночам - можно даже не надеяться, к сожалению. Нужно, чтобы пёрло.
2) Обучение занимает гораздо больше времени, чем рассчитываешь изначально. Семья и ипотека играют против вас в плане наличия сил и времени, но за вас в плане мотивации. Если есть возможность выйти как можно быстрее стажёром и некоторое время поработать бесплатно за счёт накоплений, то это может сэкономить вам несколько лет, потому что на работе рост будет идти в разы быстрее. У меня такой возможности не было, поэтому учился я очень долго (несколько лет, не месяцев). Думаю, здесь важнее постоянный вектор развития, поступательность, а не скорость. Но если вы ещё и умеете в скорость, то классно.
3) Для устройства на работу, возможно, придётся на некоторое время просесть в доходах (при удачном стечении обстоятельств просто не вырасти), потому что на мидла, конечно, сразу никто не возьмёт. Если вам предлагают достаточные для выживания деньги - нужно соглашаться. Это не продлится долго, ваша "стоимость" растёт с каждым месяцем опыта. Рост в IT идёт быстро.
4) Программист, хоть и зарабатывает в текущей ситуации сильно выше среднего, всё-таки остаётся наёмным работником, со всеми плюсами и минусами. Для меня в этом больше плюсов, я люблю "работать на дядю". Бизнес занимается дядей, а не мной, я же спокойно иду в отпуск.
5) Нужно выбрать отрасль по душе. В программировании их много. Как выбрать - пробовать. На эту тему у меня есть относительно подробная статья "Хочу работать программистом. Какие существуют направления и какое из них выбрать?"
6) Сначала должна идти практика. Теория важна и нужна, но её можно изучать в процессе, уже работая. Программирование - это навык, как игра на музыкальном инструменте. Поэтому, чтобы научиться программировать, нужно программировать, это банальная, но правда. Изучать алгоритмы или устройство операционных систем, не умея написать самой простой работающей программы - странно. На работе вам подскажут, что нужно будет потом подтянуть, да вы и сами поймёте в процессе.
7) Есть много хороших курсов, но ваша задача получить от них знания и навыки. Потому что при устройстве на работу сертификаты не нужны. Никакие и никому. А нужны навыки и, как дополнительное их подтверждение, хороший профиль на github и реализованные проекты. Учебные, а лучше свои, хотя бы любительские, но без них устроиться будет сложно.
8) На начальном этапе может получиться проскочить без английского, но вообще владеть им - обязательно. Иначе тоже быстро "упрётесь в потолок".
На этом у меня всё. Буду рад вопросам.