Русский
Русский
English
Статистика
Реклама

Junior

А ты точно senior? или ожидания продуктовых компаний

07.01.2021 14:19:53 | Автор: admin

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

В общем если вы занимаетесь WEB разработкой хотите понять свой уровень, или стоите на страже компании и не до конца понимаете как понять уровень кандидата добро пожаловать под кат.

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

Для себя я выделил два основных направления - аутсорс и продуктовые компании.
Для аутсорс важнее широкий спектр технологий с которыми сталкивался кандидат.
В продуктовой будет важнее глубокое понимание технологий и принципы написания поддерживаемого кода.

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

Итак первое знакомство с кандидатом - резюме

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

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

На чем акцент: технологии или подходы, задачи которые решал или технологии которыми пользовался.

Красным флагом могут быть:
частая смена проектов
большие количество проектов с CMS
пустое перечисление ключевых слов от CSS до IDE.

Если будет интересно к теме хорошего оформления резюме как-нибудь вернемся.

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

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

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

Под таблицей есть спойлер с картинкой если на вашем экране таблица поползла)

Junior

Middle

Senior

Архитектура приложений

Есть базовое понимание принципов ООП

Слышал про SOLID

Может придерживаться соглашений проекта и прослеживать аналогии

Знает пару паттернов

Хорошо понимает SOLID

Слышал про GRASP

Знает про модульную архитектуру

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

Знает основные подходы к проектированию приложения(CQRS,ES,Modular,SOA)

Хорошо понимает как предупредить каскадные изменения

Может рассуждать про метрики качества кода

Знает паттерны вне GOF

Код

Знает базовые конструкции языка

С помощью гугла может решить основные задачи

Знает основные возможности языка, ряд популярных дополнений/библиотек

Может решить сложные задачи и направить Junior разработчика

Может грамотно построить структуру проекта

Код понятен легко читаем без лишнего усложнения

Структуры данных/алгоритмы

Знает какие есть структуры данных

Может подобрать подходящую для простых случаев

Может написать простой алгоритм, посчитать его сложность

Хорошо понимает структуры данных, в каком случае какую выбрать

Может выбирать, создавать сложные алгоритмы

При выборе алгоритма и структуры данных размышляет про эффективность выбора в разрезе RAM/CPU

Реляционные базы данных

Может строить простые запросы(выборки, простые джоины)

Понимает что такое индексы

Может построить отношения между таблицами

Может строить сложные запросы(сложные джоины, подзапросы, агрегации)

Понимает как построить оптимальные индексы

Может профилировать запросы, знает explain

Может спроектировать простую структуру базы данных

Понимает как работать с большими таблицами

Знает про репликацию

Может построить сложную структуру базы данных(шардинг, денормализация)

Знает ограничения и возможности популярных баз данных

Понимает ограничения CAP, PACELC

Безопасность

Слышал основные уязвимости

Знает основные OWASP уязвимости и как их предотвращать

Знает ряд техник для мониторинга, предотвращения уязвимостей.

Понимает как действовать при атаке

Тестирование

Есть базовое понимание для чего и как писать юнит тесты

Понимает различия между разными видами тестов

Может эффективно их писать

Понимает как избегать хрупких тестов

Знает разные подходы к написанию тестов(TLD, TDD)

Может рассуждать о пирамиде тестирования

Знает что дает и как создать нагрузочное тестирование

Как плюс знает AB тестирования

API

Знает базовые методы HTTP

Слышал про RPC,REST

Хорошо понимает принципы проектирования API

Знает какие есть варианты авторизаций

Знает основные подходы стандартизации/версионирования API

Может выбрать тип авторизации для проекта

Очереди/ Шина сообщений

Понимает зачем они и как работать на уровне интерфейса языка/библиотек

Понимает разницу между очередью и шинной данных

Знает основные проблемы воркеров и как из предотвращать (утечки памяти, перезапуск, мониторинг)

Знает основные решения по настройке, мониторингу очередей

Может выбрать подходящий брокер

Спроектировать подход к обработке данных (очередь, пайплайн, асинхронный ответ)

Многопоточность/ Асинхронность
Если поддерживает язык

Владеет на уровне интерфейса языка

Знает как работать с многопоточностью
(блокировки, синхронизация)

Знает как работать с асинхронностью

Понимает что такое итоговая согласованность

Когда и как лучше распараллелить процесс

Кеширование

Может работать на уровне интерфейса языка/библиотеки

Догадывается когда использовать

Знает как организовать кеш, какие бывают проблемы

Хорошо знаком с проблемами нагруженного кеша(прогрев, волна запросов, конкурентный доступ)

Инфраструктура/Сети

Знание базовых команд операционной системы

Знает какие этапы проходит запрос перед тем как попасть в приложение

Знаком с одним из средств виртуализации

Понимает какие вещи и как нужно настроить для продакшн среды

Понимает виртуализацию и контейнеризацию

Знает базовые сетевые протоколы TCP, UDP, HTTP, HTTPS

Понимает как устроена сеть DNS, NAT, OSPF, BGP, RIP

Знает как балансировать нагрузку(включая необходимость попадания данных на тот-же сервер)

Хорошо понимает принципы работы CDN и как решать базовые проблемы

Знает ограничения текущей платформы, как их обойти

Метрики/логи

Знает зачем логи, как их писать

Знает варианты сбора логов

Понимает зачем проекту мониторинг, как им пользоваться

Может выбрать необходимые метрики

Знаком с рядом вариантов сбора метрик/логов

Способен настроить алертинг, сбор необходимых метрик

Желательно знакомство с TSDB

CVS/ Релиз процесс

Понимает зачем нужна CVS

Может выполнять базовые операции CVS

Может рассказать как сделать простой релиз через CVS и SSH руками

Хорошо знает команды CVS

Знает пару фреймворков построения процесса

Знает как работает CI

Может построить CI процесс, знает какие для этого есть инструменты

Хорошо знает подходы к ветвлению, может выбрать подходящий

PNG

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

Подробнее..

Pet-проект для джуна. Или зачем и как выбрать pet project. (личный опыт)

23.02.2021 14:15:47 | Автор: admin

Предисловие

Привет Хабр! Эта публикация написана джуном для джунов (но возможно и специалисты более высокого уровня что-то найдут для себя / своих падаванов).

Зачем нужны pet проекты?

Для саморазвития как разработчика и закрепления изученного материала.

Если Вы днями на пролёт "штурмуете" теорию: читаете посты, смотрите туториалы, но при этом не применяете изученное на практике, то времени на освоение выбранной Вами темы понадобится в разы больше.

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

Для джуна без постоянного места работы, pet проект заменяет тут самую работу (со стороны разработки). Вы ставите себе задачу/цель и делаете всё возможное что бы её выполнить. При разработке Вы ещё глубже погружаетесь в тему, а иногда находите новые объекты для изучения.

Суммируя pet проекты нам нужны для:

  • изучения / закрепления нового материала;

  • получения удовольствия от разработки чего-то интересного лично Вам;

  • пополнения своего портфолио;

  • (bonus) есть шанс что Ваш pet проект может кому-то приглянуться и тогда из этого можно получить финансовую выгоду.

Как выбрать и на что обратить внимание?

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

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

Технологии

Раз Вы выбрали определенные технологии для своего домашнего проекта, то скорее всего они Вас интересуют и проблема приведенная выше Вас не касается. (Или же Вас заставляют писать на том что Вам отвратно?)

Дизайн

Тут все зависит от человека и ситуации. Есть два варианта:

  1. Запариться и сделать крутейший дизайн.

    Плюсы:

    • lvl up как дизайнера;

    • обычно свой дизайн очень приятен;

    • так как это собственный макет Вы в нём хорошо ориентируетесь и ещё на этапе дизайна продумываете некоторые фичи.

    Минусы:

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

  2. Найти готовый дизайн и работать с ним.

    Плюсы:

    • быстро (хотя поиск может затянуться, об этом ниже);

    • не нужно отвлекаться на дизайн.

    Минусы:

    • не всегда можно найти дизайн для Вашей задумки, особенно если она не типичная;

    • готовые бесплатные макеты не всегда красивые.

Идея

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

Вот пару вечно актуальных примеров:

  • список задач;

  • список задач;

  • менеджер покупок;

  • сайт портфолио;

  • кино сайт;

  • калькулятор;

  • блог;

  • магазин чего-либо.

Личный опыт

В этом блоке я раcскажу как придумывались / создавались мои pet проекты.

Начало (AniList)

Шёл июль 2020 года. Спустя семестр изучения JavaScript'а в колледже я решил изучить какой-то фреймворк. Выбор пал на React. Через пару дней ознакомления с фреймворком я наткнулся на серию видеороликов по разработке веб-приложения пиццерии на ютуб канале Archakov Blog. И решил сразу же применять изученное в видео на реальном проекте, но просто переписывать код из видео в IDE было не интересно. По этому я решил делать аниме список.

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

Скриншот проекта из FigmaСкриншот проекта из Figma

По готовому макету я понял что мне нужно будет где-то брать информацию об аниме (API, AJAX), где-то хранить её (Redux), а также как-то организовать авторизацию и хранение информации о пользователях (Firebase) + работа с версиями файлов(GIT, GitHub). В итоге мне предстояло ознакомиться как минимум с 5 новыми технологиями помимо React.

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

ToDo list

Дизайн ToDo appДизайн ToDo app

Следующим проектом должен был стать todo list. Мой одногруппник (тоже начинающий фронтендер) должен был делать frontend на Angular, а я (неожиданно) backend. Тут мне пристояло погрузиться в мир backend'а и может не изучить, но хорошо так ознакомиться с NodeJS, Express, MongoDB, mongoose, cors, dotenv, способами авторизации, деплоем на Heroku и ещё глубже понять работу API.

По итогу вышло так что и я и мой товарищ каждый для себя писали back и front end.

Остальное

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

Приложение погоды:

  • рисование на canvas'е;

  • работа с геолокацией;

  • анимация React компонентов.

Shedaily (front & back end) - приложение которое парсило расписание из сайта колледжа где я учусь и приводило его в приятный вид:

  • парсинг информации из сайта;

  • работа с Excel таблицами в NodeJS.

Terminal website - вдохновившись сайтом dodo.dev создал сайт с контактами:

  • SCSS;

  • Gulp.

Менеджер подписок:

  • MobX;

  • переключение темы.

Магазин аксесcуаров (backend) (в разработке):

  • более глубоко познал MongoDB + mongoose;

  • GraphQL.

Портфолио (на стадии дизайна):

  • JAM stack;

  • Gatsby;

  • создание кастомного курсора.

Заключение

Недавно меня постигла идея переписать свой первый pet project (Аниме список), но теперь с новыми навыками: backend на NodeJS, Express, GraphQl вместо Firebase, и frontend React + Apollo Client, ну и дизайн по красивше сделать. Эта мысль является результатом моего прогресcа который я постиг благодаря pet проектам.

Всякое дело совершенствуется овладением техники. Всякий навык достигается упражнением. - Гиппократ

Подробнее..

От студента до учителя как разобраться в веб-разработке, если это не твой профиль

21.04.2021 20:21:36 | Автор: admin

