YOUNG

5 навыков программистов, которые пригодятся каждому

YOUNG
Сергей Шашков
Сергей Шашков

Руководитель направления «Программирование» Учи.ру

Анна Меликян

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

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

Пять навыков программистов

Аналитический подход

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

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

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

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

Работа в команде

Образ нелюдимого «программиста со странностями» постепенно уходит в прошлое. Современное общество требует от разработчика открытости, общительности, умения работать в команде, находить общий язык с коллегами, доносить и аргументировать свою точку зрения, слушать других, вырабатывать совместные решения, правильно просить помощи (и даже правильно отказывать в ней). Это напрямую связано с тем, что в основном программисты работают в командах. Без soft skills такая работа невозможна. 

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

Модульное тестирование

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

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

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

Умение читать чужой код

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

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

Умение писать простой рабочий код

Очевидно, что написание рабочего кода — основной навык в программировании. Но важно также, чтобы код был максимально простой. 

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

Выбор языка программирования

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

Младшие школьники уже могут садиться на специальные языки, созданные для юных разработчиков — например, Scratch, Swift. Начиная со средней школы, можно переходить на общепринятые языки Python, Java, C++,

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

  • Например, школьнику, который увлекается играми, будет интересно взяться за язык для их разработки. Первыми могут быть Python, Java или JavaScript (последний также подойдет для того, кто интересуется приложениями на смартфонах).
  • Ребятам, любящим роботов, может быть полезна Lua. А дети, которые хотят попробовать себя в разработке сайта, могут начать с разметки HTML и стилизации CSS. 

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

И совершенно не стоит бояться, что если ребёнок в 10 лет начал изучение «не того» (по вашему мнению) языка, у него не будет будущего в большом программировании. Конечно, языки  отличаются, но все они имеют общую базу и смысл, поэтому первый выбор не столь критичен. Намного важнее заинтересовать и закрепить навык. К тому же, еще через 10 лет набор популярных языков может измениться снова. 

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


Ярослав Маркин, сооснователь компании «Злые марсиане»

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

Например, можно работать с «умным домом», робототехникой — словом, Arduino. Здесь вместо обычной похвалы юный программист или программистка смогут добиться реально работающей системы, которой можно будет пользоваться каждый день. Можно сделать plug-in или расширение для любимой игры на ПК (Python, Lua), загрузить его на фанатский сайт с похожими плагинами и получить отзывы от реальных пользователей. Нередки игровые или мобильные проекты, которые запускают в настоящих магазинах приложений совсем молодые программисты и программистки (Swift, Kotlin, C#).

Наконец, можно попробовать свои силы в open source, чтобы начать как можно быстрее привыкать к критике своей работы: в обучении без этого никуда. В конце концов, самый молодой контрибьютор Linux — четырехлетняя девочка (не без помощи отца, конечно). 

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

Дмитрий Грин, CEO и сооснователь карьерного ИТ-акселератора Almamat

Опросы в HR-среде показывают, что программисту для успешной карьеры необходимы гибкие навыки – это уже не дополнительный бонус, а обязательное требование. Причем такой запрос возникает на раннем этапе — пока человек еще учится или стажируется. Но пока soft skills редко включают в образовательную программу. Раньше считалось, что специалист компенсирует проблемы с коммуникацией своими техническими навыками. Но это не так. Во-первых, программистов становится все больше – конкуренция растет. Во-вторых, разработчики все чаще работают в тесной связке с другими специалистами, и оставаться «замкнутыми гениями» уже не получается.

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

Другая категория гибких навыков в IT, которую нужно прокачивать с раннего возраста, — это адаптивность. Нужно умело менять стратегию, быстро перестраиваться, находить решение в сложной ситуации. Технологии в IT постоянно меняются, причем радикально и неожиданно — вчера все говорили об отдаленной перспективе автоматизации, а сегодня в тренде уже No code, при котором писать код не нужно — достаточно грамотно сконфигурировать параметры.

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

Фото на обложке: Unsplash

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Материалы по теме

  1. 1 Онлайн-лекции‌ ‌по‌ ‌спортивному‌ ‌программированию:‌ ‌подборка‌ ‌от‌ ‌ICPC‌ ‌
  2. 2 «Я сам изучал искусственный интеллект перед хакатоном». Подросток об увлечении программированием
  3. 3 Как познакомить ребенка с программированием без компьютера
FutureFood
Кто производит «альтернативную» еду
Карта