Как стать автором
Обновить

Путь разработчика: чему не учат в школе и университете, но вы все равно этому научитесь

Время на прочтение6 мин
Количество просмотров4.2K

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

Привет! Меня зовут Марина, я Java-разработчик в Red Collar, расскажу о первых шагах в разработке и как в этом может помочь университет. Делюсь своим опытом от первых шагов к разработке до работы на реальных проектах.

Первые шаги в разработке: поиск знаний

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

В это время общая картина находится словно в тумане — начинающий программист цепляется за то, до чего может дотянуться. Кто-то копается в модах на Minecraft. Кто-то верстает страницы и делает анимацию. Пробует, щупает, падает и встает, чтобы выбрать направление по душе. Процесс поиска, проб и ошибок может затянуться надолго, а кто-то будет готов работать джуном уже в 16 лет. Жизнь вносит свои коррективы, и работе мешает сначала школа, а потом и универ. Или не мешает? 

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

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

Разберем, какие знания и навыки на самом деле приобретает студент-программист a.k.a будущий джун в университете.

Декомпозиция задач: разбивайте монстров на подзадачи

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

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

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

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

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

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

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

Командная работа: школа и университет моделируют работу команды в коммерческом проекте 

Вспомните, когда одногруппники разбиваются на подгруппы по 3-4 человека и распределяют между собой вопросы к экзамену, чтобы быстрее подготовить список ответов или шпаргалки. И тот, кто лучше понял тему, объясняет ее на «человеческом» языке. 

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

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

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

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

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

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

Развитие своих проектов: демо-версия рабочих процессов

Курсовые и дипломные работы — это принудительные Pet-проекты (прим. «личные проекты»). Работа над ними дает студенту понимание общей картины, а не только отдельных частей, которые рассматривались на практических занятиях. 

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

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

Планирование и самоорганизация

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

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

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

Критическое мышление: преподаватели — не гуру

Не все советы хороши и не всякая информация актуальна. В школе и университете мы привыкли верить преподавателям, воспринимая их как источник истины. Но всем свойственно ошибаться. Практические работы — поле для экспериментов, поиска ошибок и истины.

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

Навык самообучения, или техника Фейнмана в действии

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

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

Эта идея — ядро техники самообучения Фейнмана, с которой стоит знакомить  людей с ранних лет: экономит кучу нервов и времени. Попытка объяснить материал кому-то систематизирует и закрепляет знания, обнаруживает в них пробелы.

«Любопытство — основное топливо»

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

Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии3

Публикации

Истории

Ближайшие события