Если вы думаете что это очередная реклама компьютерных курсов, то нет – я еще свои не открыл. Хотя больше 15 лет преподаю программирование в ВУЗе.
В связи с кризисом меня часто спрашивают как стать программистом или освоить какую-то смежную профессию, чтобы можно было сидеть дома и зарабатывать тысячи долларов (как я). Про смежные профессии напишу отдельно, а пока расскажу что в принципе стоит понять, прежде чем ввязываться в изучение программирования.
А вы точно этого хотите?
Самое главное – это определить зачем вам это нужно. Если вы идете сюда просто под влиянием моды или ради денег, то лучше не стоит. В мире и так слишком много плохих программистов. Взять хотя бы Индию. Ничего лично против Индии не имею, но там сложилась такая ситуация, что ИТ – это одна из немногих областей где можно нормально заработать. И туда пришло множество людей просто ради денег. Им это не нравится на самом деле, у них нет талантов в этой области, но они вынуждены этим заниматься. А делать что-то из вынужденности – последнее дело. И результат получается соответствующий. Не зря индусский код это уже мем среди программистов.
Но если вам и правда интересно, вы готовы попробовать и не спасуете перед первыми трудностями – пробуйте! Я начал программировать в 10 лет. И пока мои сверстники бегали на улице, знакомились с девушками и занимались прочими подростковыми вещами, я писал код. Потому что мне это было интересно (да и бегать я не любил, а девушек – боялся). И потому что у меня были к этому склонности.
А вы сможете?
Сейчас есть популярное мнение, что программировать может научиться любой. Я с этим не совсем согласен, хотя крупные компании давно и безуспешно пытаются сделать программирование доступным для простых людей. Вот вы, например, писали какие-нибудь макросы в Excel? Или может быть хитрые поисковые запросы с использованием разных операторов? Если да – то вы сможете стать программистом. Но вы в меньшинстве.
Меня всегда забавляла история создания языка запросов к базам данных SQL. Его создатели наивно верили что им будут пользоваться обычные менеджеры, но что-то пошло не так. И я догадываюсь – что. Сам синтаксис почти любого языка и базовые принципы можно выучить за месяц-другой (в этом создатели курсов не врут). Но это не сделает вас программистом. Программирование – это в первую очередь способность к анализу, умение придумывать алгоритмы и структурировать информацию. Не у всех это получается хорошо.
Но есть некоторые косвенные признаки, которые присущи хорошим программистам (это только мое мнение, не претендующее на истину):
- Усидчивость и способность к концентрации. Вам придется иногда часами сидеть над кодом чтобы разобраться в какой-то проблеме (иногда тривиальной). Если вы и часа не можете усидеть на месте, то программирование вам вряд ли подойдет. А вот интроверсия и даже некоторая аутичность обычно помогают.
- Тяга к конструированию. Если вам в детстве нравились конструкторы, а особенно если вы собирали что-то сами, не по инструкции, то велика вероятность что вы будете хорошим программистом.
- Любовь к чтению. Вопреки расхожему мнению, программирование ближе к лингвистике чем к математике. Хотя математика тоже важна. Но не сама по себе, а как тренировка навыков полезных для программирования (именно так я ее и воспринимал в институте).
Если все это про вас – дерзайте (если нет – тоже)! Кстати, если вы девушка, то это никак не мешает, хотя возможно придется бороться с предрассудками. Я лично работал с толковыми программистками и не считаю программирование чисто мужской профессией. А недавно даже читал исследование, что у женщин это получается лучше.
В чем ваша сила?
Если вы решили что вам это нужно, то стоит определиться с направлением, ведь программирование – это очень широкая сфера. Если у вас уже есть профессия или навыки то можно эффективно это использовать. Я много читал об успешных проектах на стыке – когда психолог сделал мобильное приложение для психологов, например. Или когда ученый разработал приложение помогающее ему в исследованиях.
В целом же, можно выделить несколько направлений:
1. Разработка бизнес-приложений
Если вы из корпоративной среды, любите работать в больших компаниях и на большие компании (в том числе государственные), то это подходящая сфера. Тут есть два направления:
- Системная интеграция: доработка готовых решений под нужды заказчика, например SAP, Siebel, 1C и т.д.
- Разработка приложений: создание приложений решающих задачи бизнеса (обычно используются языки Java или .NET), автоматизация бизнес-процессов.
2. Разработка мобильных приложений
Если у вас есть визуальный вкус и вам нравится наглядно видеть результаты своего труда, то это хорошее направление. Поскольку сейчас рынок поделили Apple и Google (андроид), то есть направления:
- Только Apple (языки Swift и Objective-C, хотя последний отходит на второй план)
- Только Андроид (языки Kotlin и Java)
- И то и другое (Flutter, React Native и, возможно, Xamarin)
3. Разработка сайтов (веб-приложений)
Тут тоже есть направления:
- Frontend: разработка самих страничек и логики их работы. Хорошо подходит тем у кого хороший визуальный вкус и умение оперировать образами. Языки: JavaScript и его "улучшенная версия" – TypeScript, HTML, CSS.
- Backend: разработка серверных частей сайта, того что находится за кадром и выдает данные (посты в дзене, фоточки в инстаграмме и т.д.). Больше подходит "конструкторам". Языки: JavaScript, Go, Python, PHP (хотя он сдает позиции).
Но особо ценятся программисты, которые умеют и frontend и backend и называются full-stack разработчиками.
Сейчас это бурно-развивающееся направление и изучив тот же JavaScript вы сможете много чем заниматься. Но это достаточно кривой и нелогичный язык, который используется не по назначению и который оброс кучей дополнительных примочек (фреймворков), чтобы он хоть как-то мог быть полезен. Почему он стал популярен – отдельная история. Также все это постоянно меняется – новые фреймворки появляются постоянно и не изучив их вы работать не сможете (даже в вакансиях указывают не сами языки, а фреймворки). А из-за моды и востребованности, тут достаточно велика конкуренция. Но если вам нравится постоянно изучать новое и ловить тренды, то это направление для вас.
4. Разработка игр
Очень частая причина идти в программирование – желание научиться создавать игры. Но не смотря на романтичный образ это достаточно непростая работа и вы можете разлюбить и программирование и игры. Но если вы думаете что это ваше – попробуйте! Я в этой сфере не очень силен, поэтому не буду углубляться в детали.
5. Искусственный интеллект, машинное обучение и другие модные слова
Если у вас хорошо с математикой во всех ее проявлениях и вам импонируют образы сумасшедших ученых, то возможно стоит обратить внимание на эту область. Она сейчас на подъеме и это не совсем программирование в его привычном понимании. Тут очень пригодится умение разбираться в сложных вещах и придумывать разные хитрые конструкции. Я сейчас как раз работаю в ИИ-проекте и это очень интересно! Хотя не у всех получается вникнуть во все эти хитрые алгоритмы и теории.
Что дальше?
Искать подходящие курсы, книги и сайты. Их сейчас много (в том числе и бесплатных) – Coursera, Pluralsight, Khan academy, Udemy а также курсы и стажировки от наших крупных компаний (Яндекса, например). Что-то конкретное не посоветую, т.к. не проходил курсы для начинающих. Но самое главное, как можно раньше и как можно больше начинать писать код и практиковаться. Программирование – это в первую очередь практика.
Профильное образование тоже не помешает, тем более что сейчас не нужно учиться 5 лет как раньше. Хотя по-моему чем дальше, тем меньше работодатели обращают внимание на дипломы. Главное – что вы умеете делать.
Еще могу посоветовать не зацикливаться на языках программирования и технологиях, а почитать книги про подходы к программированию в принципе и смежные области: "Программист-прагматик", "Совершенный код", "Джоэл о программировании", "Психбольница в руках пациентов", "Человеческий фактор: успешные проекты и команды" и другие.
Если вы выберете этот путь – удачи! Она вам понадобится. ;)