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

На собеседовании было два задания. Первое заключалось в проектировании сервиса геопоиска с нуля. Дословно: «У нас есть база с координатами кафе, у пользователя есть устройство с GPS навигатором и он может нам передать свои координаты + радиус поиска, а мы должны выдать все, что есть в указанном радиусе от него. Неторопливо, с чувством, с толком, с расстановкой». Мне казалось, что я за час спроектировал всё. Всё. Вообще всё. Только штат сотрудников не набрал :) Ну там было много наводящих вопросов, были подсказки. Однаков внутренне я ликовал — я спроектировал 2ГИС!

Вторым была анкетка. Листочек А4, двухсторонний. Вот такой. Список терминов по группам, оценка по каждому термину от 0 до 4.
Если class — это знакомый термин, ставим [ 1 ]; если можешь рассказать что это такое, то [ 2 ]; если приходилось сталкиваться на практике, то [ 4 ]. По каждому блоку считаем сумму балов, пишем рядом с блоком, затем суммируем по всем блокам.
Хм. А я, оказывается, знаю не всё. Оказывается, я много чего не знаю. Особенно грустно, что это уже тогда использовалось в компании. Могу ли я считаться ведущим, если вот так вот первый встречный в компании расскажет мне о том, о чём я даже не догадывался.

Этот листок долго лежал у меня на столе. Месяц за месяцем я «чекрыжил» в нём пунктики. Некоторые были интересные, некоторые скучные. Из всего этого процесса особенно меня бесил подсчёт баллов. В оригинале это надо было посчитать на калькуляторе, но у меня же есть JavaScript! Сделал версию на KnockoutJS, счёт пошёл быстрее.

Затем я использовал этот документ для помощи своим коллегам. Теперь уже мы вместе работали над повышением своего уровня, проводили митинги-обзоры. Те, кто рассказывал, получал двоечку, а те кто слушал — единичку. Бывает и на практике что-то применяли.

За это время PHP чуть-чуть повысил циферку своей версии. Стало быть надо дополнять анкету новыми понятиями, терминами. Значит то, что вчера было оценено на максимум баллов или 100%, сегодня стало меньше. А ещё появился ReactPHP. А ещё новые версии фреймворков. И приложение стали разбивать на фронт и бэк. И на фронте jQuery начали заменять на Backbone, Ember, Knockout, Angular.

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

В прошлом году я проводил небольшое исследование по этой анкете. В опросе приняли участие 40 человек разного уровня владения веб-технологиями, от школьников до архитекторов. В моём исследовании был такие вопросы:
Узнал ли ты что-нибудь новое для себя просто просмотрев список терминов во время опроса?
Из 40 опрошенных 75% дали ответ «Да, я нашёл то, что было мне не известно».
Планируешь ли поискать что-нибудь из того, где поставил отметку 1?
32 из 40 ответили «Да».
Планируешь ли попробовать что-нибудь из того, где поставил отметку 1 или 2?
19 из 40 ответили «Да».

Ещё одно исследование я делал среди айтишников, в чьих резюме или на их веб-страницах встречались оценки своих навыков, такие графики с процентами. Скиллбары или скиллбублики. «Я знаю JavaScript на 90%». С ними я созванивался через Skype и выяснял, как они вычисляют свой процент владения технологиями, задавал вопросы по своему же опроснику. В общем нет у них тех процентов, как и у меня когда-то не было. Потому что они не знают эталона, по которому нужно проводить измерение. Их ход мыслей при выставлении оценок примерно такой: «100 не поставлю, чтобы не придирались; но я же не идиот, уже 3 года вожусь с этим — поставлю себе 83%». Пальцем в небо, с потолка. Не верьте скиллбарам.

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


up.uptlo.com

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

