Как научиться программировать? Практическое руководство для начинающих

Как научиться программировать? Практическое руководство для начинающих

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

Мы собрали для вас самые полезные поинты, чтобы ответить на популярные вопросы новичков и закрыть боли тех, кто не может для себя решить стоит ли ему «Войти в IT». Еще недавно — лет 10 назад путь начинающего программиста был страшным, неопределенным, долгим и одиноким. А сейчас у вас есть все необходимые ресурсы и готовый...

План

  1. Выбрать язык и профессию
  2. Выяснить, какие технологии вам нужно будет изучить
  3. Решить каким образом и с каким графиком вы будете учиться для достижения цели
  4. Выбрать IDE
  5. Зафиналить программу обучения. Освоить базу языка, Git, работу с консолью и необходимые технологии. Дополнить знания библиотеками и фреймворками
  6. Стать практиком, а не теоретиком
  7. Искать работу.
Чем больше узнаем мы, тем лучше понимаем, как много не знаем. — Магистр Йода

Пример плана для Web-разработчика

  1. Профессия и язык: Веб-разработчик. JavaScript
  2. Какие технологии вам нужно будет изучить: терминал, Git, HTML, CSS, Node.js, TypeScript, Express, React, Redux, SQL, ORM Sequelize
  3. Как вы будете учиться: офлайн буткемп в Москве 3 месяца с 9:00 − 19:00 по будням
  4. IDE: VS Code
  5. Ваша программа: подготовка + основная программа обучения
  6. Практика: сделать несколько проектов для портфолио, в том числе групповых.
  7. Поиск работы: составить с помощью кураторов грамотное резюме, провести тестовые технические интервью, откликаться на вакансии (чем больше, тем лучше) и ходить на собеседования.

Пример плана для Data Scientist

  1. Профессия и язык: Data Scientist. Python
  2. Какие технологии вам нужно будет изучить: терминал Unix систем, Git, jupyter, python, scikit-learn, catboost, xgboost, umap, statsmodels, keras, pytorch
  3. Как вы будете учиться: онлайн буткемп 15 недель с 9:00 − 18:00 с понедельника по пятницу
  4. IDE: JupyterLab/Jupyter Notebook и VS Code
  5. Ваша программа: самостоятельная подготовка + пре-курс + основная программа обучения
  6. Практика: участие в командных проектах «Предсказание дефолта клиента банка по истории транзакций» и «Сервис-классификатор изображений»
  7. Поиск работы: нужно будет выделить сферу, в которой захочешь работать и совместно с куратором составить стратегию поиска работы, сделать эффективное резюме, подготовиться к собеседованиям и начать отсылать отклики потенциальным работодателям.

Нужна ли математика программистам

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

  • Разработка веб-приложений
  • Создание приложений для мобильных устройств
  • Разработка под Интернет вещей
  • Разработка баз данных (на начальных уровнях).

Если говорить о профессиях, то это могут быть: тестировщики, web-разработчики (frontend, backend и fullstack направления), специалисты по кибербезопасности, мобильные разработчики и разработчики баз данных.

Профессии и сферы, где нужно знать математику

Data Scientist, Data Analyst, Data Engineer, ML Engineer, Data Architect, исследователь в области искусственного интеллекта, криптограф, инженер по компьютерной графике, разработчик игр — всем этим специализациям математика нужна как воздух.

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

  • Наука о данных. Data Science требует знаний линейной алгебры и математического анализа, теории вероятностей и математической статистики.
  • Машинное обучение и искусственный интеллект. Знание математических понятий, таких как линейная алгебра, статистика и оптимизация, полезно при разработке и обучении моделей машинного обучения, а также при работе с алгоритмами искусственного интеллекта.
  • Графика и компьютерное зрение. Для разработки компьютерной графики, обработки изображений и распознавания объектов требуются знания геометрии, алгоритмов отрисовки и матричных операций.
  • Криптография. Знание алгебры, теории чисел и модульной арифметики пригодится при обработке и защите данных, создании криптографических протоколов и алгоритмов шифрования.
  • Финансовая технология. В финансовой сфере требуются знания стохастических процессов, теории вероятностей и математической статистики для моделирования рисков и разработки алгоритмов торговли.
  • Разработка игр. В Gamedev нужны алгебра, дискретная математика, тригонометрия и мат анализ. Еще неплохо было бы знать про кватернионы для описания вращения трехмерных с помощью четырех измерений.
  • А также робототехника и автоматизация, биоинформатика, разработка географических информационных систем (карты), разработка ПО для сетей и коммуникаций.

