Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Мотивация

Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell

Время чтения статьи ~13 минут 5
Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Ha... главное изображение

Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.

Виталий Брагилевский — в прошлом старший преподаватель СПбГУ на факультете математики и компьютерных наук. Его работу на программе «Современное программирование» поддерживала международная IT-компания JetBrains. Виталий 20 лет преподавал и разрабатывал учебные планы, в том числе учил студентов языкам программирования. Курировал программы сотрудничества с Apple и Amazon. Переводил и редактировал книги о языке программирования Haskell, состоял в комитете по разработке стандарта языка и даже написал книгу Haskell in Depth. В мае 2022 года Виталий сменил должность в JetBrains на девелопер-адвоката и переехал на Кипр.

Я больше не преподаватель программирования

Как только окончил университет, я стал преподавать и разрабатывать учебные планы. Вместе с коллегами определял, чему именно учить студентов. Занимался этим 20 лет: сначала в Ростове-на-Дону, в Южном Федеральном университете, а затем в СПбГУ.  В преподавании мне нравилось, что ко мне приходят люди, которые чего-то не знают, а уходят уже с навыками и умениями. Это конкретный результат: люди стали специалистами. Я с огромным удовольствием встречаюсь и общаюсь с теми, кто у меня учился, горжусь их успехами. Радостно осознавать, что в какой-то степени в этом есть и моя заслуга.

JetBrains всегда поддерживала образование — выдавала стипендии и покрывала стоимость обучения лучшим студентам, поддерживала людей, которые занимались преподаванием и научной деятельностью в сфере Computer Science, спонсировала образовательные программы. Например, программу «Современное программирование» в СПбГУ.  Я был частью этой поддержки — работал в университете, занимался учебным планированием, читал курсы. Моя работа продолжалась вплоть до конца апреля этого года. С мая я перешел непосредственно в команду JetBrains и уже три месяца могу представляться девелопер-адвокатом.

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

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

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

Я написал книгу про Haskell, потому что увидел проблему

https://www.manning.com/books/haskell-in-depth

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

Первая лекция из курса Компилятор GHC языка Haskell

Написание собственной книги Haskell in Depth было поэтапным процессом. Сначала я редактировал переводы. Первой редакторской работой стал перевод книги Мирана Леповача «Изучай Haskell во имя добра!». Мне не понравился готовящийся к публикации русский перевод, я написал в издательство и предложил его улучшить. После этого я перевел еще несколько книг и редактировал переводы.

Следующий этап — сотрудничество с американским издательством Manning для участия в работе над англоязычным изданием «Программируй на Haskell». Моя должность называлась Technical Prover, ее можно перевести как «технический редактор». Я должен был просмотреть все примеры кода, проверить ошибки, дать рекомендации.

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

Сначала придумал план, пошел с ним в издательство и получил согласие. Только после этого начал писать, и на это у меня ушло катастрофически много времени – почти 3 года до момента издания.

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

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

Я не уверен в исключительной ценности книг

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

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

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

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

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

Самоуверенность хуже лени

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

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

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

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

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

Могу привести в пример человека, с которым работал. Это Саймон Пейтон-Джонс, один из создателей языка Haskell, самый главный и очень известный человек в комьюнити. И в обсуждениях он никогда не боится признать, что чего-то он не знает. Тогда он просто задает вопросы — даже про язык, который сам и создал.

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

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

Главный лайфхак как все успеть — работать

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

Читайте также: Лучшие Self-Help книги для разработчиков от Хекслета и издательства МИФ

Первую неделю пандемии я провел в ощущении, что нахожусь в полуотпускном режиме, но быстро понял: пора брать себя в руки. В марте 2020 года мне приходилось трекать время и все планировать. У меня было восемь рабочих часов в день. Я обычно рано начинаю работать, поэтому с 8 до 12 утра занимался только книгой. Отслеживать затраченное на разные процессы время требовалось не для работодателя, а для меня. Нельзя запланировать, что сегодня я закончу пятую главу, но можно определить, что четыре часа я буду заниматься написанием книги. Результат зависит и от других факторов, но важно, что я запланировал на это определенное время.

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

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

Для этого важно не просто пробежать глазами, а вникнуть глубже. Это сложно, но безумно полезно и помогает осваивать материал. Так появляется знание «на кончиках пальцев». Не понимание, как найти ответ на Stack Overflow, а возможность самому его в любой момент написать. Такого уровня тяжело достигать, но это важно. Я в своей книжке обязательно пишу к примерам кода рекомендации, как с ними эффективно работать для закрепления знаний. Программист должен уметь писать код и работать с уже существующим.

Я читаю книги о войне, Кинга в оригинале и слежу за происходящим в мире

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

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

Из последнего прочитанного — Лоренс Даррелл «Горькие лимоны». Мне посоветовали эту книгу в Telegram-канале, потому что она про Кипр. Когда я приехал на остров, мне было интересно больше узнать про его историю. Это художественно-публицистическая книга, в которой описывается период 50-х годов, борьба за независимость, и я с большим удовольствием ее прочитал.

Сейчас читаю новый роман Стивена Кинга «Билли Саммерс». Я не то чтобы очень люблю этого автора, но читаю его книги только в оригинале. Книги на английском языке идут медленнее, но Кинг интересно пишет.  До этого прочитал его предыдущий роман «Институт». Еще с большим удовольствием читаю экономически-исторический научпоп. Из недавнего — книга «Why nation fail?» — о том, почему одни государства богатые, а другие бедные.

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

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

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

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

Аватар пользователя Маша Даровская
Маша Даровская 09 августа 2022
5
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря