Опытные разработчики часто жалуются, что новичкам не хватает «базы». По их мнению, в программисты идут люди без профильного образования, что ведёт к общей деградации. Правы ли они? И что представляет собой эта «база»? Давайте разберёмся, какие навыки необходимы для успешной карьеры в IT-сфере и обязательно ли для их приобретения получать профильное высшее образование. А также приглашаем в комментарии для дискуссий.

Что такое база для айтишника

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

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

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

Хард-скиллы

Софт-скиллы

Знание языков программирования

Умение писать понятный код

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

Умение работать с базами данных

Умение работать с библиотеками

Математические знания

Умение эффективно отлаживать код

Критическое мышление

Способность к обучению, особенно к самообучению

Умение вести переговоры

Эмоциональный интеллект

Навыки тайм-менеджмента

Самоанализ и саморефлексия

Работа в режиме неопределённости

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

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

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

  • Алгоритмика. Эта область знаний позволит выстраивать план действий наиболее эффективным способом. Разработать сложное приложение без понимания работы алгоритмов невозможно.

  • Математика и математический анализ. Эти знания пригодятся для оценки эффективности разных подходов и оптимизации решений.

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

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

  • Структуры баз данных. Понимание того, как работают структурированные запросы, необходимо практически всем участникам разработки: от аналитиков до тестировщиков. Многих работодателей устроят начальные знания SQL, но без понимания принципов работы шансы успешного трудоустройства будут стремиться к нулю.

Вот несколько книг, которые позволяют развить базовые навыки для работы в IT:

  • «Идеальный программист. Как стать профессионалом разработки ПО», Роберт Мартин — содержит практические советы по всем аспектам программирования: от оценки проекта и написания кода до рефакторинга и тестирования;

  • «Чистый код. Создание, анализ и рефакторинг», Роберт Мартин — описывает, чем плохой код отличается от хорошего, даёт общие практические советы о том, как писать хороший код;

  • «Искусство программирования», Дональд Кнут — фундаментальный и заумный манускрипт, который даёт базу по алгоритмам и основам программирования;

  • «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих», Адитья Бхаргава — в отличие от предыдущей книги, идеально подходит для новичков, самоучек, студентов, выпускников и помогает разобраться в алгоритмах в целом;

  • «Чистая архитектура. Искусство разработки программного обеспечения», Роберт Мартин — объясняет ключевые принципы проектирования систем, мотивирует на создание чистой архитектуры;

  • «Карьера программиста», Г. Лакман Макдауэлл — поможет подготовиться к техническому интервью;

  • «Экстремальное программирование. Разработка через тестирование», Кент Бек — поможет повысить производительность с помощью методики TDD (test-driven development — разработка, основанная на тестировании) и получать удовольствие от программирования;

  • «Паттерны объектно ориентированного проектирования», Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — описывает простые и изящные решения типичных задач, возникающих в объектно ориентированном проектировании.

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

Никита Головастиков

Доцент кафедры технической кибернетики Самарского университета, кандидат физико-математических наук

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

По данным сервиса hh.ru, наиболее важные критерии при оценке кандидата рекрутерами — знание стека технологий и опыт работы. Также оценивают наличие успешных кейсов и личные качества. Но оценить последние по резюме зачастую проблематично — 40% рекрутеров отказывают кандидатам из-за личных качеств уже после собеседования. Интересно, что отсутствие высшего образования является препятствием лишь для 18% рекрутеров.

Георгий Вощук

Менеджер разработки в Контуре

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

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

Также важны навыки командной работы. Прошло то время, когда можно было запереться у себя в комнате и в одиночку запилить востребованный продукт. Сейчас необходимо уметь делиться, общаться, помогать и делать вместе. Можно ли научиться самостоятельно? Да, фановые совместные проекты, помощь опенсорс-сообществу — вариантов полно.

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

Как обзавестись базой

Высшее образование

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

Елена Рыбинская

Руководитель образовательных проектов в Контуре

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

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

Дамир Рысаев

Программист в Здравсити

Можно поступать на программиста не только в вуз, но и в колледж. У меня есть знакомые, которые отучились в колледже на администратора баз данных, а в итоге оба работают фронтендерами. Классическое очное образование даёт широкий кругозор. Вы не будете углубляться в условный фронтенд или изучать то, что там изменилось в последней версии фреймворка, но фундаментальные знания точно получите. Также некоторые онлайн-школы сейчас сотрудничают с вузами и колледжами. В таком случае можно получить не только фундамент, но и практические навыки.

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

Курсы

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

Курсы сегодня — один из основных способов войти в IT. На рынке онлайн-образования более 50% студентов выбирают профессии, связанные с высокими технологиями. 48% выпускников действительно устраиваются по полученной профессии.

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

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

Самообучение

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

Дамир Рысаев

Программист в Здравсити

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

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

Практика

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

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

Хорошей площадкой для оттачивания навыков станут pet-проекты, волонтёрские инициативы или стажировки. Pet-проект — это разработка собственного софта для решения насущных вопросов: таймера для готовки или небольшой игры в любимом сеттинге. Найти волонтёрские программы, нуждающиеся в помощи начинающего айтишника, можно на тематических агрегаторах, например на платформе помощи НКО IT-волонтёр. Для поиска стажировок стоит время от времени шерстить hh.ru и подписаться на ресурсы крупных IT-компаний, многие из которых регулярно открывают обучающие программы для желающих.

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

Никита Головастиков

Доцент кафедры технической кибернетики Самарского университета, кандидат физико-математических наук

Карьеру можно сделать всегда, хотя вуз повышает шансы на успех за счёт более широких базовых знаний и системного подхода в изложении, в отличие от IT-курсов в компании. Цель таких курсов, как правило, — подготовить новых сотрудников для решения очень конкретной задачи очень конкретным способом на том стеке, с которым работает компания, в той парадигме, которую сама сочла оптимальной. Безусловно, это тоже полезно, но перед уходом в частности нужно иметь общий бэкграунд.

Так ли важно формальное высшее образование

Иногда диплом о высшем образовании играет важную роль, а то и вовсе необходим.

При поиске первой работы

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

Георгий Вощук

Менеджер разработки в Контуре

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

При работе в крупных корпорациях и государственных учреждениях

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

При работе на зарубежные компании

В качестве фрилансера работать на зарубежного работодателя можно и без диплома. А вот если вам захочется переехать в одну из развитых стран по приглашению работодателя, придётся подтвердить свою ценность как специалиста документом о высшем образовании. Например, для получения EU Blue Card, позволяющей работать в большинстве стран Евросоюза, потребуется предъявить диплом о профильном высшем образовании.

Никита Головастиков

Доцент кафедры технической кибернетики Самарского университета, кандидат физико-математических наук

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

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

Подведём итоги

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

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

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

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

Ближайшие курсы по программированию:

Бесплатные курсы, занятия и мероприятия:

Комментарии (12)


  1. xanderxanderfto
    23.11.2023 12:47
    +3

    Если у человека есть высшее образование, значит он, скорее всего, умеет учиться много и быстро - это несомненное преимущество


    1. mc2
      23.11.2023 12:47
      +1

      У меня на курсе были такие, что просто умели договориться. А вот учиться, и тем более быстро, это не к ним.


      1. Source
        23.11.2023 12:47
        +1

        Ну, таким надо в ПМы идти)


    1. ssmaslov
      23.11.2023 12:47

      ...высшее образование полученное в одном из топ-20 ВУЗов. В остальных может говорить а может не говорить. В статье выше много ложных утверждений. Матан и линейка нужны чтобы потренировать мозги и отсеять не умеющих учиться. За 30 лет после ВУЗа не особо что пригодилось, для того чтобы O(n) от O(n*logn) отличить особого исследования функций не надо, достаточно общих соображений. Ну сейчас для DSов конечно побольше нужно математики, но тоже не 80 уровня :-) А условному фронтэнд разработчику другиеинавыки и умения нужны


  1. dimas846
    23.11.2023 12:47

    Добавлю еще сюда необходимость знания инструментов: работа в терминале- ssh, scp, умение подключиться к mysql серверу и т.п., GIT, знать фичи своей IDE. И конечно экосистема языка на котором работаешь: composer, npm и.т.д..


    1. DvoiNic
      23.11.2023 12:47
      +4

      Скорее, нужно знание о том, что есть терминалы, системы версионирования, утилиты администрирования БД. (что это, какие, принцип использования, какие они есть, некоторая практика с любым инструментом). А уж конкретную на преприятии/в экосистеме инструменталку уже изучать на месте.


    1. MrNutz
      23.11.2023 12:47

      Ключевое это правильно настроенные мозги, т.е. мышление. Для этого надо правильные задачи решать, т.е. правильные дисциплины изучать. Не даром ведь те же типо ИИ обучают на специально подготовленных данных.


  1. iruirc
    23.11.2023 12:47
    +6

    Есть два типа программистов. Те, которые не читали Кнута. И те, которые врут.


    1. Source
      23.11.2023 12:47
      +1

      Хоть я и читал первые 2 тома, но соглашусь, что это сейчас уже чересчур низкоуровнево для большинства программистов. Я бы вместо него добавил в этот список: "Совершенный код" Макконнелла.

      Да и вместо GoF можно "Шаблоны корпоративных приложений" Фаулера, и "Рефакторинг" от него же не помешает.


  1. Nialpe
    23.11.2023 12:47
    +2

    база для командной работы (и не только в IT) - это умение формулировать "мои мысли - мои скакуны" в устную и письменную речь.


  1. eugenekoiner
    23.11.2023 12:47
    +1

    математика вообще не нужна чтобы стать программистом говорили они


  1. Pavel_nobranch
    23.11.2023 12:47

    В текущих реалиях джуну надо ещё доказать что он сам писал свой код на гитхаб и сам выполнял тестовое задание. Видимо накрутчики опыта начинают прожаривать компании. Придумал новое название накрутчикам. Офферисты - люди готовые на все ради оффера)