Где подтянуть знания по математике

Найти стоящую информацию по этому вопросу непросто, но мы выделили для вас несколько бесплатных ресурсов:

Кроме того вы всегда можете нанять репетитора и точечно усвоить те темы, что непосредственно понадобятся вам в работе.

7 советов для начинающих разработчиков

  • Ищите единомышленников
  • Будьте самостоятельны
  • Пользуйтесь бесплатными тренажерами
  • Читайте документацию
  • Изучайте и анализируйте код других программистов
  • Пишите комментарии к коду
  • Постепенно усложняйте свои проекты и задачи.

Где и как учиться

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

Самостоятельное обучение

(дома)

В таком подходе существует несколько очевидных плюсов: экономия денег и возможность самому распределять нагрузку и время, а также возможность сменить вектор обучения в любой момент. (Например, в процессе обучения вы поняли, что backend вам намного интереснее, чем frontend). Но когда ты учишься сам, то ты не получаешь мотивации извне, и если у тебя нет железобетонной силы воли, то обучение может занять 5 лет и больше. За это время 50% приобретенных знаний устареют и ты все также не будешь готов выйти на работу. Кроме того отсутствие ментора и обратной связи приводит к ежедневной необходимости самостоятельно находить и проверять качество материалов обучения.

Техникумы и вузы

(очно и заочно)

Колледжи и институты, техникумы и вузы, училища и университеты — все эти способы программирования подойдут вам, если:

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

Кроме того, далеко не каждый сможет поступить на бесплатное обучение, так что, возможно, придется раскошелиться на 300-400 тысяч в год. Если все-таки выбирать место обучения такого типа, то мы советуем рассмотреть:

  1. Университет Иннополис
  2. Московский физико-технический институт
  3. Национальный исследовательский университет «Высшая школа экономики».

Курсы и школы

(как online, так и ofline)

Если оценивать в нескольких словах, то плюсы обучения IT-специальностям на курсах и в школах такие: дешево, быстро, актуальные знания, нетворкинг, возможность online-обучения.

Да, да! Вы не ослышались — дешево. Через 3-10 месяцев обучения, затем 1-3 месяца поиска работы и 3 месяца работы вы сможете окупить все свои вложения.

А минусы — «дорого в моменте» и если не подойти серьезно к выбору школы, то вы получите «кота в мешке». Чтобы понять на что обращать внимание при выборе школы и курсов программирования, читайте эту статью.

Менторы

(вживую и по интернету)

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

  • Что-то капитально не понимаешь
  • Имеешь конкретную задачу
  • Готовишься к собеседованию.

И то, только после того, как сам попробуешь решить свои проблемы с помощью Google или Яндекс.

Стажировки с обучением

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

Ошибки начинающих айтишников

Не стоит опираться на книги. Книги — это классно и здорово, в них заложена база, но они устаревают быстрее, чем успевают выпускаться. Поэтому в философских и неизменных вопросах (например, по алгоритмическому мышлению) книги — это да, но в 80% случаев они будут вам полезны только летом от жужжащих насекомых. Однако для общего развития их читать все-таки нужно.

Совет: посвятите им 2-5% времени от всего обучения.

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

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

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

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

Совет: врывайтесь в IT-сообщества, спамьте вопросами в учебные группы, спрашивайте у менторов помощи. В IT-мире спрашивать — это хорошо! (Естественно, сначала максимально погуглите вопрос).

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

Нельзя забывать отдыхать. «Утро вечера мудренее» — это мантра, которую надо запомнить или повесить прямо перед компьютером! Мозг человека быстро устает при длительной концентрации и если ему не давать разгрузку, то он начнет сбоить или саботировать вас.

Совет: если вы учитесь с 9:00 до 19:00 каждый день, то делайте несколько небольших перерывов в обучении через каждые 30-40 минут, и пару-тройку раз устройте себе часовое баловство — подвигайтесь, помедитируйте, пообедайте, отвлекитесь на быт. А вечером выкиньте учебу из головы и наслаждайтесь жизнью.

Подборка бесплатных ресурсов 2023

Программирование для самых маленьких

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

* Преимущественно тренажеры и приложения идут на английском языке.

Полезные ссылки

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

«Многое узнать ты еще можешь, мой старый падаван. Это только начало» — Йода из «Звёздных войн»

И напоследок мы хотим вам пожелать: будьте терпеливы и не бойтесь делать ошибки!

Софья Пирогова

Софья Пирогова

автор статей / копирайтер
Георгий Бабаян

Георгий Бабаян

Основатель и CEO Эльбрус Буткемп