Хоть кому-то и может показаться, что веб-разработчик это суровый технарь (айтишник же!), вход в эту профессию не сложнее, чем вPython. В неё часто переходят бывшие педагоги, юристы, бухгалтеры и другие гуманитарии. О том, с чего начать обучение, какие ошибки допускают новички, как освоиться в профессии и стоит ли самостоятельно учиться, рассказывает преподаватель веб-разработки в GeekBrains Алексей Кадочников.

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

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

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

Конечно же, 8 вечера это не панацея. Главное оптимизировать график, чтобы эффективно совмещать обучение и работу. Когда я переучивался на разработчика (об этом расскажу дальше), ставил будильник на шесть утра, занимался, завтракал и ехал на работу.

Кто переучивается на разработчика

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

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

Мне самому пришлось сменить специальность. Восемь лет назад, когда я окончил университет, оказалось, что на рынке по специальности Вычислительные машины, комплексы, системы и сети всего 8 вакансий. Для четырех из них мне не хватало опыта, а по ещё четырём мне не перезвонили. В результате устроился инженером на завод и через несколько месяцев работы понял, что это не то, чему я хочу посвятить жизнь. Тогда яс нуляпрошелкурсы веб-разработкии нашёл работу по их окончанию. СейчасяFront-end developerвMail.ru GroupипреподаювGeekBrains.

Еще один пример мой студент Павел Литвин. Он не доучился в ВУЗе на безопасника, работал менеджером по продажам, потом в SEO, в конце концов выучился фронтенд-разработке и стал зарабатывать в4 раза больше, чем до курсов.И таких историй множество.

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

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

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

Самостоятельное обучение

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

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

Еще одна частая проблема самостоятельногообучения веб-разработке с нуляосвоение устаревших технологий. Мне приходилось переучивать студентов, выучивших неактуальную информацию. Есть вещи, которые уже не применяются, оптимизировались и их нужно удалить из памяти или перенастроить. Например, раньше в верстке для перемещения элемента использовалась командаfloat left, но это довольно громоздкое и сложное решение. Затем вместо него начали использоватьdisplay: flex. Теперь и этот метод успел устареть и теперь актуаленdisplay: grid. Внешний вид от всех этих способов будет одинаковым, но последнее решение изящнее и быстрее в реализации.

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

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

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

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

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

Я устраивался на работу много раз, переезжал между городами и даже странами СНГ. За всё время про диплом о высшем образовании у меня спросили всего дважды. Поэтому я бы не сказал, что это дает какое-то преимущество перед другими соискателями. На собеседованиях проверяют технические знания. Если их нет, никакой диплом не спасет.

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

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

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

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

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

  • Junior-frontendдолжензнатьhtml + css + js + react.

  • Junior-fullstack: html + css + js + php +базыданных.

  • Middle frontendразработчик: html + css + js + react + vue + node.js +команднаяразработка.

  • Middle-fullstack: html + css + js + react + php + laravel +базыданных+команднаяразработка.

Обучение веб-разработкена наших курсах длится от 5 месяцев. За это время можно получить базу junior-фронтенда. Чтобы изучить технологии, нужные для миддл-фронтенда, понадобится год. Освоение навыков миддла и для фронтенда, и для бэкенда требует 1,5 года. А дальше нужно идти в бой и набираться опыта, чтобы подтвердить этот статус в реальной работе.

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

Как устроиться на работу и что от нее ожидать

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

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

Джуну на первой работе можно рассчитывать на 4060 тысяч, миддл зарабатывает от 100150 тысяч. По сути, зарплата может быть и 200250 тысяч, но чтобы знаний хватило на зарплату миддла, нужно прилежно учиться не меньше полугода-года.

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

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

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

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

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

Подробнее..

История о том, как я иду к должности JS разработчика через обучение на курсах в Skillbox

21.06.2021 14:12:41 | Автор: admin

Как пришел я к тому чтобы вообще начать учить JS

В 2019 году, 1 сентября, в дождливый осенний день, я решил навсегда завязать с прошлым. Последние 5 лет работы менеджером не приносили удовольствия и не несли перспектив. Увольняюсь с должности менеджера вино-торговой компании, подумал я. И погружаюсь в программирование!

Три месяца до декабря я упорно изучал HTML + CSS и верил, что легко попаду в разработчики, стоит мне только захотеть! Каким же большим было моё разочарование, когда я понял что в этом мире не все так просто. Первое тестовое задание я получил от компании Тензор это была разработка игры на чистом JavaScript либо с применением любого фреймворка:

  • Angular.js;

  • Vue.js;

  • React.js;

Что вы думаете? Конечно я не смог написать и строчки, точнее строчку я конечно написал, одну или две. Но в функции не умел и не понимал как объединять код. Всё сказал я себе, иду изучать программирование на курсы, так как самостоятельно я ничего не добьюсь. Я слишком мало понимаю. Мне нужны менторы, задания, последовательность обучения.
Поиграть в морской бой можно тут.

Морской бой тестовое задание в ТензорМорской бой тестовое задание в Тензор

Мой первый купленный курс

В Феврале 2020 года, работаю курьером в пиццерии. Мечтаю о ноутбуке что бы параллельно кодить. Всем рассказываю про свой путь. Но все еще одинок в этом.

Принимаю решение вложить 13 тысяч рублей в курсы по верстке сайтов. Стоит сказать что такую смешную сумму, мне пришлось просить разбить на 4 платежа по 3 250 рублей. Ибо в додо я делал 20 тысяч в месяц максимум.

Моя морда на работе в феврале 2020Моя морда на работе в феврале 2020

К тому моменту, я имел за спиной 1 2 кривых пет-проекта по верстке, но основ все еще не понимал до конца. На курсе познакомился с такими инструментами как: HTML, CSS Bootstrap, SASS Git, Gulp Autoprefixer, Pixel perfect, БЭМ JavaScript, Ajax, PHP

Нужно сказать что было крайне интересно и не сложно. Хорошая подача материала и трудолюбие сделали свое дело. Но почему-то дальше все мое продвижение встало мертвым грузом. Как будто я застрял и не знал как выбраться, как продолжить увеличивать знания?! Основные ошибки новичка (на моём опыте).

Ошибка 1 Не закреплял полученные знания

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

Ошибка 2 Дал слабину, расслабился

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

Ошибка 3 Начал искать новую информацию для изучения не имея четкого плана

Еще 3 месяца я читал, пытался кодить, изучал JavaScript. Но не по учебнику или по плану, а просто так, хаотично, без примеров и задач, чаще просто смотря видео. А без базы понять что такое prototype или методы перебора массивов было почти нереальной задачей.

Ошибка 4 Мало теории, еще меньше практики

Просмотр видео 2 раза в неделю, без четких целей и совсем не понимая о чём речь, при этом совсем почти не повторяя код. Не делая пет-проектов и не закрепляя знания.

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

Книга по JS для начинающихКнига по JS для начинающих

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

Редактирование резюме, вставка парочки кривых учебных проектов и подача на все вакансии в своем городе. Из 30 откликов 25 игноров, 3 отказа и 2 тестовых задания. Два тестовых задания были мне не по зубам и я честно признаться, сразу писал что-то типа:

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

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

Олицетворения меня как трусаОлицетворения меня как труса

Я же поступал как удобно мне. Ведь я был вынужден где-то работать. У меня ребенок, кредиты, я как обычный среднестатистический человек устаю в течении дня и приношу домой копейки чтобы хватало на оплату еды, жилья и дешевых вещей. А тут вечером нужно еще позаниматься JavaScript + верстка, а лучше React поучить и всякие там видеоуроки посмотреть (обязательно с практикой). Одним словом не до тестовых заданий, особенно которые не знаешь даже как решать.

Все эти мысли натолкнули меня на очевидный вывод. Рано куда-то рыпаться, необходимо учиться дальше. А прошел уже год как я принял для себя решение изменить свою жизнь. На работу не связанную с кодом я уже даже смотреть не мог. Спал и видел, как в кругу разработчиков я самый отсталый, но счастливый и замотивированный делаю легкие задачи, которые не интересны остальным. И я погнал учиться! Как вы думаете куда? В Skillbox.

Сразу скажу это не реклама для Skillbox, это лично мое мнение

В моменте захотелось выбрать какой-то серьезный для себя вектор, мол, мало мне коротких курсов или самостоятельного обучения. Хочу связать себя с долгим и кропотливым трудом на года. Да и диплом об окончании скилов показался мне престижной бумагой. Размечтался что поеду в офис компании в Москву, буду защищать свой дипломный проект. А я такой опытный манагер, все презентую по красоте! Все будут аплодировать стоя и кричать:

Это junior с задатками team lead! Наш мальчик! Браво!.

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

Несколько выводов для сомневающихся:

  • покупка курса в кредит (точнее в рассрочку) не сделала меня более мотивированным. Однако, у меня появился структурированный материал по стеку Frontend по которому я в свободное время мог теперь двигаться и не тратить время на поиск инфы;

  • общение с преподавателем не супер дружеское конечно, но присутствует. Если вы просите фидбек по примерам, задачам или домашней работе вы его получаете;

  • чат таких же сокурсников как вы, в телеграмм, где можно спросить, подсказать или просто увидеть, что сложно не только вам, или что кто-то уже впереди;

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

Моя шкала прогресса Моя шкала прогресса

Как лучше проходить курс на Skillbox по моему мнению

Сложно сказать однозначно. Типа так делай, а так не делай. Ведь все мы разные. Кто-то обладает 12 часами свободного времени в день и тонной мотивации. А кто-то только 1 час вечером и абсолютно без сил.

Но скажу следующее. Важно ежедневно, от 30 минут до 2 часов (хотя бы) заниматься каждый день.

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

  2. Программируете громко сказано, конечно, но учите базу, делаете задачи, примеры, повторяете, потеете, пытаетесь, это все делаете второй день. В конце повторяете, коммит в репозиторий + вопросы если что непонятно к преподавателю.

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

  4. Фреймворк тут на ваше усмотрение какой выбрать. Главное начинайте освоение хотя бы после прохождения основ.

Представим что у вас 30 уроков в каждом разделе. При ежедневных вложениях по чуть-чуть, уже через 90 дней вы сможете сделать от 30% до 50%. А это всего 3 месяца. Еще 3 месяца и можно приступать к фреймворкам.

Конечно, супер крутым разработчиком вы не станете. Но массу полезной информации усвоите а это самое важное на старте. Ведь когда ты новичок. Тебе сложно понять элементарные вещи. Методы массивов например довольно сложные в понимании для неокрепших умов. Но только через упорство и труд получится что-то понять. Дерзайте!

Мотивация на результатМотивация на результат

В процессе обучения мои амбиции росли и я вместе с ними.

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

У вас есть личный менеджер подбора персонала. Который раскидывает ваше резюме по вакансиям, на которые вы просите это сделать. А резюме составляете, конечно вы сами. По рекомендациям. Если уделить время и не стесняться, то получится грамотный и интересный такой дайджест про вашу личность. Делайте по гайдам и модернизируйте!

