Найти в Дзене

"Хочу стать программистом!" О чем стоит подумать и как выбрать сферу деятельности

Оглавление
Книжка с картинками, по которой я изучал программирование
Книжка с картинками, по которой я изучал программирование

Если вы думаете что это очередная реклама компьютерных курсов, то нет – я еще свои не открыл. Хотя больше 15 лет преподаю программирование в ВУЗе.

В связи с кризисом меня часто спрашивают как стать программистом или освоить какую-то смежную профессию, чтобы можно было сидеть дома и зарабатывать тысячи долларов (как я). Про смежные профессии напишу отдельно, а пока расскажу что в принципе стоит понять, прежде чем ввязываться в изучение программирования.

А вы точно этого хотите?

Самое главное – это определить зачем вам это нужно. Если вы идете сюда просто под влиянием моды или ради денег, то лучше не стоит. В мире и так слишком много плохих программистов. Взять хотя бы Индию. Ничего лично против Индии не имею, но там сложилась такая ситуация, что ИТ – это одна из немногих областей где можно нормально заработать. И туда пришло множество людей просто ради денег. Им это не нравится на самом деле, у них нет талантов в этой области, но они вынуждены этим заниматься. А делать что-то из вынужденности – последнее дело. И результат получается соответствующий. Не зря индусский код это уже мем среди программистов.

Но если вам и правда интересно, вы готовы попробовать и не спасуете перед первыми трудностями – пробуйте! Я начал программировать в 10 лет. И пока мои сверстники бегали на улице, знакомились с девушками и занимались прочими подростковыми вещами, я писал код. Потому что мне это было интересно (да и бегать я не любил, а девушек – боялся). И потому что у меня были к этому склонности.

А вы сможете?

Сейчас есть популярное мнение, что программировать может научиться любой. Я с этим не совсем согласен, хотя крупные компании давно и безуспешно пытаются сделать программирование доступным для простых людей. Вот вы, например, писали какие-нибудь макросы в Excel? Или может быть хитрые поисковые запросы с использованием разных операторов? Если да – то вы сможете стать программистом. Но вы в меньшинстве.

Меня всегда забавляла история создания языка запросов к базам данных SQL. Его создатели наивно верили что им будут пользоваться обычные менеджеры, но что-то пошло не так. И я догадываюсь – что. Сам синтаксис почти любого языка и базовые принципы можно выучить за месяц-другой (в этом создатели курсов не врут). Но это не сделает вас программистом. Программирование – это в первую очередь способность к анализу, умение придумывать алгоритмы и структурировать информацию. Не у всех это получается хорошо.

Но есть некоторые косвенные признаки, которые присущи хорошим программистам (это только мое мнение, не претендующее на истину):

  1. Усидчивость и способность к концентрации. Вам придется иногда часами сидеть над кодом чтобы разобраться в какой-то проблеме (иногда тривиальной). Если вы и часа не можете усидеть на месте, то программирование вам вряд ли подойдет. А вот интроверсия и даже некоторая аутичность обычно помогают.
  2. Тяга к конструированию. Если вам в детстве нравились конструкторы, а особенно если вы собирали что-то сами, не по инструкции, то велика вероятность что вы будете хорошим программистом.
  3. Любовь к чтению. Вопреки расхожему мнению, программирование ближе к лингвистике чем к математике. Хотя математика тоже важна. Но не сама по себе, а как тренировка навыков полезных для программирования (именно так я ее и воспринимал в институте).

Если все это про вас – дерзайте (если нет – тоже)! Кстати, если вы девушка, то это никак не мешает, хотя возможно придется бороться с предрассудками. Я лично работал с толковыми программистками и не считаю программирование чисто мужской профессией. А недавно даже читал исследование, что у женщин это получается лучше.

В чем ваша сила?

Если вы решили что вам это нужно, то стоит определиться с направлением, ведь программирование – это очень широкая сфера. Если у вас уже есть профессия или навыки то можно эффективно это использовать. Я много читал об успешных проектах на стыке – когда психолог сделал мобильное приложение для психологов, например. Или когда ученый разработал приложение помогающее ему в исследованиях.

В целом же, можно выделить несколько направлений:

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 лет как раньше. Хотя по-моему чем дальше, тем меньше работодатели обращают внимание на дипломы. Главное – что вы умеете делать.

Еще могу посоветовать не зацикливаться на языках программирования и технологиях, а почитать книги про подходы к программированию в принципе и смежные области: "Программист-прагматик", "Совершенный код", "Джоэл о программировании", "Психбольница в руках пациентов", "Человеческий фактор: успешные проекты и команды" и другие.

Если вы выберете этот путь – удачи! Она вам понадобится. ;)