«Плыви или умри». Как я месяц учился в школе программирования 42 Silicon Valley
14 часов в лаборатории, барбекю на заднем дворе и офис Google
42 Silicon Valley — одна из самых известных школ программирования в Кремниевой долине. Чтобы выбрать лучших студентов, администрация школы проводит четырехнедельный интенсивный курс Piscine, во время которого, как написано на сайте, все должны «кодить изо всех сил». Выпускник Бауманского университета и владелец компании «МосПресс» Алексей Ершов окончил эту программу минувшим летом. Он рассказал «Цеху», зачем поехал в эту школу, как проходило обучение и почему до финального экзамена дошли чуть больше половины студентов.
Я окончил Бауманку, но пошел по нестандартному пути — на основе полученных в вузе знаний создал производственный бизнес. Наша компания «МосПресс» производит металлические детали для разных отраслей промышленности методом ротационной вытяжки. Мы делаем как металлическую посуду для лучших российских ресторанов, так и элементы систем катапультирования самолетов.
В этом году я провел свой летний отпуск в школе 42 Silicon Valley, где взрослых обучают программированию. 28 дней по 10-14 часов в сутки без выходных 300 человек со всего мира постигали с нуля азы языка Си в Кремниевой долине.
Школа создана в 2013 году во Франции миллиардером Ксавье Ньелем. Это некоммерческий проект. У школы есть два отделения — в Париже и Фримонте (Кремниевая долина, США), а также масса франшиз по миру. В России, например, это «Школа 21» от Сбербанка. Обучение абсолютно бесплатное, во Фримонте также предоставляют бесплатное общежитие, тебе необходимо оплатить только транспорт и питание.
Отбор в школу проходит необычным образом. Сначала кандидат на поступление учится на четырехнедельном интенсивном курс Piscine, что в переводе с французского значит «бассейн». По результатам обучения администрация школы сообщает, кто из участников прошел. Точные критерии отбора держатся в секрете. Организаторы говорят, что смотрят на прогресс студентов, трудолюбие и вклад в сообщество — например, насколько активно ты помогаешь своим однокурсникам во время проверки домашних заданий, или как много ты отвечаешь на просьбы в общей ленте Slack.
Чтобы попасть программу нужно было только отправить заявку за несколько месяцев до ее начала. Никаких тестов на знание программирования или английского языка сдавать не пришлось. Мне говорили, что раньше требовалось решать игровые задачи на алгоритмы, но последнее время во Фримонте их отменили. Такой подход отражает идею школы: программированию может научиться каждый в любом возрасте, главное — желание. Его наличие как раз и проверяют во время сверхинтенсивной программы, которую я проходил этим летом.
Неофициальный девизом Piscine — Swim or Die («Плыви или умри» на английском — Прим.«Цеха»). Это четко отражает то, что происходило на программе: до финального экзамена на четвертой неделе обучения добрались только 187 человек из 300. Остальные просто покинули курс в ходе программы.
По моим оценкам, около 60-70% из тех, кто дошел до конца интенсива, — парни и девушки 20–40 лет, которые работают в США на низкооплачиваемой работе в ресторанах, на стройке или в такси. Сейчас их среднегодовой доход — $30-50 000 до вычета налогов. Для них переквалифицироваться в программистов — значит выйти на годовой доход в $100-120 000 и стать средним классом. Были и другие примеры: немецкий консультант из большой четверки, который, как и я, заранее знал, что приехал в отпуск на программу и дальше учиться точно не пойдет; учитель информатики из соседнего с Фримонтом города, которому интересно погрузиться в новую методику; артист балета из Сан-Франциско, который в 35 лет уже вышел на пенсию и осваивал новую профессию; дедушка, пришедший с внуком за компанию.
Каждый день мы получали порцию заданий (обычно 10 — 25), выстроенных по нарастающей сложности. Таким образом, какой бы высокий начальный уровень у тебя ни был, ты обязательно встретишься с заданием, которое точно вызовет затруднения. Ты не обязан решить все, день считается зачтенным, если выполнена четверть заданий. Каждый день мы проходили новую тему, чтобы помочь в ней разобраться в системе открывались обучающие видео на 10-30 минут с теорией с примерами, но этого никогда не было достаточно. Одно из правил школы — «Если ты что-то не знаешь, спроси у соседа справа, потом у соседа слева, а потом у Гугла».
С первого же дня ты сталкиваешься не просто со сложными задачами, а с целыми областями знаний, о существовании которых ты даже не знал. Сначала ты входишь в ступор, потом путем неимоверных усилий, совершая череду ошибок, все-таки справляешься с заданием и приобретаешь навык, который становится привычным инструментом. Например, в первый день необходимо заполнить файл и отправить его в специальный репозиторий на сервер с помощью команды git через терминал. Для программиста это на уровне команды «скопировать-вставить», для тех, кто сталкивается с этой командой первый раз, она кажется магией. В первый день на это задание у меня ушло около трех часов, зато потом подобная операция занимала несколько секунд. Сложность заданий росла с геометрической прогрессией и к концу второй недели перед нами уже стояла задача по написанию программы, которая автоматически решает судоку.
Что же помогает так быстро учиться? На мой взгляд, этому способствует несколько особенностей программы:
Очень высокая цена ошибок. Ты можешь решить все задания дня, но стоит тебе допустить ошибку в первом — и все следующие задания не засчитываются. Причем ошибкой считается даже работающая, но оформленная не по нормам программа. Таким образом лишний пробел в коде программы может лишить тебя баллов за весь день работы. Это учит внимательности и ответственности.
Проверки. Прежде чем программа автоматически проверит результаты твоей работы за предыдущий день, ты должен проверить двоих своих одногруппников и получить две проверки своего кода. В это время происходит масса важнейших событий: ты учишься разбираться в чужом коде, разъяснять свой код, видишь, как ту же задачу решали другим путем, можешь попросить разъяснения тех упражнений, с которыми не справился.
Групповые задачи. Раз в неделю вы можете записаться в группу из трех человек для решения общей задачи, на что отводятся выходные. В этом случае вы с одной стороны учитесь командной работе, распределяя задачи между всеми, а с другой —видите, как наблюдаете за подходом других ребят.
Экзамены. Каждую пятницу проходит экзамен, во время которого у вас нет доступа в интернет, списывание пресекается нещадно. Задачи делятся по уровням сложности: решив верно задачу, ты получаешь за нее баллы и переходишь на следующий, более сложный уровень. Если ты допустил ошибку, то тебе предлагается задача того же уровня, но за нее уже дается меньшее количество баллов. На финальный экзамен отводится 8 часов — на нем ты проверяешь, что у тебя осталось в голове после недели обучения.
Персональное расписание. С третьего дня обучения тебе приходится самому расставлять приоритеты.
1. В 8:42 утра в системе открывается новый день, и ты можешь приступить к изучению новой темы и решению задач по ней, которые нужно сдать до 23:42 следующего дня.
2. В 23:42 закроется вчерашний день, и до этого времени нужно отправить в репозиторий код тех задач, которые ты успел решить, поэтому ты можешь доделывать то, что не успел. Задачи составлены так, что ты точно не решишь 100%, и тебе нужно самому принимать решение, когда остановиться.
3. Чтобы получить проверку системой позавчерашнего дня, тебе требуется провести очные проверки двоих одногруппников и получить две проверки своего кода. На это тоже нужно время.
4. Задачи, которые будут на экзамене, известны заранее и ты можешь посвятить часть времени им.
У меня не было цели поступить в школу, но я так увлекся обучением, что в среднем в лаборатории проводил от 10 до 14 часов в день. И так было у всех: ты либо окунаешься во все это с головой и плывешь, либо вылетаешь. Эта программа позволила мне:
Понять из чего состоят IT продукты
На основе знаний, полученных в Бауманском университете, и накопленного опыта я понимаю, из каких элементов и типов работ состоит большинство физических вещей, окружающих нас. Начиная от листка бумаги и заканчивая многоэтажным домом. С цифровыми продуктами был пробел: сколько и какой работы необходимо чтобы сделать Яндекс карты, или систему по распознаванию объектов, или начинку умного холодильника? После программы часть этих вопросов прояснилась, я четко понял, как и куда нужно двигаться дальше, чтобы расширять картинку.
Протестировать современные методы обучения на себе
Учусь я непрерывно, но с методикой peer-to-peer столкнулся впервые. Я заранее знал, что в школе нет преподавателей и все должны учиться друг у друга. Было очень интересно узнать, как это делать результативно и эффективно. У этой системы точно есть большое будущее. К примеру, увидев недавно пилотный российский курс для отдела продаж, построенный на схожих принципах, я не задумываясь вписал в него свою команду.
Прожить месяц как один из героев сериала Silicon Valley
До этого я уже был в Долине в роли туриста, на это раз хотелось окунуться в жизнь местного жителя — и это на 100% удалось. Кодить сутками напролет, посещать питчи стартапов, побывать в офисах Гугла и Убера, жарить стейки на заднем дворе на барбекю-вечеринке, посетить джазовый концерт в Стенфорде. Во многом благодаря «Школе 42» удалось получить этот ни с чем несравнимый опыт.