Представьте, вам звонят днем, вы поднимаете трубку с незнакомого номера телефона, а там:
Добрый день, это HR компании войтиВайти, ваше резюме нам прислали из центра подбора персонала компании Skillbox, вас рекомендовали как разработчика и так далее.
Помню когда получил первый раз такой звонок, чуть не выпал в осадок. Хорошо стул был неподалеку. К сожалению, у меня не вышло устроиться пока что никуда.
НО отмечу, что я прошел 8 собеседований. Выполнил несколько тестовых заданий, вспотел на нескольких технических интервью. С вопросами про reduce, map, filter, работу с объектами и про жизненный цикл компонент (и массу чего еще).

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

Вот и фидбек. Получается я стал и стану еще опытнее и умнее. А получилось бы это если бы я ничего не делал. А просто пытался учиться самостоятельно? Не знаю.

Напишите в комментариях что вы думаете по этому поводу!?

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

Вот я и на Хабре, благодаря обучению и постоянному желанию поймать свою первую компанию за хвост и устроиться Junior разработчиком.
Здесь научился заполнять аккаунт таким образом, чтобы быть не привлекательным, а техничным. Смешно, конечно, когда смотря на резюме Senior разработчика, там написано только знание 2-3 технологий и нет волшебных слов, которые можно скопипастить себе в профиль.
Но главное писать то в чем ты точно разбираешься. Я так и сделал! Жаль что Junior специалистов ищут крайне редко, в наше время. Сейчас скорее возможно устроиться middle. Но это другая тема для следующего разговора.

В итоге мое резюме выглядит следующим образом:

Резюме мое первая страничкаРезюме мое первая страничка

Как это все организовало меня как личность и изменило в лучшую сторону

В итоге, друзья, две попытки устроиться куда-либо показали, что порог входа в IT-индустрию на 2021 год серьезно так подрос!

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

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

Сейчас план такой:

  • делать 1 пет-проект в неделю, чтобы их было больше. Это плюс для работодателя понять мой уровень, а для меня, набить руку на практике;

  • изучать алгоритмы 1 в неделю, с закреплением на практическом примере;

  • читать 10 страниц в день разнообразных книг по JavaScript, таким образом если 1\10 от всей информации прилипнет это уже победа;

  • 1 метод в неделю изучать, усваивать и закреплять на примере.

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

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

Изучая React по гайдам Димыча IT-kamasutra путь самурая, в каком то 6 или 8 выпуске, в комментах нашел инстаграм не равнодушного человека изучающего JS + React. Попав к нему на канал телеграмм, познакомился с ребятами из разных уголков мира и все хотят что то уметь, и умеют в чем-то больше меня, а в чем-то меньше.

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

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

Спасибо Андрею из Питера за помощь в освоении сложных моментов и Тимуру из Владикавказа за легкое менторство. Это очень ценно парни!

Учусь писать на ReactУчусь писать на React

Точно не пожалел о своем пути

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

Я уверен, что важно не сдаваться! В любом случае нас неминуемо ждет успех если очень долго и упорно идти к цели. И если ежедневно уделять этому время!

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

Тогда еще в 2019 году я задался целью, изучать JavaScript минимум три года. И только после этого времени оглянуться и спросить себя на верном ли я пути?! Знаете, в нашем мире сегодня все достается очень быстро. Кредит пожалуйста за 15 минут. Пицца доставка от 30 минут. Телевизор доставим на дом.

Мы привыкли, что все чего бы не захотели, достигается быстрым путем. И это ошибка. Ведь скорость и доступность создает в нас иллюзию простоты. И когда у нас что-то не получается быстро, мы расстраиваемся и бросаем начатое. Я же готов еще 3 года положить на изучение Frontend. Сразу сегодня, готов продлить данное себе же обещание!

Радость за успехРадость за успех

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

Продолжайте учиться каждый день, друзья.

Продолжайте делать, даже когда не понимаете.

Продолжайте стараться, даже когда нет сил.

И мы вместе однажды достигнем результата ради которого начинали.

Подробнее..

Android Academy. Вы все пропустили! Но это не точно

02.02.2021 02:11:38 | Автор: admin

Android Academy это глобальное сообщество профессиональных разработчиков - энтузиастов, основанное Йонатаном Левиным. Оно зародилось в Израиле, в Тель-Авиве, и теперь активно развивается в Петербурге, Минске, Москве и - барабанная дробь - в онлайне! Мы постоянно проводим курсы, мастер-классы, помогаем друг другу решать задачи, рекомендуем интересные проекты.

В октябре мы стартовали курс Android Academy Fundamentals. Базовые лекции уже прошли, но на десерт мы оставили кое-что интересное: три вебинара, которые могут быть полезными как новичкам, так и прожжёным ветеранам, если хочется сдуть пыль с некоторых тем. А главное - к этим вебинарам можно подключиться, даже если вы пропустили все остальное.

Что, когда?

08 февраля

#11 Notifications and Broadcasts (Missing parts)

Расскажем про нотификации: отображение, управление, действия из нотификаций, каналы. А также про deep links, permissions и broadcast receivers.

15 февраля

#12 Advanced UI

Анимации всех мастей:

Property Animator

View Animator

Animator Set

Spring Physics Animation

RecyclerView Item Animation

MotionLayout Basics

Ripple Effects

Activity/Fragment Transition

22 февраля

#13 Intro to Reactive Development

Реактивный подход, базовые операторы RxJava, введение во Flow: map, flatMap, switchMap;работа с потоками: observeOn, subscribeOn, обработка ошибок

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

Где?

Онлайн. Каждый вебинар будет формально состоять из трёх частей:

  1. Лекция, где мы рассказываем теорию и примеры из жизни, блоками по 20-30 минут. Она проходит в режиме онлайн стриме YouTube.

  2. Сразу после блока теории идёт небольшое практическое задание.
    Нам важно сохранить дух совместной работы и чуткого, профессионального менторства даже в онлайне, поэтому на время практики студенты расходятся по небольшим комнатам в Google Meet (5-10 человек). В каждой комнате с вами будет работать ментор и отвечать на ваши вопросы по лекции или заданию.

  3. При желании вы можете выполнить домашнее задание.

Сколько стоит?

Без-воз-мед-но, то есть даром! :) Да-да, в мире есть немало энтузиастов, и наш пример это доказывает! 9 организаторов и 50 менторов помогают сотням желающих изучить андроид, и нас это драйвит!

Регистрация

Пишите боту Oh My Event! (@ohMyEventBot) в Telegram о том, что вы хотите к нам присоединиться - команда /academy. Вам будут приходить напоминания о предстоящих вебинарах, списки для чтения и ссылки для подключения.

Хакатон

А так же, бонус! По окончании курса, по традиции, мы проводим хакатон. Команды студентов смогут побороться за звание создателей самых креативных, полезных и интересных приложений. Темы хакатона пока не финализированы, но можно уже подыскивать себе команду! В случае, если вы никак не придумаете, что бы такого сделать мы подкинем несколько готовых идей на выбор :)

Что о нас говорят?

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

Было интересно послушать о фрагментах, жизненном цикле Activity, нравится, что трансляция на Ютубе, можно пересмотреть и перемотать, если что-то не понял.

Объяснение хорошее, особенно на примерах.

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

Серьезно, воркшопы просто золото.

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

и много других слов, которые греют нам душу и показывают, что мы на верном пути!

А это лица героев, которым адресованы эти тёплые отзывы:

Присоединяйтесь и вы! Будем рады видеть вас по обе стороны баррикад - и в роли студентов, и в роли менторов или организаторов :)

И спасибо нашим друзьям и спонсорамза поддержку: FitBit и Epam

Подробнее..

Как проходит собеседование начинающего разработчика наС что нужно знать и как подготовиться

15.12.2020 16:09:41 | Автор: admin

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

В этом посте я собрал подборку понятий и терминов, которые у вас могут спросить на собеседовании на вакансию Junior С++ разработчика, и описал, к чему в принципе вам стоит готовиться. Предупрежден значит вооружен. Вкратце о себе: меня зовут Турмец, я работаю в Яндексе, параллельно учусь в Школе Анализа Данных и занимаюсь ревью кода на курсе Разработчик С++ в Практикуме.

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

Поехали.

Оценка soft skills

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

Образование. Расскажите о том, где учитесь или учились. Если вы прошли дополнительные курсы в Практикуме, на Coursera или еще где-то, обязательно упомяните их. Также не стоит забывать о дополнительном офлайн-образовании. Если у вас в копилке есть какой-нибудь пройденный интенсив или достижения на олимпиадах по программированию, поделитесь и этим.

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

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

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

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

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

Заранее продумайте, как вы ответите на такие вопросы.

  1. Случались ли у вас провалы? Расскажите о самом большом из них. Ответ на этот вопрос покажет, как вы умеете рефлексировать над ошибками, какие выводы делаете после неудач.

  2. Какими проектами вы гордитесь? Выберите один-два проекта и в деталях расскажите, как вы участвовали в них: в чем была сложность, как вы подошли к решению, какие проблемы возникали в работе, как вы их решали, какие получились результаты.

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

Оценка hard skills

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

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

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

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

Итак, вы точно поняли задачу, пора решать. В процессе решения рассуждайте вслух: так же как и с вопросами, в этот момент интервьюер делает выводы о вашем подходе к задаче. Я стараюсь идти по следующему пути при решении задачи: 1) предложить самое простое решение; 2) попытаться улучшить узкие места. Если чувствуете, что, скорее всего, сможете решить лучше, так и скажите: Вот идея навскидку, но будет лучше. То есть идите от простого к сложному.

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

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

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

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

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

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

  1. Бинарный поиск

  2. Сортировки

  3. Два указателя

  4. Сканирующая линия

  5. Обход в глубину

  6. Обход в ширину

Еще упомяну два важных понятия. Полноценными алгоритмами их не назовешь, но знать их необходимо:

  1. Префикс-/постфикс-сумма, также известная как предподсчет

  2. Рекурсия

Структуры данных. Теперь посмотрим на список по структурам данных, которые необходимо знать:

  1. Вектор

  2. Связный список

  3. Дек

  4. Стек

  5. Очередь

  6. Куча

  7. Деревья поиска, в частности бинарные

  8. Хеш-таблица

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

Чтобы подготовиться к вопросам об алгоритмах и структурах данных, я рекомендую посмотреть курс Максима Бабенко Алгоритмы и структуры данных поиска в Школе анализа данных.

Вопросы про С++. На этом возможные технические вопросы не заканчиваются. Перейдем к тому, что от вас потенциально ожидают с точки зрения языка программирования, в нашем случае C++.

Конечно, вы должны быть знакомы с синтаксисом. Не обязательно знать все возможные интересные слова, типа explicit, external и volatile, но то, как объявить класс, наследоваться от него и задать оператор меньше, вы знать должны.

Есть базовые знания, которые должны иметь все разработчики, независимо от языка программирования: что такое ООП, базовая работа с Git, базы данных. На этих пунктах я не буду останавливаться. Я сформулировал список обязательных знаний для разработчика С++. Рекомендую изучить его:

  1. Шаблоны

  2. Наследование и полиморфизм, виртуальные методы

  3. Правило пяти

  4. Процесс компиляции и линковки

  5. Инвалидация итераторов

  6. Модель памяти в C++

  7. Move-семантика

  8. Умные указатели

  9. Идиома RAII

  10. Перегрузка операторов

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

