Хочу быть программистом — с чего начать?

54
Хочу быть программистом — с чего начать?
Н
Никита Смирнов
Владелец Radio REDBOX
Ольга Кучерова
Ольга Кучерова
CIO, Law firm a.t.legal
Кирилл Коломбет
Кирилл Коломбет
Omnigame, Senior Frontend Developer
Dmytro Budym
Dmytro Budym
Software Development Engineer in Test

Где получить профессию программиста и в чем ее суть? Узнаем у профессионалов.

Как выбрать направление

Тем кто хочет стать программистом, важно выбрать направление, которые подходит характеру, мышлению и навыкам, считает Кирилл Коломбет. Одним, у кого развито визуальное мышление, подходит разработка интерфейсов, графики и анимаций. Другим, кто любит линукс и консоль, может быть интересна разработка серверов.

Специалистам в математике и физике, интереснее разрабатывать AI, игровые движки или работать с большими данными. Задачи различаются по сложности, от простых веб сайтов и интернет магазинов, до высоконагруженных сервисов и профессиональных приложений.

Программисты разные нужны, как и на рутинную типовую работу, так и на творческое решение сложных задач. Новичку необходимо выработать привычку постоянно учиться и справляться с задачами выше своих способностей. Очень важно быть трудолюбивым, иметь усидчивость и стремление к достижению цели, не уставать от работы за компьютером.

На каждой работе программисту придется изучать свой набор технологий из самых разных отраслей.

Даже на одном и том же технологическом стэке подходы к разработке могут отличаться. Рекомендую найти подходящий способ обучения: читать статьи, смотреть видео, проходить курсы, решать задачки или делать прототипы, главное заниматься этим регулярно. Одним из важнейших навыков начинающего программиста это знание английского языка, хотя бы на уровне чтения веб сайтов и документации, потому что большинство полезных материалов по программированию можно найти только на английском языке.

К тому времени когда материал переводится на русский, он устаревает. Многие статьи, как и документация вообще не переводятся. Рекомендую в начале браться за любую работу, даже малооплачиваемую, чтобы получить опыт разработки настоящих проектов в портфолио.

Обычно самый сложный этап, который тяжело преодолеть новичкам — получение первой работы в качестве джуниора или стажера, и в этом случае желательно иметь не только знания о технологии, но и любой проект, который можно показать.

Как действовать по шагам — пример

Чтобы стать программистом, нужно определиться, к какому виду Вы будете относится, говорит Никита Смирнов. Программист — это разнонаправленная профессия, в которой дорогу выбирает сам программист. Вот несколько видов программистов:

  • Front-end веб-разработчик
  • Разработчик игр
  • Android разработчик

У каждого вида программистов есть свои языки программирования. К примеру, мы определились с видом, теперь надо узнать какой же язык начать учить? Всё зависит от выбора направленности, например, мы выбрали вид: Front-end веб-разработчик. Для данного специалиста нужно знать языки программирования:

Это только малый список языков, ведь к данным есть дополнения, их называют библиотеки и фреймворки. Мы выбрали первый язык программирования, что же теперь делать? Для этого нужно познакомится с ним понять, что это за язык. Самые рекомендованные способы изучения:

  • Видеоуроки
  • Книги
  • Платные уроки/курсы

Необходимые навыки

Для начала определите круг интересов, советует Dmytro Budym. Если хочется создавать то что у всех на виду, делать крутые интерфейсы, которыми будут пользоваться миллионы людей, готовьтесь пополнять ряды front-end разработчиков. Если же вдохновение вызывают высокопроизводительные отказоустойчивые сервера, обрабатывающие тысячи запросов в секунду — то вам дорога в back-end.

В зависимости от направления уже будет варьироваться выбор языка, фреймворков, инструментов. Отличный вариант обучения — курсы и школы внутри больших IT компаний, которые регулярно набирают студентов.

Как правило, лучшие выпускники могут сразу же получить позицию trainee внутри компании. Также можно воспользоваться услугами обучающих центров, главное при выборе ориентироваться на рейтинг и отзывы выпускников. Сложный вариант — самообучение. Подходит только людям с высоким уровнем дисциплины.

Выбираем направление, составляем список технологий для изучения, ставим дедлайн и работаем. Если есть знакомый разработчик, то попросите направить вас в нужную сторону. Если нет — смотрим вакансии Junior уровня, изучаем требования к кандидату и выводим средний стек технологий.

