Мифы о работе в IT и ошибки начинающих программистов

2020 · Эфир · HTML Academy

Один человек спрашивает, реально ли в 43 года выучиться на программиста и найти работу. Другому 28, и друг уже предупредил его: времени почти не осталось, взрослые джуны никому не нужны. Возраст разный, а тревога одна и та же.

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

Образование и задачи, которые предстоит решать

У меня нет ни технического, ни гуманитарного образования. При этом к моменту этого разговора, осенью 2020 года, я уже 20 лет работаю в вебе. Поэтому мне трудно согласиться с тем, что диплом определённого направления даёт право писать код, а без него начинать бессмысленно.

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

Это не значит, что математика не нужна программистам. Есть задачи, где без неё, алгоритмов и геометрии не обойтись. Но разработка интерфейса банка или интернет-магазина не обязательно начинается с изобретения нового алгоритма. Часто нужно разобраться в задаче компании, выбрать подходящее из известных решений и правильно его применить. Для такой работы техническое образование не является обязательным условием.

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

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

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

Не нужно сначала выучить весь фронтенд

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

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

Я не вижу чёткой границы между джуном, мидлом и сеньором, одинаковой для всех компаний. Но для меня различие прежде всего в опыте. Во время работы человек постоянно осваивает новые инструменты. Само увеличение их количества ещё не объясняет, почему ему можно поручить более ответственную задачу. Гораздо важнее, с какими ситуациями он уже сталкивался и умеет ли справляться, когда задача или условия меняются.

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

Я бы проверял готовность практикой. Рассказал бы о себе, посмотрел на заказы, попробовал взяться за подходящий. При этом нужно быть готовым добирать знания по ходу работы. У меня в начале на это уходило очень много времени: работал днями и ночами. По конкретным биржам фриланса я советовать не берусь — сам с ними почти не работал.

Возраст не заменяет знакомства с человеком

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

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

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

Что можно понять по цифрам рынка

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

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

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

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

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

Мне справедливо возражают, что и на лендинге Академии указана зарплата в 100 тысяч рублей. Мы берём её из исследования «Хабр Карьеры» и поясняем, откуда она взялась. Но я согласен: у человека всё равно может сложиться ожидание, что это предложение именно ему, сразу после выпуска. Ссылка на исследование не устраняет такого впечатления автоматически.

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

Практика нужна во время обучения

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

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

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

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

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

Код, который видит кто-то ещё

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

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

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

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

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

Есть и другая крайность — использовать людей вместо поисковика. Что-то не получилось, и ты сразу идёшь спрашивать, даже не попробовав разобраться. Я предлагаю сначала дать себе ограниченное время: поискать, попробовать несколько решений. Если не получается, прийти с вопросом. Самостоятельность не требует бесконечно скрывать затруднение.

Когда полезнее отойти от компьютера

Я вижу, как люди переживают из-за трудной задачи и продолжают пробовать одно и то же, хотя уже устали и давно не продвинулись.

Иногда полезнее сделать паузу. Прогуляться, приготовить еду, заняться чем-то другим. У наших студентов были истории, когда после сна они возвращались к задаче и понимали, как её решить. Я и сам с таким сталкиваюсь.

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

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

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

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

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

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

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

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

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

Есть и предложения, от которых я бы отказался. Например, в эфире рассказывают о компании, которая обещает много денег, но сразу предупреждает, что часто копирует чужие сайты. Мне такая работа не подходит. Мы сами столкнулись с копированием сайта «Лиги А». В итоге Серёжа Попов связался с руководителем той компании, и выяснилось, что тексты скопировал их копирайтер. Прежде чем соглашаться на заказ, стоит хотя бы разобраться, что именно от тебя хотят.

Почему стажировка зависит от заказов

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

Мы создали «Лигу А», чтобы выпускники наших профессиональных программ могли получить этот опыт на настоящих проектах. Это оплачиваемая работа с менеджерами, тестировщиками и заказчиками. У заказчика может быть плохое техническое задание или его может не быть совсем. Приходят правки, которых в учебном проекте не было. Сделанный сайт затем используют люди.

Но такая стажировка не начинается по одному нашему желанию. Для неё нужны заказы. Осенью 2020 года у нас стажируется около сотни человек, а число проектов выросло примерно с 5 до 40. Чтобы принять следующих выпускников, нужно продолжать находить работу для них.

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

Инструменты меняются, задача обучения остаётся

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

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

В эфире спрашивают, устарел ли var в тренажёрах JavaScript. К 2020 году разработчики давно предпочитают let и const, но var остаётся частью спецификации и продолжает работать. Его можно встретить в коде, хотя используют его всё реже.

С CMS вопрос похожий. Вакансии требуют их знания потому, что многим компаниям нужен сайт, на котором сотрудник сможет сам менять текст. WordPress решает такие задачи, у него есть пользователи и заказы. Но я бы не ограничивал своё развитие одной системой. Уметь применять её, когда она подходит, полезно; понимать вёрстку и разработку шире — тоже.