После собеседования

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

Полезные ссылки для подготовки к собеседованию

  1. leetcode.com сайт, где вы можете решать задачи, похожие на те, что задают на собеседованиях.

  2. Информатикс ресурс, где можно найти много полезной информации об алгоритмах и структурах данных.

  3. Статья Как проходят алгоритмические секции на собеседованиях в Яндекс.

  4. Курс лекций Максима Бабенко Алгоритмы и структуры данных поиска.

Подробнее..

Как джуниор Python-разработчику стать мидлом за год

23.12.2020 12:19:27 | Автор: admin
Привет! Я Рома, менеджер продукта в Яндекс.Практикуме, где развиваю курс Мидл Python-разработчик. Мы делаем из начинающих разработчиков крепких мидлов с инженерным мышлением. Сегодня хочу поделиться небольшими заметками о том, над чем стоит работать, если вы джуниор, который хочет стать мидлом.

Я не разработчик, поэтому эта статья во многом отражает взгляд со стороны. Ответить на вопрос Как джуниор Python-разработчику стать мидлом за год? не такая простая задача, как может показаться на первый взгляд. Здесь спряталось сразу несколько челленджей:

  1. Ответить на вопрос, кто такой джуниор: определить отправную точку, базу навыков, с которой мы будем рассматривать рост.
  2. Ответить на вопрос, кто такой мидл финальная точка нашего путешествия. Конечно же, во всех компаниях мидлы разные, а нам нужно какое-то взвешенное среднее, не оторванное от реальности.
  3. Ответить на вопрос, почему рассматриваем рост именно за год. Не ради красивой круглой цифры же, верно?

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

Почему в индустрии у всех разные взгляды на рост разработчика:

  1. Понимание грейдов джуниор-мидл-сениор и требования к кандидатам разнятся от компании к компании, а некоторые вообще говорят, что так разработчиков делить нельзя.
  2. Разные системы роста джуниор-разработчиков в разных компаниях (тут влияют не только требования по хардовым навыкам, но и корпкультура).
  3. Каждый мидл или сениор рассуждает на эту тему через призму своего опыта и своего пути роста.

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

И хотя статья больше про бэкенд-разработку на Python, я сделал упор на общеприкладных скиллах, а не на умениях работать с конкретными технологиями. Реальные требования к кандидатам в плане инструментов разработки сильно различаются в зависимости от компании и задач. Поговорим про фундаментальные навыки, которые актуальны для роста в других направлениях бэкенд-разработки и разработки в целом. Так что если вы не питонист не уходите, прочитайте до конца.

Какой ты джун


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

Юнлинг


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

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

Падаван


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

Давайте посмотрим на развитие этой стадии чуть подробнее.

Новичок


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

Обыкновенный


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

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

Крепкий


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

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

Рыцарь-джедай


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

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

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

Резюме роста




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

Представьте, что вы попали в исследовательский центр Британской Секретной службы в качестве инженера. Вашей команде нужно разработать машину для одного известного любителя коктейлей. Грейды инженеров в британской разведке такие же, как у нас в разработке: джуниор, мидл, сениор, тимлид, CTO.



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

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

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

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

И вот мы добрались до вершины CTO или, на местный лад, Q. Он определит общие технические требования к машине, включая специфические. Он тесно общается с заказчиками руководством Ми-6 и самим Бондом. Поэтому знает, что спорткар должен уметь превращаться в подводную лодку, чтобы миссия прошла успешно.

Мой выбор


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

Харды


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

Итак, на что стоит делать упор в своём развитии? Вот шесть главных аспектов.

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

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

    Скорее всего, даже три из пяти почему заставят вас достаточно глубоко покопаться в теме и дадут хорошее понимание исследуемого инструмента.
  2. Учитесь декомпозировать задачи
    Когда начинающий разработчик получает задачу, у него есть соблазн сразу начать писать код. Из-за этого структура его решения выстраивается хаотически. Учитесь сначала продумывать ход решения в голове, строить архитектуру, а только потом кодить. Стройте связи: Я буду решать задачу вот таким образом, потому что <причина 1>, <причина 2>. А вот здесь у меня такое техническое требование, поэтому я буду использовать <приём 1>, <приём 2>.

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

  3. Проходите и проводите code-review
    Первый этап научиться правильно проходить код-ревью. Это софтовый навык: нужно уметь слушать обратную связь, не принимать критику кода как личную обиду и доставать из ревью полезные для себя вещи.

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

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

    Как улучшать навык
    • Если у вас на работе нет культуры код-ревью, найдите человека уровнем выше, чем вы. Попросите его давать обратную связь по тому, что вы пишете. Иначе вы не поймёте, хорошо ли то, что вы сейчас делаете.
    • Проводите селф-ревью. Возвращайтесь к своему коду, думайте, какие есть ещё решения у задачи. Как выбрать между несколькими возможными вариантами решения. Нашли решение лучше перепишите, проверьте свои догадки. Бывает полезно проводить селф-ревью в интерфейсе git уже после того, как вы оформили изменения в merge request. Смена обстановки поможет взглянуть на проделанную работу по-новому.
  4. Подучите алгоритмы
    Да, я уже чувствую ваш скепсис. Ещё бы человек из Яндекса не посоветовал учить алгоритмы.

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

    Как улучшать навык
    • Самый простой путь просто решать задачи на алгоритмы. Их много, например, на Leetcode. Если алгоритмы вам нужны в первую очередь для прохождения собеседований, это верный путь достичь своей цели. Если для общего развития, то не забывайте про связь с практикой. Просто нарешать 100 задач будет не так полезно, как глубоко обдумать практическое применение 510 из них.
    • Посмотрите курс Максима Бабенко Алгоритмы и структуры данных поиска. Это правда стоит того: многие идут в ШАД именно ради курса Максима по алгоритмам.
    • Почувствуйте, что решать алгоритмические задачи может быть интересно и несложно. Вот наш разбор задачи по алгоритмам в помощь вашей мотивации.
  5. Развивайте насмотренность
    Чтобы быть классным разработчиком, нужно знать, что сейчас происходит в индустрии. Чтобы принимать правильные решения в своих задачах, нужно увидеть как можно больше хороших решений других разработчиков. Хотя не только хороших решений ошибок тоже

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

    Как улучшать навык
    • Не бояться совершать ошибки. Насмотренность приходит с опытом, её можно приобрести только практикой. Делайте ошибки и изучайте опыт своих коллег.
    • Пилите собственные проекты с технологиями, с которыми бы никогда не столкнулись на основной работе. Новый язык, база данных, фреймворк всё это расширяет ваш кругозор и пополняет багаж знаний.
    • Изучайте публичные кейсы компаний, где они рассказывают о своих ошибках или, наоборот, о достижениях в решении сложных задач.
  6. Учитесь писать скучный код
    Когда пишете код, думайте, насколько он будет понятен человеку, который в первый раз его увидит. Хотите внедрить нетривиальное и нестандартное решение трижды подумайте. Я один раз услышал очень хорошую фразу, которая показывает всю ценность этого навыка. Делюсь ей с вами: Чем скучнее и понятнее ваш код, тем меньше вероятность, что вас поднимут в час ночи и заставят его чинить.


Софты


Фуух, с хардовой частью разобрались. А что там про софты? Что это за зверь и зачем он нужен разработчику?

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

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

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

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

    Мидл может взять таск, где есть несколько активностей, разложить их в план и приступить к работе. Над ним нужен контроль только из серии Как у тебя дела? Что ты делаешь сейчас?
  2. Научитесь видеть проблему бизнеса в технической задаче
    Помните, что на самом деле ваша задача не просто написать код. Код всего лишь инструмент. Вы как разработчик должны делать техническое решение для задачи бизнеса. Учитывайте это, когда продумываете своё решение и оцениваете его оптимальность.

    Иногда важно аргументировать, почему не нужно делать задачу, которую вам поставили, а не бросаться писать код. Например, если вы видите, что на реализацию текущих требований команда потратит очень много ресурсов и есть более простое и дешёвое решение. Учитесь получать информацию по задаче от нетехнических коллег и объяснять им технические ограничения.
  3. Показывайте увлечённость разработкой
    Никому в команде не нужен человек, который не мотивирован делать то, чем он сейчас занимается. Учитесь рассказывать интересные истории о своей работе и достигнутых результатах. Говорите о том, почему вам интересно было заниматься тем или иным проектом.
    Грустно, когда на собеседовании задаёшь вопрос: Расскажите, чем вы занимались на прошлой работе?, а кандидат отвечает: Ну я решал задачки, писал код. Был Джанго, писали на нём небольшой сервис. Часто делал простые задачки с данными. Рассказывайте про свой опыт через призму того, почему у вас была мотивация его получить, и какие выводы вы для себя сделали.

    Если про работу сложно рассказать что-то интересное, используйте собственные проекты. На работе решал стандартные задачи на Django, а вот в собственном проекте недавно попробовал FastAPI. Классный опыт, потому что <причина 1>, <причина 2>. По-новому взглянул на <приём в разработке 1> и <приём в разработке 2>. Вот это уже хочется обсудить с человеком.


Саммари


  1. Чётких грейдов разработчиков в индустрии нет, и это нормально: разные команды выдвигают разные требования в зависимости от своих задач.
  2. Тем не менее можно выделить критерий вашего роста как разработчика ответственность и сложность задач, которые вы можете решить самостоятельно.
  3. Мидл должен быть самостоятельным разработчиком и решать большинство падающих на него задач без помощи старших разработчиков.
  4. Опыт работы с конкретными технологиями часто не так ценен, как фундаментальные навыки. Если вы глубоко разбираетесь в технологиях, с которыми уже работали, и показываете способность и желание быстро изучать новые этого часто достаточно, чтобы попасть в компанию, где ваш опыт не покрывает весь стек технологий.
  5. Изучайте чужой код, пробуйте новые технологии, не бойтесь совершать ошибки. Это поможет вам развить насмотренность и профессиональный кругозор.
  6. Сейчас век командной разработки, поэтому софты не менее важны, чем харды. Компании дешевле подтянуть нового сотрудника по техническим навыкам, чем вписывать в команду некомандного человека.
  7. Подходите к своему развитию осознанно. Выбирайте место работы, отталкиваясь от людей, с которыми вы хотите работать, и задач, которые вас драйвят. Стройте процесс учёбы и получения новых знаний так, чтобы он приносил удовольствие. Например, мы с командой обожаем кино, поэтому построили курс вокруг разработки онлайн-кинотеатра, аналога Netflix (да, отсылки к фильмам в этой статье не случайность). Подумайте, что может дать вдохновение вам?
Подробнее..

Как вырастить веб-разработчика от стажера до архитектора. Матрица компетенций

03.09.2020 12:19:11 | Автор: admin
Вместо эпиграфа
Когда в 2004 году я окончил университет, в нашем городе почти не было команд разработчиков.
Где работать, у кого набираться практического опыта?
Выбор был прост: админом или в Москву. Или уйти из профессии.
Сейчас я преподаю веб-разработку в местных ВУЗах, руковожу большим коллективом и мне важно, чтобы в моем городе хотели жить толковые молодые ребята, чтобы наш город не считался тухлым местом.

