Как стать программистом с нуля в 2024 году?
Первый вопрос:
Зачем вам это надо?
Главная причина в том, что программисты очень нужны на рынке труда. Хорошие условия труда, высокие зарплаты, лояльное начальство. Все это смотрится очень и очень привлекательно.
Фактически профессия программиста – единственный социальный лифт в наше время. Вам не нужны богатые родители, обширные связи со всякими «нужными людьми», престижное высшее образование и прочие атрибуты успешных людей в наше время. Всё, что вам нужно, это умение создавать компьютерные программы или web-сайты. Вы можете начать программировать, живя в самой далёкой и непрестижной провинции. И добиться фантастических успехов в жизни.
Ориентировочно, в самом плохом случае, ваша карьера может выглядеть так.
Сначала полгода-год самостоятельной учёбы. Потом вы сможете получать деньги за свои знания. И найти такую работу будет реально. Проработав так год, за самую обычную зарплату 400-500$, вы получите опыт, открывающий перед вами все двери в жизни. Сможете получать от 1000 – 1200$ удалённо и\или уехать туда, где вам больше нравится. Даже в другую страну. И жить там ничуть не хуже, чем местные. Эта профессия самый короткий и лёгкий путь.
После того, как вы закончите свою стажировку, вы никогда не будете жить хуже. Даже чисто психологически профессия расслабляет. Вы не будете бояться кризисов, войн, стихийных бедствий и дурного начальства. Потому что в любой момент сможете переехать куда угодно и сменить работу на другую. Вам всегда хватит денег на «булку с маслом» и даже досрочное погашение ипотеки.
По теме:
Кто может стать программистом?
Теперь немного дёгтя. Программистом может стать любой, кто может работать головой. По сути, работа головой так же тяжела, как тяжёлый физический труд. Понадобятся воля и терпение. Если вы готовы решать сложные задачи, «неразрешимые» проблемы более года, вы сможете стать программистом.
Вполне логично, чем лучше знаете компьютер, тем легче будет ваш путь. Вы должны владеть компьютером, как опытный пользователь. Думаю, за полгода можно научиться пользоваться компьютером в достаточной степени. Даже если до этого вы не видели его никогда.
Если же вы испытываете трудности при общении с компьютером, то научитесь сначала пользоваться им уверенно. Есть огромное количество бесплатной литературы, интерактивных курсов, видеоуроков и опытных пользователей вокруг, которые помогут вам.
Остальные знания, типа иностранных языков и даже математики, можно считать малозначительными на начальном этапе.
Три этапа на пути к профессии
1. Пробный период
Дело в том, что на освоение профессии уйдет полгода или даже год учёбы. И вам надо как можно раньше понять, это ваше или нет. Стоит ли вам инвестировать своё время и даже деньги.
На самом деле есть только один способ узнать, сможете вы или нет. «Чтобы начать программировать, надо начать программировать. А чтобы начать программировать, надо начать программировать!».
Многие считают программирование сложным занятием. И это правда. Если бы это было просто, им не платили бы такие большие зарплаты. Но, с другой стороны, есть много книг в свободном доступе. Причём большинство из них качественные. И надо чётко усвоить, что секретов в этой профессии очень немного. Большинство вопросов решаются поиском в интернете. Поэтому несмотря на сложность, программирование – одна из самых доступных профессий.
В этот период необходимо освоить 2-3 технологии настоящего программирования. Но они не должны требовать много времени на освоение. С другой стороны, они должны быть востребованны рынком, чтобы даже те пара недель или месяц, потраченные на них, не пропали даром.
Лично моё мнение, это должны быть:
HTML
Очень простой язык программирования. Точнее, это даже не язык программирования, а язык разметки, который вы встретите в любой web-страничке. Инструкции этого языка выглядят примерно так: «Вот у этого параграфа должен быть наклонный шрифт», «Здесь отобразить картинку picture.png», «Размер шрифта данного куска текста 12 точек. Цвет красный».
Это очень полезный язык для начинающих. Даже если вы не собираетесь в web-разработку, эти знания вам пригодятся. Ориентировочное время освоения – 2-5 дней.
Среди программистов, HTML не считается чем-то серьёзным. А вот если вы не знаете основы HTML, то работодатели и коллеги будут вас воспринимать, как умственно-отсталого.
По мере изучения HTML вы будете постоянно сталкиваться с отсылками к технологии CSS. Изучение не обязательно на данном этапе. Но если увлечётесь СSS, эти знания не будут лишними.
JavaScript
Это уже «настоящий» язык программирования. Вот тут вас ждут первые настоящие сложности. Хотя по языку огромное множество учебников, видеоуроков и всевозможных сайтов, где все разжёвано до самых мелких подробностей.
Наверняка кому-то не терпится начать изучать С, Python и даже Haskell. Но даже если вы собрались стать системным программистом,, рано или поздно столкнётесь с HTML и JS.
Одна из причин выбора JS как первого языка программирования – его применимость в разных областях. Начиная с логики web-страничек на стороне клиента. Кончая JS-подобным языком QML, куда нас тянут за уши разработчики фреймворка Qt.
Предложенные технологии не требуют больших и тяжёлых сред разработки, исполнения. По ним много учебников и справочников на русском. Не нужно путаться с адресной арифметикой и подобной спецификой. Ваша задача научиться делать базовые логические конструкции типа циклов, ветвлений и т.п.
Любой учебник содержит упражнения. И на начальном этапе вы должны делать эти упражнения. Чем больше, тем лучше!
Однако, есть две небольшие категории людей, которым можно заменить JS на что-то другое:
1) Те, кто имеет хороших наставников по другим технологиям программирования.
К примеру, брат\сват, работающий системным программистом С. И он готов вам помогать. В этом случае С может быть предпочтительней. Но насколько знаю, около 30% программистов – это WEB-программисты. Так что JS все равно будет правильным выбором.
2) Люди, которым какой-то другой язык нужен, прямо сейчас для работы. Системным администраторам, как правило, SQL и bash.
Плюс в изучении SQL действительно есть. Если вы его не осилите, смысла продолжать нет.
А вот с bash всё по другому. Я слышал, JS позволяет заменять bash через модуль в node.js. Так что, если надо написать скрипты с нуля, JS будет поинтереснее. Если исправлять написанное до вас, тогда другого выбора нет. Так же, как и с SQL, JS останется у вас на очереди.
Пройди экспресс-тест:
Сможешь ли ты стать программистом?
Учебные пособия
Очень важный вопрос, какие учебные пособия использовать. Здесь перечислены варианты в порядке, которoм должны их проходить.
- Видеоуроки. Их стало очень много на любые темы. Youtube обязательно выдаст плейлисты по любым популярным технологиям. Даже на русском. Там всё наглядно, и начинать ваять свои первые «Hello, world!» надо именно с них.
- Мультимедийные учебники. Скорее всего, это коллекции видеоуроков плюс ещё чего-то. Очень часто продаются за деньги.
- Книги. Самые тяжёлые для восприятия. Они как раз покрывают больше тонкостей различных технологий. Оставьте на потом. Когда исчерпаете возможности предыдущих вариантов.
Решение технических проблем
Проявив силу воли и терпения, вы героически начали изучение предмета. И перед вами стали вставать всевозможные технические проблемы. Вы можете всё делать по инструкции. Но ваши примеры могут не работать.
Самые распространённые ошибки связаны с тем, что начинающие склонны торопиться и считать какие-то вещи необязательными. Вам наверняка хочется побыстрее получить результат в виде должности стажёра. А уж там то, в окружении компетентных коллег, всё поймёте и основательно изучите. Поэтому «какой-то учебник» по JavaScript, который даже не будет вашим основным языком, может восприниматься как марафонская дистанция, которую надо преодолеть побыстрее.
На самом деле, любой учебник по программированию надо воспринимать как поле, которое надо вспахать. Все, кто пропускают мелочи, заканчивают тем, что сталкиваются с неразрешимыми проблемами. Большинство причин бросания учёбы на начальном этапе связаны как раз таки с разбиранием ошибок, выдаваемых интерпретатором или компилятором.
Вам кажется, что подробное описание использования кавычек с арифметическими операциями — какой-то сумасшедший бред, которым вы не будете никогда пользоваться? Вы, может быть, и нет. А вот автор считает это необходимым.
Неразрешимые проблемы – это часть жизни любого программиста. И как бы вы прилежно всё не делали, никуда от них не денетесь. Но и их можно решить – самостоятельно, с помощью наставника или на форуме.
Самостоятельная учёба
После освоения основ JavaScript вы уже хорошо представляете себе, что такое писать код программ. И вы готовы потратить полгода-год на овладение профессией.
Что изучать?
Технология (язык программирования, который будете изучать) обязана быть коммерчески востребованной, т.е. входить в ТОП 10 популярных языков. Иначе не сможете получать деньги за свой труд.
У вас впереди ещё стажировка. И на стажировку берут охотно только по дефицитным специальностям. Особенно удалённо. Поэтому думайте\решайте, чему хотите посвятить свою жизнь. Что будете изучать на данном этапе. Можно продолжить и JavaScript. Можно попробовать, что-нибудь другое. Никто не мешает передумать на середине пути. Вы уже испытали себя и есть определённое поле для экспериментов.
Единственное исключение я бы сделал для С++. Это сложный язык. Он, наверное, требует в два раза больше времени на освоение, чем просто С или JS. При этом зарплата будет больше максимум на 20%.
Если вам не по нраву JS, и вы ощущаете себя профессионалом наверное, лучшим выбором будет Java. Разработчики Java в связке с Oracle(PL\SQL) из больших корпораций, возможно, самые высокооплачиваемые разработчики в IT. Притом, что это технологии средней сложности. (Предполагаю, в мире Java платят уже только за умение запускать jar файлы.)
Ещё есть замечательный язык Python. Он будет очень полезен всевозможным математикам, статистикам, т.к. открывает им дверь в мир Data Science. С другой стороны, это язык web-разработки для всех остальных.
Учёба на данном этапе нацелена на повышение своей квалификации до максимума. Фактически, вы будете повышать рыночную цену своего труда.
Самостоятельная учёба имеет преимущество перед стажировкой. Можно получать более
фундаментальные знания.
Вы должны выбрать для себя большую, фундаментальную книгу по какому-либо языку программирования. И изучить её до конца. Вместе со всеми учебными заданиями.
Выполнение учебных задач на данном этапе, тяжёлое, тоскливое занятие! Вам будет скучно, неинтересно, захочется всё бросить. Большинство так и делают. Мотивируйте себя, придумывайте интересные задачи, продолжайте учиться.
Кроме основного языка программирования типа С, Java, JS и т.п., необходимо изучить следующее:
Английский язык
Как известно, программисты такой народ, который умеет читать по-английски, но не умеет говорить. Это тот язык, на котором вы будете искать решение своих проблем, общаться с заказчиками. Разговорный английский сильно расширяет круг поиска работы. Это очень хорошо сказывается на зарплате.
SQL
В большинстве случаев эта технология вам понадобится рано или поздно. Необязательно изучать надстройки типа PL\SQL(кроме изучения Java). Но освоить создание таблиц, джойны и юнионы очень желательно. Самым полезным, пожалуй, будет изучение на примере PostgreSQL.
У SQL есть ещё один аспект. Этот язык, возможно, самое сложное, что спрашивают при приёме на работу тестировщиком. Поэтому, если выучите только его, есть шанс попасть на работу очень близкую к программированию. На такой работе будет немного легче изучать само программирование. И вас очень легко переведут из тестировщиков в разработчики. Как только покажете, что способны написать хороший код.
Общепринятые способы получения знаний:
ВУЗ
Если коротко, то лучше быть стажёром через год самостоятельной учёбы, чем через четыре года посещения ВУЗа. Те, кто начнёт заниматься самостоятельно или на онлайн-курсах, через 4 года будут проводить технические тесты при приёме на работу тех, кто сейчас поступает в ВУЗы.
Курсы и школы, проводимые большими компаниями для своих будущих сотрудников
Самый известный случай, пожалуй, «Школа анализа данных» Яндекса. Тут вас будут учить реально дорогие специалисты. И они будут делать это для своих внутренних нужд. Просто так туда не попасть. Яндекс требовал математическую подготовку. EPAM требовал знание основ программирования.
Но если есть возможность посещать эти курсы, стремиться туда стоит однозначно. Даже если вы пробудете в «рабстве» у этих компаний за какие-то $400-500 в месяц целый год.
Онлайн-курсы подготовки программистов
Если вы новичок и только приступаете к IT-скиллам, то самый надежный способ стать высокооплачиваемым профи – это начать не с книг (хотя без них тоже не обойтись), а пройти хороший очный или онлайн-курс программирования.
Потому что:
– Не все обладают сверх-усидчивостью, чтобы самостоятельно продираться через сотни страниц не самых простых текстов.
– Вас будут обучать лучшие специалисты в этой сфере – есть у кого учиться и у кого спрашивать непонятное.
– Вы получите диплом известного онлайн-университета и готовое портфолио из 3-5 проектов.
– Пройдете реальную практику, а потом вам помогут трудоустроиться.
Но ведь это это так дорого!
Да, дорого. Но уже через несколько месяцев вы начнете получать зарплату на уровне junior, т.е. от 50-80 тысяч рублей, и отобьете расходы всего за 1.5-3 месяца. А дальше пойдет чистая прибыль:).
Топ онлайн-курсов программирования с нуля и с обучением в рассрочку
Когда искать работу
Фактически, вы можете начать поиски работы сразу после первого этапа. Подозреваю, многие так и сделают. Если вам до 23-25-ти лет и вы живёте там, где хорошо развита отрасль разработки ПО, у вас это получится. Может, вы не станете хорошим специалистом. Но на жизнь заработаете точно.
Но есть люди живущие там, где разработкой ПО не занимается никто. И есть люди старше 25. Такие должны дольше учиться, чтобы превратиться в высококвалифицированных спецов. Ради получения в свои ряды классных программистов работодатель готов на многое. Вам могут предложить и даже удалённую работу. Возраст за 30 или 40 лет не будет иметь большого значения. Главное показать свой высокий наработанный уровень.
У раннего поиска есть большой минус. После собеседования работодатель будет иметь о вас какое-то мнение, которое не захочет менять со временем, если вы когда-то показали низкий уровень знаний. Через полгода, когда будете знать гораздо больше, ваше резюме, возможно, даже не будут рассматривать. Потому что мнение о вас останется прежним.
«Что мне нужно знать, чтобы взяли Junior-ом?»
Тут нет однозначного ответа. Процесс вашей самоподготовки делает вас более привлекательным для работодателей. Работодатель выбирает наиболее подходящего из откликнувшихся кандидатов. Квалификация кандидатов ограничена сверху зарплатой вакансии. Возможно, вы будете лучшим за эту зарплату. Но в любом случае вы постепенно учитесь и дорожаете. И в какой-то момент станете этим самым лучшим из всех откликнувшихся.
Ещё есть фактор возраста кандидата. Чем больше возраст, тем больше снижение. Есть фактор наличия хорошего портфолио, который повышает. Опыт, рекомендации и многое другое. К примеру, вы можете много стоить, как программист C++, но очень немного, как программист PHP.
Портфолио
Для начала надо написать портфолио. Это должна быть небольшая программа или скрипт для сайта, которая делает работу, похожую на полезную. Назначение должно быть понятно вашему потенциальному работодателю. Например, адресная книга. Если вы сделаете калькулятор для расчёта траекторий полёта спутников Земли, будет, конечно, круто. Но ваш будущий работодатель вряд ли сможет оценить результат.
И самое важное. Это должен быть хорошо форматированный, оригинальный и структурированный код. Будьте готовы, работодатель возьмёт строку из этого кода и забьёт в поисковик.
Резюме
Вообще, по резюме можно многое сказать о человеке. Например, плохо структурированное резюме. Скорее всего, его напишет разработчик, не особенно заботящийся о структуре исходного кода. Скопированный из сети раздел, например, «Профессиональные качества», говорит о том, что кандидат склонен приврать. Резюме будут очень внимательно читать люди с большим жизненным опытом. Любые попытки скрыть что-то или приукрасить будут расцениваться крайне негативно.
Лучше иметь скромное резюме. Но быть уверенным, что ответите за любое слово в нём. Если вы уже приобрели какой-то опыт работы и вам есть чем похвастаться. Можете добавить раздел «Портфолио» в самом конце. Подробно описать проекты, в которых участвовали. Интересные технические решения, достижения (подробно). Хоть 10 страниц. Но именно в конце. Обязательно укажите, что готовы к релокации(переезду) и командировкам. Также вам поможет заполненный профиль в LinkedIn, HeadHunter и других сайтах поиска работы.
Поиск работы
Теперь переходим к самому интересному. Вам надо чётко усвоить, что стажёры и неопытные разработчики редко кому нужны. Работодатели ищут прежде всего опытных. Но их зарплаты не всегда позволяют нанять кого надо. Поэтому ваше резюме с нулевым опытом будет рано или поздно рассматриваться. И в этом очень поможет код из вашего портфолио.
Поэтому вы должны рассылать резюме по всем вакансиям, подходящим под ваш профиль. Например, изучали JavaScript. Шлите резюме везде, где этот JavaScript требовался. Невзирая на минимальный требуемый стаж, наличие профильного высшего образования, то, что вакансия уже закрыта и многое другое. На «том конце провода» лучше знают, что делать с этим. Так же шлите во все фирмы, которые теоретически имеют или могут иметь специалистов вашего профиля.
Сам поиск работы занимает от месяца до двух. Обычно, если вы откликаетесь на вакансию, с вами связываются через 2-3 дня. Потом, в течение недели собеседование и\или тестовое задание. И далее, в течение месяца работодатель будет думать над результатами. Прямые отказы обычно не присылают. Про вас просто забывают и всё. Так что приготовьтесь к множеству интервью, после которых вы забудете о них. Не надо возлагать надежды ни на какие варианты. Прошли собеседование и погружайтесь обратно в изучение программирования. Кстати, большинство собеседований для программистов проходят удалённо. Это удобно, потому что можно устроиться на работу в любом городе.
Первая зарплата
Обычный размер зарплаты у стажёра с некоторым багажом знаний – это зарплата обычного офисного хомячка в том же городе. Но если предложили меньше, то советую все равно соглашаться. Допустим, вы работаете сисадмином. Получаете 700$. И вот вам предлагают должность программиста (фактически стажёра) за 500$. Если для вас это «отстой», то даже не начинайте ничего изучать. Забудьте о программировании, как о будущей профессии.
Ваша первая зарплата разработчика должна быть достаточной, чтобы выжить. Дело в том, что вместе с 500$ вы приобретете знания на 1000$. Получите опыт коллективной разработки. Вашу работу будут оценивать более опытные коллеги. Получите безграничный доступ к их опыту. Скорее всего, ваше портфолио будет прирастать реальными проектами. Всё это сделает вас настоящим и востребованным специалистом. И уже через полгода догоните свои 700$. И это будет только начало вашей карьеры.