Последней фразой я хочу открыть вам путь к непрерывному обучению:
Желаю вам никогда не получать 100%!

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


  1. kein
    12.02.2019 07:25
    +1

    1. copist Автор
      12.02.2019 07:27

      Да, эту таблицу видел. Спасибо.


  1. oxidmod
    12.02.2019 10:06

    ИМХО, анкета по ссылке немного бестолковая.
    Я вот только слышал о MooTools, Prototype, Dojo и ExtJS. А табличную верстку только в письмах видел да паре легаси проектах. Но учить их не собираюсь. Это лишь инструменты, причем некоторые из них устаревшие давно. Подобные анкеты в мире фронтенда будут устаревать быстрей, чем вы их соберете.


    1. copist Автор
      12.02.2019 10:44

      Как минимум раз в год надо чистить, согласен

      Табличную вёрстку учить несложно, а вот тестировать письма — это тот ещё гемор. Но сейчас есть фреймфорки типа такого mjml.io конечно, он берёт на себя эти знания древних технологий.


    1. copist Автор
      12.02.2019 10:58

      А, это про Google Doc? Там технологии 2011 года. Старые, да.


  1. poxvuibr
    12.02.2019 10:24
    +1

    Там в опроснике в паттернах опечатка — composit вместо composite и 3 (три) паттерна под названием mixin.


    1. copist Автор
      13.02.2019 05:15

      Исправил


  1. uzverkms
    12.02.2019 11:14

    Тема, конечно, любимая холиварная. Но не могли бы вы описать, в чём суть _методологий_ Waterfall и Agile? Кажется мне, что и остальная часть этого опросника — набор случайных слов из разных предметных областей.
    Один из важных советом по прохождению интервью: никогда не верить перечисленным в вакансиях спискам требований и технологий. Всегда на месте выяснять что же на самом деле нужно работодателю.


  1. Oxoron
    12.02.2019 11:28

    В свое время видел такую шкалу:

    Оцените ваши знания инструмента:
    1. Не слышал.
    2. Слышал.
    3. Видел, как используют.
    4. Пробовал.
    5. Регулярно использую.
    6. Обучаю пользоваться.
    7. Читал исходники
    8. Реквестил патч-фикс
    9. Мейнтейню репозиторий.
    10. Я — автор.


    1. Koneru
      12.02.2019 11:55
      +2

      Есть ситуации, к применению С++, даже 10 по этой шкале, означает 70% знания. Бьёрна Страуструп.


    1. dom1n1k
      12.02.2019 13:08

      Интересная шкала, но не очень линейная. середину нужно чуть более дробную.


    1. Cerberuser
      12.02.2019 15:09
      +1

      По своему опыту могу сказать — 7 и 6 (и даже 8 и 5) могут идти и в обратном порядке: например, заслал фикс для какого-нибудь маленького модуля в большом фреймворке, который применил в одном проекте и больше не трогал. Хотя это, конечно, скорее исключение, чем правило.


  1. drafff
    12.02.2019 11:58
    +1

    В шаблонах проектирование mixin встречается 3 раза подряд.


    1. copist Автор
      12.02.2019 12:42

      да, удалю лишние копии


  1. urtow
    12.02.2019 12:26

    592, но я не web программист, думаю простительно.

    Список хороший, но получив такое на собеседовании, я предложу уволить архитектора. Потому что в теории это все выглядит красиво, а на практике смесь из нескольких php фреймворков и других языков программирования. Да еще и erlang. И зоопарк из ОС. И еще зачем-то указание Linux, после двух разных дистрибутивов.
    Оно вам точно все вместе надо?
    Если это web студия, пишушая на заказ, тут другой вопрос конечно, да.


    1. copist Автор
      12.02.2019 12:41

      На практике 100% никому не нужно. Достаточно одного из МVCшных фреймворков на бэке и желания изучить другой. То есть проходной порог может быть 25-30%


  1. Vadem
    12.02.2019 13:24

    Не нашёл как прямо там написать комментарий, поэтому напишу сюда.
    По ООП:
    final — это, может быть ключевое слово из Java, Kotlin, C++ и наверняка из каких-то других языков. Надо, наверное, уточнять язык. А то непонятно.
    attribute — может быть из C#, C++, Rust, наверное ещё откуда-то. Может быть общее поняти из ООП.
    Короче, есть рац. предложение уточнять откуда понятие.


    1. Vadem
      12.02.2019 13:27
      +1

      Посыпаю голову пеплом. Это всё, наверное, из PHP. Я просто с этим языком практически не знаком. Не догадался.


    1. copist Автор
      13.02.2019 05:14

      Да, это PHP. Надо уточнять, согласен.


  1. ReaderReader
    12.02.2019 19:50
    +1

    мне в руки попался интересный документ, который не даёт успокоиться до сих пор. Он мешает мне поставить самому себе 100% владения айтишными хард и софт скилам.

    Вот это на мой взгляд очень важно для любого разработчика. Не придти в состояние уверенности «всезнания» или почти «всезнания». Встретить что-то (книгу, анкету, статью, доклад, не суть важно), что покажет тебе, что на самом-то деле ты ничего не знаешь. Что в казалось бы изученной тобой вдоль и поперек области еще столько всего, что даже непонятно, с какой стороны начать все это изучать. И не забывать про это в дальнейшем. У меня лично это была книга Andrei Alexandrescu «Modern C++ Design: Generic Programming and Design Patterns Applied» после первых же глав которой я с очумелым видом, понял, что вообще ничего не знаю о C++


  1. KTG
    13.02.2019 04:41

    Когда оценка знаний по технологиям и программированию сводится к знаниям фреймворков — это тупиковая ветвь развития.
    Жизненный цикл у них с каждым новым всё меньше и меньше, не говоря уже о разнообразии, которые выражается не только в синтаксисе, но и в походе к решению задач в целом.
    Простой пример:
    Сегодня ты знаешь Angular — завтра его не стало. Тебя на свалку.
    Сегодня ты знаешь JS — завтра не стало Angular. Ты до сих пор знаешь JS.
    Хотя если не стало JS, то копаем глубже к знаниям основ программирования, алгоритмов.
    Мысль: Жизненный цикл ЯП выше чем фреймворков.
    Если ты не знаешь/не сталкивался/не работал с Ember, Backbone или ещё каким фреймворком, то это не значит что ты не знаешь JavaScript.