Привет, Хабр! Настала осень, птицы потянулись на юг, нормальные люди — на диван, а мы, «железное безымянное направление» проектной исследовательской школы GoTo, сердито курлыча и ощетинясь паяльниками, зажатыми в стальных руках-крыльях, сбиваемся в бронированный клин, чтобы лететь 28 октября в Питер на осеннюю школу в ИТМО.

image

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

О проблемах нарицания


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

Зануды с определениями обычно не в почете, в том числе когда речь заходит о так называемой «образовательной робототехнике». Будучи по ту сторону баррикад, с которой уточнять неудобно, мы в GoTo, тем не менее, озадачились вопросом подходящего имени для того направления, которое исторически называлось «направлением робототехники».


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

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

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

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


Как мы выкручивались: пытались умничать («ferrum studium») и шутить («цифро-аналоговое шапито»). Руководство говорит: это вообще не поймут. А мы в ответ: вон, у нас среди понятных биоинформатик и анализов данных завелась «черная лямбда», поди тоже без сносок не разберешь, может это вообще что-то венерическое… Ну да ладно, руководству виднее.

GoTo, осень 2017, Санкт-Петербург. Робототехника и интернет вещей*


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

Первым делом для проекта нужна задача. В идеальном случае это чья-то реальная потребность. Не обязательно “продукт для стартапа”, который должен быть выпущен миллиардным тиражом, главное — наличие хотя бы одного будущего пользователя с потребностью. Добыть реального пользователя, чью задачу мы хотя бы в теории можем решить, непросто: 50% таких задач будет срезано на старте ограничениями по времени и деньгам, еще 30% для подростка скучны, им чаще всего не интересно отапливать теплицы.

Оставшиеся 20% — это наши с примерами в виде детских протезов с Моторикой, систем слежения за наполнением ящиков для CharityShop, упаковочных станков, умных гантель для Intel и прочих проектов на основе идей участников.


Как будто бы парадокс: ключевой момент идеального проекта — его реальность (тут Платон бы взвыл, да). Если мы, препы или участники, начинаем играть в воображаемого заказчика с воображаемым проектом, у нас плодятся воображаемые требования, допущения и послабления. Предельный вариант — «проект, в основе которого лежат четыре металлических линейки и шесть колес». Это трагикомичный случай из недавней истории, за который нам стыдно; таких случаев мы всеми силами стараемся избегать.

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

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


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

Поскольку нам стоять на месте тоже скучно, мы внедряем практики, направленные на минимизацию простоев: придумываем способы точнее определить уровень участника, пытаемся делать комбинированные потоки КМБ+проект.

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

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

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

Прежде чем перейти к примерам, оставим небольшую ремарку-ответ-уточнение на законный вопрос «Зачем»? Дело в том, что любое сложное устройство это, по сути, абстракция. Интерфейс, скрывающий внутри себя сложные и загадочные потроха. Язык С++ это абстракция, позволяющая не обращаться напрямую к регистрам и не беспокоиться о целостности стека. Ультразвуковой датчик это абстракция, скрывающая крайне непростые подробности распространения и отражения звука. Автомобиль — абстракция от окружающей непогоды, позволяющая легко скрадывать пространство между двумя точками.

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

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

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

Для начала немного атмосферы
















Примеры

  • Дотошное изучение датчика. Возьмем, к примеру, ультразвуковой дальномер. Стандартная практика: вот четыре провода, вот «Ultrasonic.h», на выходе сантиметры до препятствия. Ну, ладно, мы обычно зануднее: волну туда инициируем стробом, волна сюда возвращается, замеряем длительность импульса на входе, делим на константу, на выходе сантиметры и поехали дальше.

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

    Мы считаем, что не всем посчастливится лишь пользоваться черными ящиками, кому-то их нужно будет создавать и обслуживать, и это шаг в указанном направлении. Кроме этого, жертвы этой задачи будут существенно лучше понимать измерения расстояния ультразвуком.
  • Другой пример: в соседней аудитории, где занимаются прикладные программисты, вычислительная машина, которая гоняет код, кажется, является данностью. Нам же традиционно приходится считать байты. Эксперимент показал, что кое-кто из подростков хочет проникнуть в устройство компьютера, поэтому в этот раз мы приложим логику к транзисторам, соберем из них вентили, а потом из вентилей сделаем разные мультиплексоры и сумматоры. Это одинаково далеко от практически применимого проекта и традиционного курса молодого бойца “про всё на свете”, но является достаточно узким сюжетом — мы попробуем обнаружить вкус к этому или хотя бы отдернуть завесу магии.
  • Сейчас трудно найти разработчиков, не использующих “кубики”. У соседей на прикладном программировании берут веб целыми фреймворками. Мы предложим научиться изучать технологии, взяв для примера BLE. Это будет не «вот так работает bluetooth low energy», но «вот таким путем мы идем, чтобы узнать, как работает bluetooth low energy». На выходе — знание о том, как он работает, и о том, как идти, чтобы изучить другую технологию.

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

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

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

Если у вас есть:

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

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


  1. VT100
    17.10.2017 20:11

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

    Эт-та пяць! Желаю успеха!