Суть статьи коротко


Мы с коллегами умеем растить веб-программистов с почти нуля до уровня уверенного профессионала (Senior / Архитектор).
Хотим рассказать как все работает и поделиться с сообществом материалами и методикой.

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

Далее описан трек развития веб-разработчика, уровни компетенций Стажер, Junior, Middle, Senior и Architect, как я их вижу и даны примеры аттестационных заданий.

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


Как стать хорошим веб-программистом? Нужно ли заканчивать информатику в хорошем ВУЗе? Или хватит месячных курсов? Или с книжкой и мышкой все можно изучить?

Три кита, на которых стоит профессия любого разработчика на любом стеке технологий, это алгоритмизация, базы данных и собственно программирование (язык + ООП + паттерны).
image

Что такое алгоритмизация?


Близкий житейский аналог технического навыка алгоритмизации ремонт вентилятора. Что делать, если не крутится? Проверить/сменить розетку, потом рукой крутануть лопасти, потом прозвонить провод.

Логика очевидна: разделил на части и проверил каждую. Удивительно, но многие люди не умеют так мыслить. У настоящего программиста это в крови.

Базы данных


Курс БД один из основных, как физика для инженера. Плохо что часто преподают их одинаково плохо: сводят к пересказыванию параграфов.

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

Какие технологии нужно знать программисту?


Из чего вообще состоит профессионализм разработчика?
Указано примерное время освоения при классическом пути развития (начиная с ВУЗа).

Пирамида.png

По уму алгоритмизации учат в школе/ВУЗе. Тратится на это 1-2 года, и этот период определяет высоту будущего профессионального взлета. Если вы не освоите алгоритмизацию, то никогда не вырастете.

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

Фреймворки часто включают сотни модулей/классов/расширений и постоянно развиваются. Освоение фреймворка займет у вас несколько месяцев как минимум.

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

Конкретные технологии (например AJAX, серверный рендеринг JS, push&pull, распределение нагрузки по гео-кластеру, профилировка долгих запросов в xhprof, очереди сообщений, NoSQL базы данных) бесконечно разнообразны. Учить их можно вечно.

Эту пирамиду нужно проходить снизу вверх. Если вы начнете с фреймворка и напишете красивое резюме, но не будете знать как работает голый JS или чем get-запрос отличается от post профи вам не быть.

Какие задачи нужно решать?


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

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



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

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

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

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

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


Большие задачи реальные сервисы, которыми пользуются люди, где команда состоит минимум из 2 человек, и состоящие из тысяч строк кода. Такие проекты формируют уверенного специалиста.

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

Более сложная и более полезная книга Шаблоны корпоративных приложений Мартина Фаулера. Ее тоже нужно прочитать, примерно через год-полтора работы в профессии.

А зачем? Можно просто закончить 3-месячные курсы веб-разработчика?

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

При этом на простейший вопрос типа что такое cookies или как работает подгрузка сообщений в ленте ВКонтакте люди часто не знают ответа, у них даже версий толком нет.

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

Как получить эту базу? Где правильно учиться? Есть два пути.
Первый 4-5 лет в хорошем ВУЗе.
Второй несколько лет упорного самообучения и практики. Можно стать сильным программистом без профильного образования, если у вас светлая голова, открытое сердце, а вы сами готовы много работать.

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

Матрица компетенций. Стажер Junior Middle Senior Architect


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

По ссылке доступна полная матрица с примерными вопросами по аттестации.

Это таблица, разделенная на грейды (стажер, junior, middle, senior). Каждый грейд содержит набор уникальных компетенций. Вопросы сгруппированы по областям знаний (PHP, SQL, Frontend, веб-технологии в целом и управление серверным хозяйством)

Стажер

На старте стажер должен быть способен:
  • уверенно отличать куки от сессий;
  • понимать на сервере или в браузере происходит конкретная операция;
  • написать на PHP без серверных фреймворков несложную задачу управления данными. Например ведение БД групп и студентов с редактированием, удалением, созданием и выводом;
  • прилично оформить результат своей работы.

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

Junior

Junior способен решать задачи самостоятельно. Он часто советуется со старшими, но вопросы он задает совсем не стажерские.

Что практически должен уметь Junior на старте:

  • переписать (а значить досконально понимать) авторизацию на сайте;
  • уверенно править настройками и кодом фреймворка работу каталогов, ленты новостей, формы;
  • собирать простые интерфейсы управления данными и целые сайты на фреймворке;
  • писать простую интеграцию с внешним API.

Middle

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

Что практически должен уметь Middle на старте:

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


Senior

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

Вот например, что сам Senior должен знать и уметь по блоку Работа с серверами и Linux.

  • Сборка нетиповой системы выкатки изменений
  • Работа с микросервисами.
  • Организация нагрузочного тестирования
  • Настройка continuous integration
  • Синхронизация файлов и репликация данных
  • Сборка отказоустойчивого и высоконагруженного кластера на Bitrix Framework и без него.
  • ELK / другие системы логирования и аналитики
  • Серверы очередей Gearman / RabbitMQ и построение распределенных систем

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

Architect

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

Такие специалисты играют ключевую роль в технически и организационно сложных проектах.

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

Управление развитием программиста

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

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

Как устроена проверка уровня (аттестация)?

Что такое аттестация?
Это процедура подтверждения квалификации программиста. Ее проходят все программисты.
Аттестация включает лабораторные работы и устные экзамены.

В результате аттестации в матрице компетенций появляются Да напротив подтвержденных компетенций. От этого увеличивается грейд, например, Стажер-54% Junior-27%.

Как проходит аттестация?

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

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

Многие блоки матрицы компетенций закрываются практикой и теоретических вопросов по ним нет.

Теория. Устный экзамен

Компетенции, не покрытые лабораторными работами нужно подтвердить на устном экзамене.

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

Практика. Лабораторные работы

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

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

Примерные формулировки заданий

Мы разработали около 20 заданий (называем их привычно для студентов лабораторные работы). Несколько опубликуем.

Вот примеры простых заданий.

Задание 2а. Базовый web. Реализуем CRUD на чистом PHP.

Компетенции:
  • PHP: Аутентификация и авторизация на сайте
  • PHP: Обработка форма обратной связи с сохранением данных и валидацией
  • Фронт: Создание форм на html
  • Фронт: Синтаксис и селекторы CSS, общее представление о весах селекторов
  • SQL: Основы Mysql
  • SQL: Типы данных
  • PHP: Синтаксис языка PHP

Суть:
  • завести репозиторий на bitbucket и выполнять в нем;
  • сразу сделать ветку и pull request;
  • в PhpStorm установить плагин Statistic, максимальное кол-во строк на весь проект 1500:
  • через PhpStorm создать необходимые таблицы и заполнить их данными;
  • сделать страницу аутентификации;
  • сделать страницу с формой обратной связи, на которой есть: текстовое поле, многострочное текстовое поле, радиокнопки, флажки, выпадающий список, кнопка сброса формы, кнопка отправки формы;
  • форма обратной связи доступна только авторизованным пользователям, критерий допуска вход в систему выполнен;
  • все красиво сверстать, показать пример использования основных типов селекторов: id, class, attribute, pseudo-class, pseudo-element;
  • обе формы должны обрабатываться без JS;
  • проверить через PhpStorm, что данные добавляются в таблицу.


Проверка:

  • проверяется качество декомпозиции php, js, css;
  • умение выделить ответственность и установить правильные зависимости между компонентами MVC/ECB;
  • безопасность (доступ);
  • безопасность (XSS, SQL injection);
  • корректность редиректов;
  • единство стиля оформления кода.


Развитие задания

Задание 2б. Развитие CRUD-интерфейса на PHP.

Компетенции:
  • 3 способа подключения скрипта
  • Создание форм на html
  • Синтаксис и селекторы CSS, общее представление о весах селекторов
  • JS: операторы, функции
  • Отладка JS с помощью консоли браузера
  • Основы Mysql
  • Типы данных


Суть продолжаем работу над сайтом из задания 2а:
  1. сделать мини-админку:
  2. список отправленных форм обратной связи;
  3. список должен быть отсортирован по дате отправки, новые сначала;
  4. список можно обновить, это делается с помощью AJAX;
  5. совет: для интерактивного тестирования запросов к БД используйте консоль БД в PhpStorm;
  6. отправленную форму можно удалить из админки, все на AJAX;
  7. таким образом продемонстрировать все способы подключения JS;
  8. отправленные данные можно отредактировать (использовать уже разработанную форму, без AJAX);
  9. можно использовать jQuery.
  10. открыть инструменты разработчика (желательно Firefox):
  11. найти источник запроса из лога запросов;
  12. установить точку останова, спровоцировать выполнение кода, изучить пошаговое выполнение кода;
  13. во время пошагового выполнения просмотреть значения переменных через соответствующий инспектор;
  14. добавить watch;
  15. воспользоваться консолью для доступа к переменным в текущей области видимости.
Проверка:
  1. проверяется качество декомпозиции php, js, css;
  2. умение выделить и установить правильные зависимости между компонентами MVC/ECB;
  3. безопасность (доступ);
  4. безопасность (XSS, SQL injection);
  5. единство стиля оформления кода;
  6. все пункты по использованию инструментов разработчика продемонстрировать.


Вот пример средней сложности

Задание 10. Парсинг сайтов

Компетенции:

  • Регулярные выражения
  • HTTP-запросы с сервера, cURL
  • TODO: написание консольных утилит (и одноразовых скриптов) на кодовой базе Bitrix Framework
  • TODO: добавить CRON


Суть:

  • Проанализировать сайт, продумать структуры данных, пригодные для автоматизированной обработки
  • Распарсить сайт в эти структуры
  • Оформить в виде CLI-скрипта
  • Настройками реализовать возможность парсить не все подряд, а только то, что нужно пользователю


Проверка:

  • корректность CLI-окружения
  • декомпозиция регулярных выражений
  • экономичность по запросам
  • обработка ошибок
  • возможность параллельного парсинга нескольких объектов сразу
  • Работа в консольном и интерактивном режиме
  • *работа в режиме внешнего сервиса, доступного по HTTP, с поддержкой очередей



Посмотреть и скачать матрицу компетенций 2020

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

Хочу в геймдев 27 ответов от 8 профи

17.06.2020 16:18:48 | Автор: admin
Это материал для джунов, которые хотят устроиться в геймдев. Восемь директоров дают советы: с чего начать, как вести себя на собеседовании, как на собеседованиях оценивают кандидатов, что делать, если нет нормального портфолио, нужно ли высшее образование, есть ли стажировки и многое другое.




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

Кто давал советы и делился опытом:
  • Константин Сахнов (Kallist) совладелец издательства JustForward и игровой продюсер;
  • Михаил Кузьмин Marketing Director в TinyBuild;
  • Олег Доброштан директор по развитию и обучению в 101xp;
  • Сергей Волков HR Director в 1C Game Studios/1C Entertainment;
  • Алина Мудрая СЕО Values Value;
  • Роман Васильев Co-founder & CEO платформы inGame job;
  • Владимир Пранов Head of HR в Vintersaga;
  • Вячеслав Уточкин (viacheslavnu) директор образовательных программ по игровой индустрии ВШБИ НИУ ВШЭ.




