Как научиться программировать? Практическое руководство для начинающих
В зависимости от языка программирования и профессии, которую вы хотите получить, — ваш план будет меняться, но у каждого плана есть общие черты. Мы написали для вас универсальные рекомендации как научиться программировать, где искать нужную информацию и подсветили самые частые ошибки начинающих программистов.
Мы собрали для вас самые полезные поинты, чтобы ответить на популярные вопросы новичков и закрыть боли тех, кто не может для себя решить стоит ли ему «Войти в IT». Еще недавно — лет 10 назад путь начинающего программиста был страшным, неопределенным, долгим и одиноким. А сейчас у вас есть все необходимые ресурсы и готовый...
План
- Выбрать язык и профессию
- Выяснить, какие технологии вам нужно будет изучить
- Решить каким образом и с каким графиком вы будете учиться для достижения цели
- Выбрать IDE
- Зафиналить программу обучения. Освоить базу языка, Git, работу с консолью и необходимые технологии. Дополнить знания библиотеками и фреймворками
- Стать практиком, а не теоретиком
- Искать работу.
Чем больше узнаем мы, тем лучше понимаем, как много не знаем. — Магистр Йода
Пример плана для Web-разработчика
- Профессия и язык: Веб-разработчик. JavaScript
- Какие технологии вам нужно будет изучить: терминал, Git, HTML, CSS, Node.js, TypeScript, Express, React, Redux, SQL, ORM Sequelize
- Как вы будете учиться: офлайн буткемп в Москве 3 месяца с 9:00 − 19:00 по будням
- IDE: VS Code
- Ваша программа: подготовка + основная программа обучения
- Практика: сделать несколько проектов для портфолио, в том числе групповых.
- Поиск работы: составить с помощью кураторов грамотное резюме, провести тестовые технические интервью, откликаться на вакансии (чем больше, тем лучше) и ходить на собеседования.
Пример плана для Data Scientist
- Профессия и язык: Data Scientist. Python
- Какие технологии вам нужно будет изучить: терминал Unix систем, Git, jupyter, python, scikit-learn, catboost, xgboost, umap, statsmodels, keras, pytorch
- Как вы будете учиться: онлайн буткемп 15 недель с 9:00 − 18:00 с понедельника по пятницу
- IDE: JupyterLab/Jupyter Notebook и VS Code
- Ваша программа: самостоятельная подготовка + пре-курс + основная программа обучения
- Практика: участие в командных проектах «Предсказание дефолта клиента банка по истории транзакций» и «Сервис-классификатор изображений»
- Поиск работы: нужно будет выделить сферу, в которой захочешь работать и совместно с куратором составить стратегию поиска работы, сделать эффективное резюме, подготовиться к собеседованиям и начать отсылать отклики потенциальным работодателям.
Нужна ли математика программистам
Не все профессии в программировании требуют углубленных знаний в математике. Некоторые разработчики могут работать в областях, где практическое применение математики относительно незначительно, например:
- Разработка веб-приложений
- Создание приложений для мобильных устройств
- Разработка под Интернет вещей
- Разработка баз данных (на начальных уровнях).
Если говорить о профессиях, то это могут быть: тестировщики, 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 тысяч в год. Если все-таки выбирать место обучения такого типа, то мы советуем рассмотреть:
- Университет Иннополис
- Московский физико-технический институт
- Национальный исследовательский университет «Высшая школа экономики».
Курсы и школы
(как online, так и ofline)
Если оценивать в нескольких словах, то плюсы обучения IT-специальностям на курсах и в школах такие: дешево, быстро, актуальные знания, нетворкинг, возможность online-обучения.
Да, да! Вы не ослышались — дешево. Через 3-10 месяцев обучения, затем 1-3 месяца поиска работы и 3 месяца работы вы сможете окупить все свои вложения.
А минусы — «дорого в моменте» и если не подойти серьезно к выбору школы, то вы получите «кота в мешке». Чтобы понять на что обращать внимание при выборе школы и курсов программирования, читайте эту статью.
Менторы
(вживую и по интернету)
Необычный способ, но им часто пользуются когда уже есть какие-то навыки программирования, чтобы успешно пройти собеседование. В этом случае ментор может выявить пробелы в ваших знаниях и «поднатаскать» вас для прохождения технического интервью. Начинать же с нуля или вести полноценное обучение с ментором немного не выгодно ни по временным аспектам, ни по денежным. К менторам нужно обращаться тогда, когда:
- Что-то капитально не понимаешь
- Имеешь конкретную задачу
- Готовишься к собеседованию.
И то, только после того, как сам попробуешь решить свои проблемы с помощью Google или Яндекс.
Стажировки с обучением
Этот способ также больше подойдет тем, кто уже имеет базу, учится в университете или прошел курсы, но хочет шагнуть выше. Приготовьтесь к усердной работе, вам нужно будет устроиться в очень крупную и известную компанию. Проявите себя и вас заметят, а даже если и нет, то стажировка в крупной компании даст вам бонусы при поиске работы вашей мечты.
Ошибки начинающих айтишников
Не стоит опираться на книги. Книги — это классно и здорово, в них заложена база, но они устаревают быстрее, чем успевают выпускаться. Поэтому в философских и неизменных вопросах (например, по алгоритмическому мышлению) книги — это да, но в 80% случаев они будут вам полезны только летом от жужжащих насекомых. Однако для общего развития их читать все-таки нужно.
Совет: посвятите им 2-5% времени от всего обучения.
Не пытайтесь освоить все и сразу. «Торопыжка был голодный, проглотил утюг холодный» — цитата из книги «Приключения Незнайки и его друзей» как нельзя лучше иллюстрирует печальность подхода, когда хочешь сразу стать мастером всех языков, библиотек и фреймворков. Составьте себе программу и планомерно двигайтесь по ней. Совершенно невозможно предугадать весь спектр задач, проблем и ошибок, с которыми вы столкнетесь в коде.
Вы избегаете практики — не надо так. Существует стереотип, что теоретики — учат, а практики делают настоящие дела. В случае с программированием не возможно будет кого-то чему то научить, если полностью не погрузиться в море кодирования и обуздать волну ошибок так, чтобы любой баг вам было под силу исправить (ну или закомментить).
Откроем секрет — почти каждому состоявшемуся программисту так же страшно каждый раз открывать свой ноутбук и решать задачу, которую он ранее не решал. Но в том и суть настоящих айтишников — они легализуют риск и пробуют, и пробуют… и пробуют… до получения нужного результата.
Решать все проблемы самому — дурной тон. Желательно тратить на глобальную проблему в коде не больше двух дней, если вы зависли — обратитесь к старшим, возможно ваша проблема решается в два клика, или свежий взгляд заметит лишний символ, который все портил.
Совет: врывайтесь в IT-сообщества, спамьте вопросами в учебные группы, спрашивайте у менторов помощи. В IT-мире спрашивать — это хорошо! (Естественно, сначала максимально погуглите вопрос).
Отсутствие системности и творческий хаос — не союзники начинающему программисту. Вы можете работать ночами, неделю ничего не делать, а потом за один день написать 10 тысяч строк рабочего кода. Но это потом, когда вы уже станете IT-специалистом, а сначала вам нужно будет утрамбовать зеттабайты информации в голове, систематизировать их и поменять мышление. Поэтому вам нужен четкий план с временными рамками.
Нельзя забывать отдыхать. «Утро вечера мудренее» — это мантра, которую надо запомнить или повесить прямо перед компьютером! Мозг человека быстро устает при длительной концентрации и если ему не давать разгрузку, то он начнет сбоить или саботировать вас.
Совет: если вы учитесь с 9:00 до 19:00 каждый день, то делайте несколько небольших перерывов в обучении через каждые 30-40 минут, и пару-тройку раз устройте себе часовое баловство — подвигайтесь, помедитируйте, пообедайте, отвлекитесь на быт. А вечером выкиньте учебу из головы и наслаждайтесь жизнью.
Подборка бесплатных ресурсов 2023
Программирование для самых маленьких
Если у вас нет машины времени, то вы, однозначно, заботливый родитель, которому хочется дать ребенку самое лучшее! Вариантов для обучения детей программированию предостаточно:
- Работа с преподавателем 1 на 1: поищите репетиторов на profi.ru, также можно обратиться в местную школу и взять несколько уроков у преподавателя информатики
- Офлайн школы: делятся на два вида — дополнительное образование или полноценная школа, но с IT уклоном.
- Онлайн-курсы и школы: Skysmart Pro, PIXEL, PROGKIDS.
- IT-лагеря: Top-academy, Coddy, PIXEL, Cyber Class
- Онлайн-тренажеры: CodeMonkey, Swift Playgrounds
- Приложения-игры: LightBot, Пиктомир, Scratch, CodeCombat.
Полезные ссылки
Перед тем как войти в процесс обучения айтишным премудростям, мы советуем вам прочитать наши статьи о том, как эффективно распоряжаться своим временем и как не выгореть. А также вам будет полезно почитать:
- Путеводитель по профессиям Data Science
- Python с нуля: с чего начать изучение?
- Топ 25 самых популярных книг для программиста
- Парт-тайм и фулл-тайм буткемп: в чем разница?
- Как устроен буткемп и кому он подходит
- Что такое frontend и backend разработка
«Многое узнать ты еще можешь, мой старый падаван. Это только начало» — Йода из «Звёздных войн»
И напоследок мы хотим вам пожелать: будьте терпеливы и не бойтесь делать ошибки!