Советы тем, кто реально хочет стать программистом6
1. Перед тем, как отвалить крупную сумму за курсы - попробуйте почитать книги, это сильно дешевле. Например, по Java есть замечательная "Философия Java", хоть и немного устаревшая. Ключевые концепции языка в ней изложены просто великолепно.
2. Не верьте тем, кто обещает быстрый прогресс и гарантированное трудоустройство - это верный признак инфоцыган (за очень редкими исключениями). В той же Java сейчас требуется гигантский объем информации для успешного трудоустройства - ну как минимум кроме синтаксиса еще Spring, базы данных, Maven/Gradle, автотесты. За три месяца это выучить невозможно. За год - вполне.
3. Избегайте курсов для "умственно отсталых". Тут нужно понимать: можно немного сгладить кривую сложности в начале - подбирать всякие метафоры с паровозиками при объяснении логических операторов, делать красиво анимированные схемы etc. Это отличное завлекалово, когда после вывода трех строк на экран и примитивной программки типа "четное ли число или нет", кажется, что это просто и вообще непонятно, из-за чего сыр-бор. Но потом вам попадется какой-нибудь принцип подстановки Лисков, который вообще-то одна из базовых концепций ООП - и его уже с помощью метафор так просто не объяснить. Или вот вы читаете про особенности индексации таблиц в БД, например, и не понимаете ни слова. Некоторые концепции сложные сами по себе. Это как выпустить учебник "Квантовая механика для дошкольников" (нет, я не уравниваю в сложности квантовую механику и программирование).
4. Вообще старайтесь не забывать про теорию. Немного алгоритмов (хотя бы простейшие сортировки типа пузырьковой и вставкой, бинарный поиск, оценка сложности). Немного структур данных - массивы, связанные списки, бинарные деревья, мапы. Немного спецификаций типа REST.
5. Старайтесь учиться сами столько, сколько возможно. Гуглите книги, статьи на Хабре, видео в YouTube, документацию. Вообще скилл искать документацию самому очень выручает.
6. Обязательно выкроите время на git. Просто поверьте - он будет нужен.
7. Если не знаете английский - учите. В контексте IT та информация, что есть в рунете - это жалкий, недостойный упоминания огрызок по сравнению с тем, что можно найти на английском.
8. Проявляйте инициативу, не ждите, будьте готовы работать за копейки - главное опыт. Свою первую работу я нашел просто - вбил в поисковике "Java Хабаровск работа", открыл первый попавшийся сайт (галера для госа), скопировал телефон, написал в WhatsApp и напросился на собес. Думаете, меня взяли сразу? Нет, меня попросили написать реализацию стека. Я попробовал родить код на доске на массивах, и спустя полчаса меня милостиво отпустили - доучиваться. В итоге я к ним попал через три месяца. Зп на испытательном - 25к, 35к после испытательного.
9. Если уверены в своих силах и чувствуете, что готовы искать работу - старайтесь абсолютно всеми возможными способами попасть на стажировку, такую, где вас условно кинут на амбразуры, где ваш первый pull-request разнесут в такие щепки, что вы потом будете четыре дня плакать на больничном. Именно в таких местах качается реальный скилл программирования. Рост в начале идет только при условии разницы в опыте между участниками, если все на одной ступени - это стагнация.
10. Многие новички не могут родить pet проект, это нормально. Просите тестовое. Поскольку до мидла вам еще как до луны, цель вашего тестового - просто проверка на то, как вы будете писать код (спагетти, названия переменных транслитом, методы по 600 строк и другие признаки идиота сразу отпугнут) и знаете ли вы базовые концепции языка (если в языке иммутабельные строки и вы в цикле их конкатенируете - тревожный колокольчик).
11. Самое главное - подумайте, готовы ли вы этим заниматься всю жизнь даже за большие деньги? Готовы ли вы регулярно говорить "я не знаю, покажи мне, как надо"? Готовы ли вы защемить свое ЧСВ и признать, что всегда и в любой момент времени рядом с вами может оказаться кто-то, кто знает больше вас - и вам придется у него учиться, даже если вы principal с 15-летним опытом? Готовы ли вы в свободное время висеть на литкоде по два-три часа в день, чтобы не уходить в крудо/формошлепство? Потому что нет большего вреда для проекта, чем закостенелый дебил, который тащит в работу архитектурные решения, популярные эдак лет 15 назад. Или придурок, который выгружает всю таблицу БД в оперативку, чтобы отсортировать ее там и вытащить одну запись, потому что он так делал раньше и это работало. Или идиот, который считает, что автотесты - это трата времени, мол, есть же тестировщики.
Потому что если не готовы - пожалуйста, не идите в программисты.