Главный вопрос: сколько будут платить джуну?


Роман Васильев привел данные с ежегодного зарплатного опроса на inGame job.
Вот как выглядит медианная зарплата новичков по направлениям:



Лучше всего с зарплатами для джунов в локализации, аналитике и менеджменте, а замыкают список DevOpsы.

А вот медианная зарплата новичков по странам:



Где искать вакансии


Владимир Пранов: В Фейсбуке по запросу геймдев легко найти много интересных групп, где выкладываются вакансии, делятся новостями люди из индустрии, и можно выложить свое резюме. Еще есть платформы inGame Job и Talents in Games, где можно регистрироваться в качестве кандидатов, создавать резюме, откликаться, писать сопроводительные письма и пытаться найти работу.

Что должно быть в резюме



Это инструкция от Values Value. Подробнее тут

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

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

Ошибки при создании резюме и на собеседовании


Владимир Пранов:
  • Слишком длинное и нерелевантное резюме.
  • Резюме с недостаточным количеством информации о задачах, достижениях и платформах.
  • Еще одна ошибка не посмотреть, с каким проектом (жанр, монетизация) и в какой компании соискатель собирается работать.
  • Очень важно правильно сформулировать желаемую зарплату, не продешевить, не переоценить себя.


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

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


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

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


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

Роман Васильев: Многие руководители смотрят на образование не как на корочку, а как доказательство целеустремленности и способности к обучению соискателя, потратившего время на серьезную учебу.

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

Что делать, если нет опыта


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

В tinyBuild часто просят у геймдизайнеров ссылку на открытый Steam-профиль (или другую платформу), который может многое сказать о соискателе и его понимании жанров.

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

Иногда от резюме почти ничего не требуется: покажите мотивацию и готовность муторно работать руками.


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

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

Стажировки в геймдеве


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


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


Алина Мудрая СЕО Values Value

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

Во многих компаниях, например 1С Games и 101XP, начальные позиции как раз и выступают как стажировки.

Что может оттолкнуть в кандидате


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


Сергей Волков HR Director в 1C Game Studios/1C Entertainment

На собеседовании или обсуждении проекта с издателем


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


Константин Сахнов совладелец издательства JustForward и игровой продюсер

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

Совет про питчинг (презентацию проектов)


Константин Сахнов: Часто встречающаяся ошибка начинающих разработчиков пытаются придумать сложную концепцию. Лучше сделать что-нибудь попроще, хотя амбиции это хорошо.

Михаил Кузьмин: Есть примеры успешных кейсов у свежесобранных на энтузиазме команд. Black Skylands игра с очень красивой рисовкой, которая разрабатывалась на редко используемом движке. TinyBuild подписались на проект, дали денег, помогли с арендой офиса в Москве. Автор доукомплектовал команду, перенес игру на Unity (потому что игру будет проще портировать на различные платформы), и они сейчас ее допиливают.

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


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

Как придумывают игровые механики


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

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

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

Удаленка и офис в геймдеве


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


Олег Доброштан директор по развитию и обучению в 101xp

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

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

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

Если геймдев супермечта


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

Профессиональное выгорание в геймдеве


Олег Доброштан: От выгорания может помочь отдых или занятие спортом. Если жить и работать как в сериале Lets dance, выгорание не создает больших проблем.

Про шансы, перспективы и трудоустройство


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

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

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

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

Вячеслав Уточкин: Будет прекрасно, если спустя несколько лет у вас появится чувство, что приняли правильное решение и стали заниматься тем, что приносит исключительное удовольствие и финансовую стабильность.

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

Роман Васильев: Бояться не надо, надо пробовать. Иногда стоит откликнуться на вакансию, ведь не все требования там ключевые. В любом случае это лучше, чем не сделать ничего.
Подробнее..

Можно ли сэкономить набирая junior специалистов?

19.11.2020 22:10:01 | Автор: admin

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


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


Дисклеймер 1: Безусловно разделение на junior-middle-senior, используемое в статье, крайне условное и мало связано с опытом работы, а градация и зарплатные уровни сильно зависят от компании, в которой дается оценка. Однако мы живем в реальности, в которой на hh в вакансиях ведущих it компаний используется такая терминология, и все мы, так или иначе, понимаем о чем речь, и примерно какой набор требований предъявляется в том или ином случае. И предвосхищая дальнейший текст статьи, заверяю, что абсолютные величины не так важны для сделанных выводов.


Дисклеймер 2: Рассуждения по большему счету не про топ компании, в которых и так все в порядке, а скорее про остальное большинство. Так же разговор идет про технически сложные продукты, правда в возможность существования простых, в общем случае, особо и не верю. Простые продукты (вспоминая Пола Грэма и его книгу "Хакеры и Художники") вряд ли могут успешно существовать на конкурентном рынке, в противном случае их было бы слишком просто скопировать и повторить.


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


Практически все доводы несостоятельны. Давайте по порядку.


Себестоимость продукта с джунами выше чем с профессионалами


Платя зарплату джуниору, вы не платите за работу над продуктом, вы платите этакий базовый минимум, чтобы ему было на что существовать, ну и конечно за надежду, что когда-то и он полноценно встанет у станка. Дальнейший рост зарплаты от старта сильно не пропорционален росту эффективности. Т.е. себестоимость выполненной работы у малоквалифицированного сотрудника выше, чем у более квалифицированного. Поясним это. Платя мидлу, половина платы уходит в упомянутый выше базовый набор, а остальное уже в продукт. Ведь условно ЗП мидла это две ЗП джуниора, а сеньора 3 зарплаты джуниора. Таким образом, вместо двух сеньоров можно взять 6 джунов или 3 мидла. В случае 2 сеньоров, 2/3 зарплатного фонда идет в продукт, а 1/3 в базовый набор. В случае 3 мидлов 1/2 зарплатного фонда идет в создание продукта и 1/2 в базовый набор. А теперь вспомним про кривую роста эффективности.



График построен на моем опыте. Принимаем допущение, что уровень программиста соответствует ЗП. Конечно же он выглядит не справедливым.


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


"Мифический человеко-месяц":


Руководители программистских проектов давно уже поняли, как значительны различия в производительности хороших и плохих программистов. Тем не менее результаты точных измерений этой величины просто поражают. В одной из своих работ Сакмен, Эриксон и Грант измеряли производительность группы опытных программистов. Даже внутри этой группы отношение максимальной и минимальной
производительности в среднем составило 10:1, а для времени работы программы и затрат памяти 5:1. Короче говоря, производительность труда программиста, получающего 20 тыс. долларов в год, может быть в 10 раз больше, чем у того, кто зарабатывает 10 тыс. долларов. Обратное также может быть справедливо. Статистические данные утверждают, что нет никакой зависимости между опытом и производительностью. (Сомневаюсь, впрочем, чтобы это было верно всегда.)

Коммуникация узкое место


Продолжая сравнивать 3 джуниоров против одного сеньора нельзя забывать и о том, что на коммуникацию и синхронизацию 3 джуниров уйдет порядка 10-20% общего времени. Чем больше людей, тем больше издержек. Таким образом, набор джуниоров идет и против стратегии сохранения наименьшего количества разработчиков работающих над проектом. То, о чем говорил Келли Джонсон в Skunk Works, ну и конечно же Брукс.


Джуниор это инструмент, но не самодостаточная единица


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


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


Подобное к подобному


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


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


Наем профессионала vs джуниора


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


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


Джуниоры крадут время у наиболее боеспособных единиц


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


Подводя итоги: команда мечты


Получается что вообще сторониться джуниоров? Куда же им тогда податься?
Конечно же джуниоров можно брать, но на "сдачу". Наем джуниоров как стратегия на далекое будущее, в некотором роде рискованные инвестиции. По моему опыту на команду из 5 человек максимально допустимо иметь 1 джуниора и 1 мидла. И это не история про то, что джун и мидл это тестеры, devops'ы, техписы.


Допустим у нас на команду есть бюджет 550-600 т.р.
Можно пойти двумя путями и попытаться сформировать классическую команду из 7 человек, либо сделать упор на максимальное количество профессиональных разработчиков.


Попытаемся представить как могла бы выглядеть первая команда:


Команда строящаяся на основе джуниоров


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


1) Сеньор-лид 150 т.р. (8х 4x (Половина времени на обучение и организацию) = 4x)
2) Мидл? 110 т.р. (5х 1х Обучение = 4х)
3) Мидл? 80 т.р. (2x)
4) Мидл? 65 т.р. (1x)
5) Мидл? 60 т.р. (1x)
6) Джун 55 т.р. (0.2x)
7) Джун 50 т.р (0)


Общая производительность без учета потерь на коммуникацию: 12.2x
Принято считать, что добавление каждого нового члена в команду отъедает до 5% общего времени на коммуникацию. Т.о. общая производительность с учетом потерь на коммуникацию: 12.2x * 0.7 = 8.54x
КПД: 66 т.р. за 1x производительности.


Проблемы этого варианта, кроме низкого КПД:


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

Команда на основе сеньоров


1) Сеньор-лид 170 (8x 2x (Орг. деятельность) = 6х)
2) Сеньор 160 (8x)
3) Сеньор 160 (6x)
4) Мидл 100 (3x)


Общая производительность без учета потерь на коммуникацию: 23x
Общая производительность с учетом потерь на коммуникацию:23x * 0.8 = 18.4x


КПД: 32 т.р. за 1x производительности.


Дополнительные плюсы, кроме высокого КПД:


  • Большой запас по КПД дает возможность увеличения ЗП для удержания сотрудников, прежде чем команда станет не эффективна по сравнению с командой на джуниорах
  • Продукт качественнее (быстрее, эффективнее, юзабельнее, проще)

Выводы


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

Подробнее..

Можно ли сэкономить, набирая junior специалистов?

20.11.2020 02:17:26 | Автор: admin

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


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


Дисклеймер 1: Безусловно разделение на junior-middle-senior, используемое в статье, крайне условное и мало связано с опытом работы, а градация и зарплатные уровни сильно зависят от компании, в которой дается оценка. Однако мы живем в реальности, в которой на hh в вакансиях ведущих it компаний используется такая терминология, и все мы, так или иначе, понимаем о чем речь, и примерно какой набор требований предъявляется в том или ином случае. И предвосхищая дальнейший текст статьи, заверяю, что абсолютные величины не так важны для сделанных выводов.


Дисклеймер 2: Рассуждения по большему счету не про топ компании, в которых и так все в порядке, а скорее про остальное большинство. Так же разговор идет про технически сложные продукты, правда в возможность существования простых, в общем случае, особо и не верю. Простые продукты (вспоминая Пола Грэма и его книгу "Хакеры и Художники") вряд ли могут успешно существовать на конкурентном рынке, в противном случае их было бы слишком просто скопировать и повторить.


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


Практически все доводы несостоятельны. Давайте по порядку.


Себестоимость продукта с джунами выше чем с профессионалами