Базовые навыки:

  • понимать как работает веб-приложение, уметь работать с API
  • базовые знания языка программирования и сопутствующего фреймворка (например Java & Spring)
  • инструменты сборки (в случае Java — maven / gradle)
  • GIT — работа с ветками, решение конфликтов, понимание git flow
  • работа с базами данных, умение писать SQL запросы
  • базовые навыки работы с docker, уметь запустить приложение в контейнере
  • СI tools — Jenkins, TeamCity
  • понимать как работает, уметь настроить простую конфигурацию.

Не советую начинать обучение с книг, лучше с видео курсов на Udemy и сразу пробовать на практике то что изучаете. И не распыляйтесь, а учите что то одно, не стоит переключаться на полпути с Java на Python, а потом перепрыгивать на C#. Главное — постоянство и четкое следование плану.

Из чего состоит идеальный программист?

Не знаю, можно ли ко мне отнести термин «с нуля», с учётом того, что некогда я преподавала программирование и математическое моделирование, рассказывает Ольга Кучерова. Поскольку с тех пор данная специальность претерпела большие изменения, я вполне себе null в современном программировании. Однако, к этому занятию меня всё время тянет и обычно я поддаюсь искушению освоить азы заинтересовавшего меня инструмента, чтобы сделать какой-нибудь маленький проект.

Во-первых, это чрезвычайно увлекательно, к тому же такой опыт часто помогает мне в работе.

Например, заказываю разработку шаблона интерактивного письма в корпоративном стиле, элементарные знания позволяют самостоятельно адаптировать его для каждого сотрудника, изменить форматирование, перегруппировать блоки. Знакомство с понятиями и терминами способствует взаимопониманию как при постановке задач разработчикам, так и при приёмке и эксплуатации продукта.

Одним словом, учиться программированию полезно всем и никогда не поздно, не только с нуля, даже с минус единицы.

А с обучением есть проблемы. Многое изменилось, но гэп между образовательным контентом и потребностями бизнеса преодолеть не удаётся, об этом печальном факте свидетельствует острая потребность в квалифицированных кадрах для IT при изобилии выпускников профильных учреждений.

Система высшего образования слишком консервативна, чтобы уследить за популярностью того или иного стека технологий, да она, наверное, и не должна, хорошо, если предоставит академическую базу универсальных знаний. Постигать тонкости ремесла программиста скорее всего придётся посредством курсов и самообразования.

Хорошо, если удастся преодолеть HR парадокс: всем нужны опытные сотрудники, а где им набираться опыта? – Неизвестно.

Итак, из каких составляющих получается идеальный программист?

  • Фундаментальные знания, владение математическим аппаратом
  • Участие в решении конкретных, актуальных прикладных задач – чем раньше, тем лучше
  • Мотивация и умение учиться на специализированных курсах.

Это необходимые условия. Есть ещё несколько опций, которые создадут дополнительные преимущества:

  • Содействие опытного ментора
  • Вовлечённость в профессиональные сообщества
  • Челленджи, хакатоны, помощь другим начинающим программистам (да, это когда так хорошо объяснил другому, что сам понял!)

Тут по каждому пункту можно делать целое исследование, начиная от того, какие ВУЗы хорошо закладывают основы, необходимые для пункта 1, заканчивая списком ресурсов для выбора стажировок и соревнований программистов. Но тут всё стандартно: гуглим, советуемся с друзьями.

Что можно применить нетривиальное, полезное для newcomer, что поможет сфокусироваться на получении востребованных навыков?

  • Исследовать профили специалистов на Linkedin, там они указывают свои Skills с соответствующим подтверждением в виде сертификатов и пройденных тестов. Заодно можно задать им вопросы.
  • Изучить требования вакансий по интересующей должности, выписать группы наиболее часто встречающихся стеков технологий и фреймворков.
  • Отыскать skills matrix для целевой специализации.

Готовые матрицы навыков разрабатывают предприятия-флагманы отрасли, в немного расплывчатом и общем виде, годном чтобы составить первоначальное представление о профессии, навыки описаны в Профессиональных стандартах на сайте Минтруда. В акселераторах также имеет смысл поинтересоваться списком требований к разработчикам. Кроме того, на данной теме специализируется российский стартап Vectotly.team.

Сейчас наблюдается тренд на гармоничное развитие технарей, многие из них помимо hard skills стремятся прокачать soft skills: бизнес-подход, самопрезентацию, командную работу и тому подобные умения. Но это уже другая история.

4
Обсудить Содержание