Платя зарплату джуниору, вы не платите за работу над продуктом, вы платите этакий базовый минимум, чтобы ему было на что существовать, ну и конечно за надежду, что когда-то и он полноценно встанет у станка. Дальнейший рост зарплаты от старта сильно не пропорционален росту эффективности. Т.е. себестоимость выполненной работы у малоквалифицированного сотрудника выше, чем у более квалифицированного. Поясним это. Платя мидлу, половина платы уходит в упомянутый выше базовый набор, а остальное уже в продукт. Ведь условно ЗП мидла это две ЗП джуниора, а сеньора 3 зарплаты джуниора. Таким образом, вместо двух сеньоров можно взять 6 джунов или 3 мидла. В случае 2 сеньоров, 2/3 зарплатного фонда идет в продукт, а 1/3 в базовый набор. В случае 3 мидлов 1/2 зарплатного фонда идет в создание продукта и 1/2 в базовый набор. А теперь вспомним про кривую роста эффективности.



График построен на моем опыте. Принимаем допущение, что уровень программиста соответствует ЗП. Конечно же он выглядит не справедливым.


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


"Мифический человеко-месяц":


Руководители программистских проектов давно уже поняли, как значительны различия в производительности хороших и плохих программистов. Тем не менее результаты точных измерений этой величины просто поражают. В одной из своих работ Сакмен, Эриксон и Грант измеряли производительность группы опытных программистов. Даже внутри этой группы отношение максимальной и минимальной производительности в среднем составило 10:1, а для времени работы программы и затрат памяти 5:1. Короче говоря, производительность труда программиста, получающего 20 тыс. долларов в год, может быть в 10 раз больше, чем у того, кто зарабатывает 10 тыс. долларов. Обратное также может быть справедливо. Статистические данные утверждают, что нет никакой зависимости между опытом и производительностью. (Сомневаюсь, впрочем, чтобы это было верно всегда.)

Коммуникация узкое место


Продолжая сравнивать 3 джуниоров против одного сеньора нельзя забывать и о том, что на коммуникацию и синхронизацию 3 джуниров уйдет порядка 10-20% общего времени. Чем больше людей, тем больше издержек. Таким образом, набор джуниоров идет и против стратегии сохранения наименьшего количества разработчиков работающих над проектом. То, о чем говорил Келли Джонсон в Skunk Works, ну и конечно же Брукс.


Джуниор это инструмент, но не самодостаточная единица


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


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


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


Подобное к подобному


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


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


Наем профессионала vs джуниора


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


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


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


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


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


Джуниоры крадут время у наиболее боеспособных единиц


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


Подводя итоги: команда мечты


Получается что вообще сторониться джуниоров? Куда же им тогда податься?


Конечно же джуниоров можно брать, но на "сдачу". Наем джуниоров как стратегия на далекое будущее, в некотором роде рискованные инвестиции. По моему опыту на команду из 5 человек максимально допустимо иметь 1 джуниора и 1 мидла. И это не история про то, что джун и мидл это тестеры, devops'ы, техписы.


Допустим, у нас на команду есть бюджет 550-600 т.р.


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


Попытаемся представить как могла бы выглядеть первая команда:


Команда строящаяся на основе джуниоров


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


1) Сеньор-лид 150 т.р. (8х 4x (Половина времени на обучение и организацию) = 4x)
2) Мидл? 110 т.р. (5х 1х Обучение = 4х)
3) Мидл? 80 т.р. (2x)
4) Мидл? 65 т.р. (1x)
5) Мидл? 60 т.р. (1x)
6) Джун 55 т.р. (0.2x)
7) Джун 50 т.р (0)


Общая производительность без учета потерь на коммуникацию: 12.2x
Принято считать, что добавление каждого нового члена в команду отъедает до 5% общего времени на коммуникацию. Т.о. общая производительность с учетом потерь на коммуникацию: 12.2x * 0.7 = 8.54x
КПД: 66 т.р. за 1x производительности.


Проблемы этого варианта, кроме низкого КПД:


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

Команда на основе сеньоров


1) Сеньор-лид 170 (8x 2x (Орг. деятельность) = 6х)
2) Сеньор 160 (8x)
3) Сеньор 160 (6x)
4) Мидл 100 (3x)


Общая производительность без учета потерь на коммуникацию: 23x
Общая производительность с учетом потерь на коммуникацию:23x * 0.8 = 18.4x


КПД: 32 т.р. за 1x производительности.


Дополнительные плюсы, кроме высокого КПД:


  • Большой запас по КПД дает возможность увеличения ЗП для удержания сотрудников, прежде чем команда станет не эффективна по сравнению с командой на джуниорах
  • Продукт качественнее (быстрее, эффективнее, юзабельнее, проще)

Выводы


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

Подробнее..

Почему мы не берём на работу новичков или 5 мифов обучающих платформ

01.12.2020 14:07:50 | Автор: admin

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

  1. Нельзя верить в то, что пишут крупные обучающие площадки. Цитата с крупных площадок, обучающих разрабов: "всего за 3 месяца вы получите возможность работать в ИТ с базовым доходом от 100 т.р.". Я работаю в Москве и джуны, приходящие в компании с этих курсов часто столько и просят, такие суммы для новичков вызывают у меня улыбку.Но обучающая площадка и менторы (для меня стало новостью, что зачастую менторами становятся вчерашние ученики этой же площадки) кричат о том, что джуны получают от 100 т.р.


    Давайте разберёмся на пальцах: 100 000 рублей в месяц - это приблизительно 600 рублей в час на начинающего разработчика. Пока звучит неплохо, но давайте копнём дальше. На каждого джуна по опыту старший разработчик (с условной зарплатой в 250 000 рублей, и стоимостью часа 1500 рублей) тратит от 1 до 4 часов в день, в зависимости от расторопности джуна. Несложные вычисления приводят нас к тому, что в среднем в месяц старший разработчик тратит 40 часов на обучение джуна, что удорожает джуна уже до 160 000 рублей в месяц, а стоимость его часа делает равной 950 рублям. Но и это ещё не всё, ведь есть ещё тимлид (с условной зарплатой 300 000 рублей и стоимостью часа 1800 рублей), который в среднем тратит на джуна по 1-2 часа в неделю, что в месяц превращается примерно в 8 часов. По итогу получаем, что стоимость джуна для компании становится 174 400 рублей, а стоимость часа его работы приближается к отметке 1050 рублей. И тут мы понимаем, что за такую стоимость мы можем поискать уже даже не мидла, а мидла+.


    Кстати, очень хорошо определить адекватность соискателя помогает вопрос "Сколько бы вы хотели получать через год?". И если соискатель отвечает о повышении в пределах 20-30%, то он понимает базовые принципы и может здраво оценивать ситуацию. Самый интересный ответ был "через год я планирую получать 250 000 рублей" (при заявленных зарплатных ожиданиях в 80 тысяч рублей). Амбиции - это круто, но нужно здраво оценивать свои возможности и возможности рынка, рынок не готов дать через год джун+ или мидлу зарплату в 3 раза больше. Как говорит наш тимлид "Это так не работает".

  2. "Я хочу работать на современных технологиях, а все эти ваши основы программирования для динозавров" - это реальное высказывание соискателя на должность фронетнд разработчика после того как ему задали вопрос по базовым знаниям javascript. И это опять же проблема "волшебных курсов", которые не заостряясь на основах, переходят на супер-пупер современные пердящие и смердящие фреймворки. Фреймворки облегчают жизнь разраба, но никак не заменяют базовых знаний. К тому же, даже в крупных и современных банках есть большаячасть легаси кода, которую придётся как минимум поддерживать, а как максимум рефакторить и переносить на "новые рельсы", но не зная основ нельзя просто так взять и понять что написано в коде.


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

  3. "Я не хочу заниматься рутиной, я хочу работать только над интересными задачами" - очередная цитата с интервью. И всё в ней прекрасно кроме того, что сказана она не матёрым сеньором и даже не закоренелым мидлом, а джуном только что окончившим курсы фронтенд-разработчика. Круто, друг/подруга, но извини, придётся для опыта поверстать лэндосы и сайты, никто не будет ждать пока ты напишешь супер сложный функционал за год. Так или иначе - мы делаем бизнес задачи и иногда они откровенно скучные, а иногда очень даже сложные. Я видел немало нервных срывов у сеньоров, когда работал в околобанковской сфере, из-за того, что они не могли вытянуть нагрузку. Для джуна такой подход может не только убить психику, но и отбить всякое желание кодить.

  4. "Главное устроиться на работу и неважно какие технологии вы там используете". Если вы уверенный мидл или даже сеньор, то такое высказывание не вызовет никаких подозрений, но если вы джун, то в ушах работодателя это звучит как "я ничего не умею и вам придётся меня учить", опять же возвращаемся к расчёту из пункта 1, только умножаем всё на 2, а то и на 3.


    И самое печальное для джуна, который всё-таки устроится в компанию с незнанием "местного" стека - он не сможет сделать в срок. Нет, тимлид и сеньоры не изверги, они не будут говорить с первого дня "ты должен/должна сверстать сайт из 20 страниц за 3 дня", вам скорее всего смогут дать столько времени сколько вы попросите, даже обсудят с вами план и пошагово всю работу над проектом. А ещё оценят задачу в часах "под себя" умножат время на 4 или даже 8 и начнут ждать. Дальше начнётся процесс, который я называю "воронка незнания":


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

    Почему вас увольняют? Да всё элементарно, "это бизнес, ничего личного". Из пункта 1 помним, что час вашей работы стоит 600 рублей. Вам дают задачу на 10 ваших часов. В первую итерацию вы тратите их целиком, во вторую + 5 часов и допустим в третью ещё 3 часа. Итого потрачено 18 часов, то есть задача из 6000 за разработку превратилась для работодателя в 10800 рублей. Дальше, думаю, объяснять не надо.

  5. И последнее, самое сладкое "а какой у вас соцпакет? Ой, у вас ДМС только через 6 месяцев и кофе в кофемашине не самый вкусный, значит я тут работать не смогу". На моей памяти сразу всплыла история из одной очень экологичной компании. Мы тогда искали сильного IOS-разработчика, сроки горели, поэтому бюджет был ограничен только суммой в резюме соискателей. К слову отбор был в несколько этапов: телефонное интервью с hr, очное техническое интервью, тестирование на математические и логические способности (до сих пор не понимаю зачем им это) и наконец проверка службы безопасности. От первого звонка до оффера легко могло пройти от 2-х недель до полутора месяцев. В этом случае всё длилось 2,5 недели. И вот он, наш идеальный кандидат, заходит в наш отдельный кабинет, без окон, садиться за рабочее место и спрашивает "Простите, извините, а где у вас тут кофемашина?". А мы честно отвечаем "Сорри, кофемашины нет". Наступает обед, новый сотрудник выходит за дверь, заходит в отдел кадров, забирает трудовую, отключает телефон и после этого мы его уже не видели.


    Так вот я это к чему, не стоит искать компании ради "плюшек". Я поработал в огромных компаниях с громадным соцпакетом и количеством приятных бонусов превосходящем даже разумные пределы, но новичкам там делать нечего, поскольку там поток. И в этом потоке никто из матёрых программистов не будет вас учить, так как у этих матёрых программистов количество задач такое, что на вас останется пол часа в неделю. Но, с другой стороны, возвращаясь к пункту 1 зарплату в 100 000 рублей вам там смогут дать, вот только не факт, что вы получите опыт, да и скорее всего за эти 100 000 рублей даже там от вас будут ожидать уровень джун+, а не совсем новичка.

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


1. Адекватность
2. Адекватность
3. Адекватность

Подробнее..

Mind Map в помощь тестировщику

29.01.2021 00:15:15 | Автор: admin

Майндмап, Майнд карта, интеллект-карта, ассоциативная карта, диаграмма связей и т.д. устоявшегося русскоязычного термина пока нет.
Как, зачем, когда и надо ли?

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

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

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

Когда (если) структура понятна, можно переходить к электронному варианту.

Интеллект-карта визуализирует структуру связей!

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

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

Какая точка зрения верна?

Обе!
Противоречие только кажущееся, к этому вопросу мы вернемся позже.

Для начала нарисуем карту связей для ситуации бытовой посещение Торгового центра.

Декомпозируем верхнеуровневый Торговый центр до отделов которые нужно посетить.

Декомпозиция до отделовДекомпозиция до отделов

Теперь добавляем цель посещения (декомпозируем до товарных позиций, которые предстоит купить).

Декомпозиция до товарных позицийДекомпозиция до товарных позиций

А теперь смотрим на симпатичную карту и честно отвечаем на два вопроса:

Она вам поможет в ТЦ?

Стали бы рисовать такую для себя?

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

Так что немного тормозим и хорошо запоминаем:

визуализация призвана помогать, не стоит рисовать картинки ради картинок.

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

Декомпозиция до базовых действий (индивидуальная юзер стори)Декомпозиция до базовых действий (индивидуальная юзер стори)

И запоминаем второе правило:

Имеет значение: вы готовите рабочие документы для себя или для команды. Во втором случае учитывайте уровень подготовки/знаний о продукте тех кто будет работать с этими документами.

А если надо протестировать весь ТЦ?
Очевидно, что вносить все товарные позиции в карту совсем не вариант.
Здесь нужен уже другой подход.
Предположим, вам на проверку достался Цветочный павильон и у вас на руках есть макеты как это должно выглядеть. Нарисуем карту Интерфейса, она поможет проверить GUI, убедившись, что ничего не упущено и все соответствует требованиям.

ИнтерфейсИнтерфейс

Составлять чек-лист по карте весьма удобно. Технически саму карту можно использовать как готовый чек-лист. Лично мне эта схема не кажется удобной, для меня чек-листтаблицей предпочтительнее, но видела вполне успешные варианты (смотрите ниже ссылку на доклад Натальи Руколь).

С GUI разобрались, но Логику (прописанную в спецификации) нам тоже надо проверить.
В этом случае первый шаг декомпозиции будет по типу объектов (либо по зонам) с которыми взаимодействует пользователь.
Второй шаг декомпозиции: либо действия возможные с этими объектами (или в этой зоне), либо следующий уровень элементов для взаимодействия.

ЛогикаЛогика

А еслиспецификации нет или она представлена как небольшие юзер-стори?
Тогда удобно использовать карту сценариев, начав декомпозицию с тех самых глаголов, продолжив детализацией конкретных действий.

Карта сценариев / юзер сториКарта сценариев / юзер стори

Как видите Mind Map, в отличие от, например, таблицы принятия решений, не имеет единой формы. Это просто инструмент визуализации, позволяющий работать в рамках актуальных задач.

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

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

Контекст определяет подходы к тестированию и содержание конкретной интеллект-карты

И, как следствие, правы оба наставника.

Если говорить про ограничения, пожалуй надо упомянуть и про Карту (диаграмму) состояний и переходов (State & Transition).
Это конкретная техника тест-дизайна!
Не путайте ее с Интеллект-картами, невзирая на то, что Карту состояний вполне можно отрисовать в том же XMind (либо другой программе которой вы пользуетесь).

В карте состояний и переходов мы отслеживаем состояние одного объекта (!!!) в рамках одного процесса по шагам переходов.
В оригинале ("A Practitioner's Guide to Software Test Design" Lee Copeland) карта начинается с точки и ей же заканчивается.
В моем примере вместо начальной точки (вход) используется верхнеуровневая плашка с названием объекта Заказ букета, анализируем не букет, а именно заказ, прописывая его состояние, обязательно указывая действие на линии перехода. Постоянно задавая себе вопрос а что если. Это позволит не пропустить проверку сценариев передумал покупать, не хватило денег, не буду оплачивать и обнаружил брак, хочу вернуть.

НЕ путать с Картой состояний и переходов (State&Transition)НЕ путать с Картой состояний и переходов (State&Transition)

Возвращаемся к Mind map.

Интеллект-карты в тестировании бывают большими и подробными, такие я называючтоб не забыть.
Вот хороший пример мнемоник мобильного тестирования I SLICED UP FUN

и LONG FUN CUP

Хотите еще больше?
Смотрите шикарную карту Тестирование новой фичи от Катерины Спринсян из Badoo (публикацию читать! там же можно посмотреть карту "ближе")

Интеллект-карта также может быть и последовательной, применимо, например, при составлении тест-плана

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

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

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

Говорят даже что работа с картами положительно сказывается на мыслительных процессах :)


Ну и немного ссылок:
.

Mind Mapping, или как заставить свой мозг работать лучше http://personeltest.ru/aways/habr.com/ru/company/devexpress/blog/291028/

Вебинар для Аналитиков от Натальи Руколь, о пользе MindMap https://www.youtube.com/watch?v=-kPdHMBz-so

А еще карты можно рисовать фломастерами. Состояния и переходы от Натальи Руколь https://www.youtube.com/watch?v=8H9HgjrwQHA

Как нарисовать карту приложения http://okiseleva.blogspot.com/2020/01/mind-map.html

Mind map вместо тест-кейса http://personeltest.ru/aways/habr.com/ru/company/badoo/blog/418353/

MindMaps для груминга задач http://personeltest.ru/aways/habr.com/ru/company/avito/blog/437952/

Ps Бонусом для начинающих две задачи по тест-дизайну с ответами, комментариям, вариантами решений. / Совет: вначале решаете сами, потом уже листаете на ответ. https://drive.google.com/file/d/1bUoYe6KeNO8bR3hhv-9ChuNPo0CwG1PX/view

Подробнее..

Смена профессии. Путь из никуда в QA

22.02.2021 16:14:10 | Автор: admin

Когда пора увольняться

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

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

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

Принимаем решение

Ok, наверное надо что-то менять, найти новую работу и уйти со старой. Но как решиться, если одолевают сомнения, а перемены вызывают не очень приятные чувства?

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

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

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

Первые шаги

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

Нам понадобится:

  1. Определить цель. Зачем это всё. Куда хотим прийти, в какую сторону расти и как развиваться.

  2. План составить, сроки определить. Время на всё это дело заложить.

  3. Начать учиться. Можно самостоятельно, можно где-то или с кем-то, тут кто как больше любит.

  4. Вступить в профессиональные сообщества. Общаться, задавать вопросы, интересоваться.

  5. Поглядывать на рынок. Прицениваться, описание вакансий смотреть, про компании читать.

  6. Готовить резюме. Тут с ходу не разберёшься - постепенно корректируя детали, добавляя полезное, удаляя лишнее, доводить до совершенства.

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

Цель

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

А дальше, целеполагание.

- Какую проблему ты решаешь?
- Почему ты хочешь решить проблему таким способом?
- Сколько часов в день ты готов выделять?
- Когда решится проблема?

Ну хорошо, проблема решилась, зарплата выше, коллектив хороший, работа удалённая и развиваться дают.
А куда развиваться?
Зачем всё это?
Может менеджером стать или в код погрузиться. Стартап запустить.
Может эмигрировать?
Чего ты хочешь достичь через год? Два года? Пять лет? Десять? Надо знать. Сразу.

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

План

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

Ну например, цель - эмиграция. Куда, зачем, как - отдельная история. Что у нас имеется? Профильное образование или нет? Уровень языка? Возраст? Средства? Бэкграунд какой? Предположим, как вариант - эмиграция по работе. Тогда первая работа может быть любая, вторая - желательно на зарубежную компанию. 2-3 года релевантного опыта надо как минимум, за это время много чего может произойти (оставляем место для спонтанности в жизни), но помним - всё это время мы занимаемся эмиграцией: учим язык, получаем образование, откладываем деньги, налаживаем связи и не забываем про другие способы поехать.

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

Обучение

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

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

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

Ты вступил в профессиональные сообщества, выполняешь практические задания, берёшь учебные проекты, анализируешь рынок, уже можешь поспорить с кем-то из твоей будущей сферы деятельности. Готов ли ты сейчас? Рано ещё.

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

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

Нет предела ступеням мастерства.
Но нужно начать идти.

Сообщества

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

Ты и так сделал всё, что мог, не твоя вина, что не получилось. Что важнее: преуспеть или чтобы не было твоей вины в неудаче?

Необходимо чётко определить, что от тебя зависит, а что не зависит; идти по пути и не искать оправданий. Ты или сделал всё, что нужно, или нет.

Подготовил резюме? Даже отправил в пару мест? Никто не зовёт? Проблема.

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

Резюме

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

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

Что делать?

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

2. Фотка.
Выбери нормальную фотку, без комментариев.

3. Позиция.
Как тебя будут искать, так ты и должен писать название искомой должности. И не надо писать, что ты Junior, это я как работодатель там сам разберусь. Ты - специалист.

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

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

6. Обо мне.
Напиши почему ты здесь. Напиши почему именно ты. Напиши так, что бы я поверил.

И теперь открой своё резюме всем. Обновляй каждый день. Откликайся на всё. Рассылай всем. Каждый день.

Интервью

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

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

Не про тебя? Рассылаешь резюме со скоростью 100 штук в секунду? Интервью распланированы на недели вперед? Супер!
Получил отказ, второй, третий, пятый? Превосходно. Ты всё ближе к заветной работе!

Ты грамотно планируешь время собеседований, готовишься к каждому, узнаешь про компанию, у тебя появляются вопросы.
Ты внимательно слушаешь на интервью, записываешь, что спрашивают. Ты вообще, всегда всё записываешь.
Снова отказ? Грустно? Нет конечно. Это твой звездный час, ты теперь точно знаешь, что делать! Что ещё учить, какие вопросы задавать, какие задачи решать, о чем говорить.

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

И вот тебе сделали оффер. Ты же этого хотел?
Тогда начни уже ходить на собеседования.

Страхи

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

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

Это сложная работа, надо быть очень умным, ты не сможешь. Ты там будешь лишним. Может, если будешь долго и усиленно учиться - возможно, но когда? Столько дел.

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

У тебя никогда ничего не получится.

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

У них были те же сомнения, такие же страхи, похожие проблемы, как у тебя.
Они смогли, сможешь и ты.

Каждый, кто захотел, каждый, кто начал идти, кто проделал работу, каждый кто освоил, кто получил оффер - каждый достоин.

Ты не можешь только одно.
Ты не можешь не идти по пути.
Так иди же!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru