Виталий Брагилевский — автор книги про язык программирования 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 лет.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 16:46:55 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="_V3LZ2xvvlYdepUlzvvII16-tvbFhdyityV1wKbyE5kSjABQnhETNqs5sb3C9DhUnrebXM2yIgAKxe-U9PX09w";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell</title>
<meta name="description" content="Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.">
<link rel="canonical" href="https://ru.hexlet.io/blog/posts/vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie">
<meta property="og:title" content="Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell">
<meta property="og:description" content="Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.">
<meta property="og:image" content="https://ru.hexlet.io/vite/assets/blog_post-7eTyeLLt.webp">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="x98D1O8YKuLY8xmIQY_qg54u9XXESlDQJxKf_wWkqhYoDsjjHWaHgm6wPRBNgBr0XifY38x9rnKa8gWrV6NNeA" />
<script src="/vite/assets/inertia-INZxX8jp.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-6pOtQ3OW.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="/vite/assets/blog_post-7eTyeLLt.webp"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzczMSwicHVyIjoiYmxvYl9pZCJ9fQ==--f5df4883f3f678321cb4fa96e9ce657bd5ee1adf/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Static%20website-cuate.png"/><link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY3NywicHVyIjoiYmxvYl9pZCJ9fQ==--745022c2f47ba4203dd11cd8922cd55d5bebfdca/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-rafiki.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/blog/posts/show","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T16:46:55.474Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"t5XdK3OcXjJkkFYxfkKCBSz38PQYTw_7Q-nwazt6jpFYRBYcgeLzUtLTcqlyTXJy7P7dXhB48Vn-CWo_aX1p_w","post":{"model_name":"BlogPost","category":{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},"creator":{"public_name":"Маша Даровская","id":418115,"is_tutor":false},"tags":[{"id":1119,"slug":"bez-steka","name":"Без стека"}],"id":1961,"title":"Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell","slug":"vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie","state":"published","summary":"Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.\n\n","votes_count":5,"created_at":"2022-08-09T08:56:19.854Z","published_at":"2022-08-09T09:42:16.661Z","body":"**Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.**\n\nВиталий Брагилевский — в прошлом старший преподаватель СПбГУ на факультете математики и компьютерных наук. Его работу на программе «[Современное программирование](https://bsse.compscicenter.ru/)» поддерживала международная IT-компания JetBrains. Виталий 20 лет преподавал и разрабатывал учебные планы, в том числе учил студентов языкам программирования. Курировал программы сотрудничества с Apple и Amazon. Переводил и редактировал книги о языке программирования Haskell, состоял в комитете по разработке стандарта языка и даже написал книгу [Haskell in Depth](https://www.manning.com/books/haskell-in-depth). В мае 2022 года Виталий сменил должность в JetBrains на девелопер-адвоката и переехал на Кипр.\n\n::programs\n\n## Содержание\n\n## Я больше не преподаватель программирования\n\nКак только окончил университет, я стал преподавать и разрабатывать учебные планы. Вместе с коллегами определял, чему именно учить студентов. Занимался этим 20 лет: сначала в Ростове-на-Дону, в Южном Федеральном университете, а затем в СПбГУ. В преподавании мне нравилось, что ко мне приходят люди, которые чего-то не знают, а уходят уже с навыками и умениями. Это конкретный результат: люди стали специалистами. Я с огромным удовольствием встречаюсь и общаюсь с теми, кто у меня учился, горжусь их успехами. Радостно осознавать, что в какой-то степени в этом есть и моя заслуга.\n\nJetBrains всегда поддерживала образование — выдавала стипендии и покрывала стоимость обучения лучшим студентам, поддерживала людей, которые занимались преподаванием и научной деятельностью в сфере Computer Science, спонсировала образовательные программы. Например, программу «Современное программирование» в СПбГУ. Я был частью этой поддержки — работал в университете, занимался учебным планированием, читал курсы. Моя работа продолжалась вплоть до конца апреля этого года. С мая я перешел непосредственно в команду JetBrains и уже три месяца могу представляться [девелопер-адвокатом](https://habr.com/ru/company/haulmont/blog/555902/).\n\nЭто забавно, потому что во время беседы о моем переходе на эту должность с руководителем в JetBrains я сказал, что устал от сферы образования, 20 лет в ней проработал, сколько можно. Мне ответили, что на новой работе тоже придется много этим заниматься. Я пояснил, что не хочу читать длинные курсы, но кого-то чему-то научить всегда только рад.\n\nМне кажется, что смена работы полезна. Когда 20 лет занимаешься одним и тем же, начинает надоедать. Главное ощущение от перемен: я нахожусь в руках компании, которой доверяю, поэтому не было страшно менять работу и переезжать. Я хотел оставаться в JetBrains и знал, что компания организует мой переезд на Кипр и смену проекта максимально легко и комфортно. И вот я уже три месяца как уехал и теперь даже иногда купаюсь в море после работы.\n\nСейчас я большую часть времени занимаюсь языком программирования Rust. Я всегда старался не быть адептом одного языка, поэтому за все время работы преподавал больше дюжины. Моя насущная цель — сделать так, чтобы мои доклады по Rust начали принимать на конференциях. Первая профессиональная цель, которую надо достичь: предложить сообществу этого языка то, что было бы ему интересно. \n\n## Я написал книгу про Haskell, потому что увидел проблему\n\n\nhttps://www.manning.com/books/haskell-in-depth\n\nКогда что-то «плохо лежит», мне сразу хочется это исправить, перенести на нужное место. Так у меня случилось и с издательской деятельностью, переводами, написанием книги, участием в промышленных конференциях, подготовкой докладов, чтением кратких курсов. Все это было дополнением к преподавательской деятельности.\n\n::youtube{id=\"DS0dgYVnHy4\"}\n\n*Первая лекция из курса Компилятор GHC языка Haskell*\n\nНаписание собственной книги [Haskell in Depth](https://www.manning.com/books/haskell-in-depth) было поэтапным процессом. Сначала я редактировал переводы. Первой редакторской работой стал перевод книги Мирана Леповача «[Изучай Haskell во имя добра!](https://www.ozon.ru/product/izuchay-haskell-vo-imya-dobra-8696277/)». Мне не понравился готовящийся к публикации русский перевод, я написал в издательство и предложил его улучшить. После этого я перевел еще несколько книг и редактировал переводы.\n\nСледующий этап — сотрудничество с американским издательством [Manning](https://www.manning.com/) для участия в работе над англоязычным изданием «Программируй на Haskell». Моя должность называлась Technical Prover, ее можно перевести как «технический редактор». Я должен был просмотреть все примеры кода, проверить ошибки, дать рекомендации.\n\nВ какой-то момент я сделал в блоге на Medium обзорную [рецензию на все существующие свежие издания о Haskell](https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749). Я хотел взять несколько книжек и про каждую честно написать по блог-посту, но в процессе понял, как все плохо с литературой по этому языку. Так я увидел проблему, которое нужно было исправить – и приступил к работе.\n\nСначала придумал план, пошел с ним в издательство и получил согласие. Только после этого начал писать, и на это у меня ушло катастрофически много времени – почти 3 года до момента издания.\n\nМоя работа в JetBrains в то время подразумевала решение университетских задач, а подготовка учебных материалов и преподавание на курсах учитывались отдельно и могли выходить за пределы рабочего времени. Мы договорились, что половину рабочего времени я буду тратить на университет, а вторую половину — на другие образовательные вещи, которые кажутся мне полезными и интересными. Ради них меня и взяли в компанию. В итоге я согласовал с начальством, что написание книги будет входить в мои рабочие часы.\n\nКнига получилась нормальной — этого достаточно. Мне за нее совершенно точно не стыдно. Но я, конечно, не считаю, что понял о языке все.\n\n## Я не уверен в исключительной ценности книг\n\nБольше писать книги пока не хочется. Кажется, поэты говорят: «Если можешь не писать — не пиши». Я не ощущаю острой необходимости в писательской работе: это не нужно ни мне, ни другим. Книжек и так много, а методы изучения сейчас кардинально меняются, поэтому писать новые книги необязательно, особенно с учетом того, что это тяжело и малодоходно.\n\nНаписать книжку, чтобы прославиться, стать узнаваемым в сообществе — можно, только зачем? Я не пытался продвигать книгу за пределами Twitter, мне было лень отправлять доклады на все конференции и тем самым рекламировать себя как автора в Haskell-сообществе. Поэтому я не думаю, что благодаря ей как-то прославился в мировом комьюнити.\n\nХорошо, чтобы книги были, но я не уверен, что их должно быть много и что большое количество людей будет их читать. Само обучение через книги перестает быть прямым способом донесения информации. Я все еще его использую: например, когда осваиваю новый язык, то беру книжку и с ее помощью изучаю как он устроен. Но от раскрученного видео на Youtube или онлайн-курсов часто гораздо больше пользы. Это более массовый и эффективный путь.\n\n::youtube{id=\"Rk5wNGBIilM\"}\n\nНеважно, какой способ обучения вы выберете. Главное, чтобы это помогало учиться, держать себя в тонусе и двигаться дальше. Например, я сейчас осваиваю редактор ScreenFlow. С помощью роликов на Youtube я узнал про множество фич и собираюсь применять их в своих видео в роли девелопер-адвоката.\n\nЕсли в какой-то момент для учебы человеку понадобится сложный контент, он всегда может найти пост в блоге или нужную книгу. Главное — желание научиться. Иногда читаешь книжку, а она навевает тоску. В ней может быть описан плохой пример или содержаться гигантская и ненужная справочная информация. В этом случае порой легче и интереснее прочесть документацию.\n\n## Самоуверенность хуже лени\n\nОчень сложно совмещать написание книги с основной работой: организовать все процессы, подобрать примеры. Но сложнее всего было чувствовать уверенность в том, что делаю, что выбрал правильный путь.\n\nК счастью, эта уверенность так и не пришла, потому что, на мой взгляд, уверенность — путь к загниванию. Всегда нужно изучать новое. Если кажется, что можно поставить точку, значит, настало время заняться чем-то другим.\n\nСреди студентов мне встречались разные ребята. Одна категория меня в молодости очень раздражала — это абсолютные бездельники, которые ничего не делают, которым ничего не нужно. Я злился — ведь я придумывал им классные задания, хотел чему-то научить, а им не надо. Но потом я начал к этому спокойно относиться, потому что понял, что для них мой предмет действительно может быть не обязательным. Может, им достаточно на тройку сдать.\n\nНо есть еще одна категория, которую я хотел бы выделить — излишне уверенные в себе студенты. Я до сих пор их не понимаю. Это люди, убежденные, что абсолютно все знают хорошо, и это очень мешает им учиться. Из-за своей самоуверенности они не пытаются углубиться в предмет. Мне такая категория студентов не нравится, с ними эту проблему крайне сложно обсуждать. Мысль, что каждый человек чего-то не знает, для них слишком обидна.\n\nПроблема излишней уверенности в себе встречается не только у студентов, но и у опытных специалистов. Это люди с короной на голове, абсолютные знатоки всего, не готовые слушать никого вокруг. Обычно они считают остальных слабее и глупее. Я же, наоборот, уверен: всегда найдется кто-то, кто гораздо лучше вас в вашем деле.\n\nМогу привести в пример человека, с которым работал. Это [Саймон Пейтон-Джонс](https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D0%B9%D1%82%D0%BE%D0%BD-%D0%94%D0%B6%D0%BE%D0%BD%D1%81,_%D0%A1%D0%B0%D0%B9%D0%BC%D0%BE%D0%BD), один из создателей языка Haskell, самый главный и очень известный человек в комьюнити. И в обсуждениях он никогда не боится признать, что чего-то он не знает. Тогда он просто задает вопросы — даже про язык, который сам и создал.\n\n\n\nКогда язык создан и компилятор написан, пользователи начинают на этом языке писать код. Чем больше пользователей, тем больше способов использовать элементы языка не так, как было задумано. Потом автор часто недоумевает: как это вообще оказалось возможным, я такого даже не представлял.\n\nЭто нормально, потому что языки программирования — это сложные объекты. В них всегда можно что-то применить так, как и в голову не приходило в момент проектирования. Очень частый пример, когда берут две фичи, два элемента языка, и начинают их совместно применять. Тут может скрываться масса всего интересного. Современные языки достаточно сложные для того, чтобы один человек мог быть абсолютным специалистом абсолютно во всем и на максимальном уровне.\n\n## Главный лайфхак как все успеть — работать\n\nЧтобы все успевать, нужно просто работать. Сейчас это не очень модно, хочется как-то облегчить себе жизнь. Но важно создать для себя какие-то рамки, в которых вам достаточно комфортно. В 20 лет я мог писать программу 12 часов беспрерывно. Сейчас я понимаю, что так нельзя — поэтому какое-то время работаю, а потом честно и спокойно отдыхаю, имея на это полное право.\n\n\n> ### Читайте также:\n> [Лучшие Self-Help книги для разработчиков от Хекслета и издательства МИФ](https://ru.hexlet.io/blog/posts/self-help)\n\nПервую неделю пандемии я провел в ощущении, что нахожусь в полуотпускном режиме, но быстро понял: пора брать себя в руки. В марте 2020 года мне приходилось трекать время и все планировать. У меня было восемь рабочих часов в день. Я обычно рано начинаю работать, поэтому с 8 до 12 утра занимался только книгой. Отслеживать затраченное на разные процессы время требовалось не для работодателя, а для меня. Нельзя запланировать, что сегодня я закончу пятую главу, но можно определить, что четыре часа я буду заниматься написанием книги. Результат зависит и от других факторов, но важно, что я запланировал на это определенное время.\n\nВ начале 2022 года я перестал так серьезно отслеживать время. Но все еще люблю работать по [Помидоро-таймеру](https://pomofocus.io/). Он позволяет фиксировать периоды активной работы и обязательные перерывы между ними. Это хороший способ себя организовать и легальная возможность вовремя выпить чаю — на это есть законная пауза.\n\nМне кажется, что самый важный навык для освоения тяжелых тем — это усидчивость. Я часто ловлю себя на том, что какой-то сложный материал прочитываю быстро, и в голове ничего не остается. Сложно заставить себя второй, третий раз это прочитать. Еще сложнее сесть и попробовать сделать что-то похожее, модифицировать код из книжки или статьи, попробовать что-то в нем поменять.\n\nДля этого важно не просто пробежать глазами, а вникнуть глубже. Это сложно, но безумно полезно и помогает осваивать материал. Так появляется знание «на кончиках пальцев». Не понимание, как найти ответ на Stack Overflow, а возможность самому его в любой момент написать. Такого уровня тяжело достигать, но это важно. Я в своей книжке обязательно пишу к примерам кода рекомендации, как с ними эффективно работать для закрепления знаний. Программист должен уметь писать код и работать с уже существующим.\n\n## Я читаю книги о войне, Кинга в оригинале и слежу за происходящим в мире\n\nРаньше я любил активности на свежем воздухе, но за пандемию отвык. До 2020 года довольно много путешествовал, сейчас снова стараюсь вернуться к этому — больше ездить, ходить в музеи, заниматься образовательным туризмом.\n\nЯ люблю читать. Не техническую, а художественную, научно-популярную литературу, историю, экономику, биологию. Читаю много, все свободное время трачу на книги. Был период длиной в 2-3 месяца, когда я вообще ничего не читал, но сейчас возвращаюсь к этому хобби.\n\nИз последнего прочитанного — Лоренс Даррелл «Горькие лимоны». Мне посоветовали эту книгу в Telegram-канале, потому что она про Кипр. Когда я приехал на остров, мне было интересно больше узнать про его историю. Это художественно-публицистическая книга, в которой описывается период 50-х годов, борьба за независимость, и я с большим удовольствием ее прочитал.\n\nСейчас читаю новый роман Стивена Кинга «Билли Саммерс». Я не то чтобы очень люблю этого автора, но читаю его книги только в оригинале. Книги на английском языке идут медленнее, но Кинг интересно пишет. До этого прочитал его предыдущий роман «Институт». Еще с большим удовольствием читаю экономически-исторический научпоп. Из недавнего — книга «[Why nation fail?](https://www.amazon.com/Why-Nations-Fail-Origins-Prosperity/dp/0307719227)» — о том, почему одни государства богатые, а другие бедные.\n\n::posts\n\nДаже сейчас я могу читать и про войну, и про историю. Я страстный поклонник исторического журнала «Дилетант». Выписывал его с самых первых номеров и читаю до сих пор. На днях начал читать апрельский номер, посвященный маленькой и победоносной русско-японской войне.\n\nНамеренно пытаюсь впитать в себя все ужасы насущной повестки из соцсетей. Это тяжело, но чувствую, что нужно. Прятаться от всего я считаю неправильным, ну а мозг позволяет расстраиваться и при этом продолжать читать. Я в таком возрасте, что не могу делать вид, будто ничего не происходит.\n\nМне очень страшно наблюдать за происходящим сейчас в России, но в будущее смотрю с оптимизмом. В последние месяцы понял, что иметь долгосрочные планы на жизнь больше необязательно. Я почувствовал освобождение от них, и это скорее приятное ощущение, а не трагичное. В конце концов, совершенно не обязательно знать, в какой стране будешь жить через 5 лет.\n","reading_time":8,"url":"https://ru.hexlet.io/blog/posts/vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie","cover_thumb_variant":null,"cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp","cover_main_variant":"/vite/assets/blog_post-7eTyeLLt.webp","related_stacks_count":5},"relatedPosts":[{"model_name":"BlogPost","id":1116,"title":"Лайв-кодинг, совместное решение задач, поддержка друг друга: как устроено групповое обучение программированию на Хекслете","slug":"group-training","summary":"На Хекслете существует несколько форматов обучения, один из них — «Групповой», в котором студенты учатся программированию не в одиночку, а с другими начинающими разработчиками под руководством опытного наставника. Подробно рассказываем, как устроено групповое обучение на Хекслете и что оно дает.","created_at":"2020-11-19T08:52:11.759Z","published_at":"2023-03-09T11:00:49.359Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"},{"model_name":"BlogPost","id":420,"title":"50 лучших фильмов и сериалов о технологиях","slug":"filmoteka-dlya-programmistov-25-filmov-o-programmirovanii-tehnologiyah-i-iskusstvennom-intellekte","summary":"Сделали подборку фильмов о технологиях, программировании, искусственном интеллекте и роботах.","created_at":"2019-07-30T13:04:28.309Z","published_at":"2022-12-30T12:14:16.059Z","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTY5OSwicHVyIjoiYmxvYl9pZCJ9fQ==--ecd38e914c68debadef03c88a60804b37146e5b5/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B%20IT-01.png"},{"model_name":"BlogPost","id":694,"title":"8 книг, которые помогут вам в жизни и в работе: советует комьюнити-менеджер Хекслета Наталья Мусина","slug":"marketolog-heksleta-natalya-musina-8-knig-kotorye-pomogut-vam-v-zhizni-i-v-rabote","summary":"Комьюнити-менеджер Хекслета Наталья Мусина делится подборкой своих любимых книг, которые помогают расширять кругозор.","created_at":"2020-02-12T14:19:01.136Z","published_at":"2022-12-29T12:48:31.067Z","cover_list_variant":"/vite/assets/blog_post-7eTyeLLt.webp"}],"category":{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},"mainStackCategory":{"id":2,"name":"Курсы по веб-разработке","slug":"web_development","short_name":"Веб-разработка","order":190,"state":"published","category_slug":"courses_web_development"},"categories":[{"id":6,"name":"Мотивация","slug":"motivation","state":"published","created_at":"2016-10-06T18:31:38.903Z"},{"id":3,"name":"Истории успеха","slug":"success","state":"published","created_at":"2016-07-30T12:57:18.308Z"},{"id":14,"name":"Дневник студента","slug":"student-diary","state":"published","created_at":"2019-02-25T13:27:09.471Z"},{"id":4,"name":"Код","slug":"code","state":"published","created_at":"2016-08-23T13:33:44.258Z"},{"id":12,"name":"Карьера","slug":"career","state":"published","created_at":"2017-07-21T15:42:21.481Z"}],"relatedLandings":[{"stack":{"id":34,"slug":"algorithms","title":"Алгоритмы и структуры данных","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4000,"duration_in_months":2},"id":56,"slug":"algorithms","title":"Алгоритмы и структуры данных","subtitle":"Навык, который увеличит ваши шансы пройти алгоритмическое интервью в международные компании на 80%","subtitle_for_lists":"Алгоритмы для собеседований","locale":"ru","current":true,"duration_in_months_text":"2 месяца","stack_slug":"algorithms","price_text":"от 3 900 ₽","duration_text":"2 месяца","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png"},{"stack":{"id":50,"slug":"discrete-mathematics","title":"Дискретная математика","audience":"for_beginners","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4650,"duration_in_months":1},"id":88,"slug":"discrete-mathematics","title":"Дискретная математика","subtitle":"Навык дискретной математики для укрепления теоретических знаний и лучшего понимания алгоритмов и структур данных","subtitle_for_lists":"Дискретная математика для программистов","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"discrete-mathematics","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png"},{"stack":{"id":37,"slug":"python-sicp","title":"СИКП на Python","audience":"for_programmers","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4150,"duration_in_months":1},"id":62,"slug":"python-sicp","title":"СИКП на Python","subtitle":"Навык понимать код на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи","subtitle_for_lists":"Изучите Python на глубоком уровне для решения сложных задач","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"python-sicp","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png"},{"stack":{"id":7,"slug":"python","title":"Python-разработчик","audience":"for_beginners","start_type":"weekly","pricing_model":"purchase","priority":"high","kind":"profession","state":"published","stack_state":"finished","order":10,"duration_in_months":10},"id":7,"slug":"python","title":"Python-разработчик ","subtitle":"Изучите Python, Django, REST и Fast API для создания веб-приложений","subtitle_for_lists":"Изучите Python, Django, REST и Fast API для создания веб-приложений","locale":"ru","current":true,"duration_in_months_text":"10 месяцев","stack_slug":"python","price_text":"от 6 792 ₽","duration_text":"10 месяцев","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzczMSwicHVyIjoiYmxvYl9pZCJ9fQ==--f5df4883f3f678321cb4fa96e9ce657bd5ee1adf/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Static%20website-cuate.png"},{"stack":{"id":131,"slug":"flask","title":"Веб разработка на Python","audience":"for_beginners","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":1050,"duration_in_months":1},"id":222,"slug":"flask","title":"Веб-разработка на Python","subtitle":"Навык создания веб-приложений на Flask для разработки лёгких и гибких серверных решений","subtitle_for_lists":"Навык создания веб-приложений на Flask","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"flask","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY3NywicHVyIjoiYmxvYl9pZCJ9fQ==--745022c2f47ba4203dd11cd8922cd55d5bebfdca/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-rafiki.png"}]},"url":"/blog/posts/vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie","version":"0b0c6d4ebbd40fd58630a0dd89cc25544ccdf24e","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","author":"Маша Даровская","name":"Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell","datePublished":"2022-08-09T09:42:16.661Z","headline":"Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.\n\n","image":"/vite/assets/blog_post-7eTyeLLt.webp","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5}]}</script><div style="--container-size:var(--container-size-lg);margin-top:var(--mantine-spacing-xl);height:100%" class="m_7485cace mantine-Container-root" data-size="lg" data-strategy="block"><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"position":1,"@type":"ListItem","item":{"@id":"/blog","name":"Блог Хекслета"}},{"position":2,"@type":"ListItem","item":{"@id":"/blog/categories/motivation","name":"Мотивация"}},{"position":3,"@type":"ListItem","item":{"@id":"/blog/posts/vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie","name":"Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell"}}]}</script><div style="margin-bottom:var(--mantine-spacing-xs)" class="m_8b3717df mantine-Breadcrumbs-root"><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/"><div style="color:inherit" class="m_4451eb3a mantine-Center-root"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-home-link "><path d="M20.085 11.085l-8.085 -8.085l-9 9h2v7a2 2 0 0 0 2 2h4.5"></path><path d="M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 1.807 1.143"></path><path d="M20 21a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M20 16a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M15 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path><path d="M21 16l-5 3l5 2"></path></svg></div></a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog">Блог Хекслета</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><a style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:inherit" class="mantine-focus-auto m_849cf0da m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-size="sm" data-underline="hover" href="/blog/categories/motivation">Мотивация</a><div class="m_3b8f2208 mantine-Breadcrumbs-separator">/</div><p style="--text-fz:var(--mantine-font-size-sm);--text-lh:var(--mantine-line-height-sm);white-space:normal;color:var(--mantine-color-dimmed)" class="mantine-focus-auto m_f678d540 mantine-Breadcrumbs-breadcrumb m_b6d8b162 mantine-Text-root" data-size="sm">Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell</p></div><style data-mantine-styles="inline">.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}@media(min-width: 36em){.__m__-_R_eub_{margin-bottom:var(--mantine-spacing-xs);}}</style><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root __m__-_R_eub_"><style data-mantine-styles="inline">.__m__-_R_deub_{width:100%;}@media(min-width: 36em){.__m__-_R_deub_{width:70%;}}@media(min-width: 75em){.__m__-_R_deub_{width:75%;}}</style><div class="__m__-_R_deub_"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size)" class="m_8a5d1357 mantine-Title-root" data-order="1">Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell</h1></div></div></div><div style="position:absolute;top:calc(18.75rem * var(--mantine-scale))" class=""></div><style data-mantine-styles="inline">.__m__-_R_2iub_{--grid-gutter:var(--mantine-spacing-xl);}</style><div class="m_410352e9 mantine-Grid-root __m__-_R_2iub_"><div class="m_dee7bd2f mantine-Grid-inner"><style data-mantine-styles="inline">.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}@media(min-width: 62em){.__m__-_R_dmiub_{--col-flex-grow:auto;--col-flex-basis:66.66666666666667%;--col-max-width:66.66666666666667%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_dmiub_"><div style="--stack-gap:var(--mantine-spacing-md);--stack-align:stretch;--stack-justify:flex-start;margin-bottom:var(--mantine-spacing-xl)" class="m_6d731127 mantine-Stack-root"><div class=""><div style="--group-gap:var(--mantine-spacing-xs);--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-xl)" class="m_4081bf90 mantine-Group-root"><button style="--badge-height:var(--badge-height-sm);--badge-padding-x:var(--badge-padding-x-sm);--badge-fz:var(--badge-fz-sm);--badge-bg:var(--mantine-color-default);--badge-color:var(--mantine-color-default-color);--badge-bd:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);cursor:pointer;color:inherit" class="m_347db0ec mantine-Badge-root" data-variant="default" data-size="sm" type="button" aria-label="Без стека"><span class="m_5add502a mantine-Badge-label">Без стека</span></button></div><div style="--group-gap:calc(0.625rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-sm);color:var(--mantine-color-gray-text)" class="m_4081bf90 mantine-Group-root"><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap;margin-inline-end:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root">9 августа 2022 г.</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-clock "><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"></path><path d="M12 7v5l3 3"></path></svg></div>8 минут</div><div style="--group-gap:calc(0.1875rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div>5</div></div><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img style="--image-radius:var(--mantine-radius-md);--image-object-fit:cover;width:100%;height:100%" class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" alt="Виталий Брагилевский: о преподавании, новой работе в JetBrains и книге про Haskell"/></div></div><div role="link" tabindex="0" style="cursor:pointer"><button style="display:block;width:100%" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Присоединяйтесь к нашему Telegram-сообществу"><div style="background-color:light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-6))" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:flex-start;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><div style="--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:auto;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-brand-telegram "><path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4"></path></svg></div>Присоединяйтесь к нашему Telegram-сообществу</div></div></button></div><div style="margin-bottom:var(--mantine-spacing-xl)" class="m_d08caa0 mantine-Typography-root"><p><strong>Виталий Брагилевский — автор книги про язык программирования Haskell и девелопер-адвокат в компании JetBrains. Мы поговорили с ним о преподавании, литературных вкусах, роли книг в обучении и самом страшном грехе всех специалистов.</strong></p>
<p>Виталий Брагилевский — в прошлом старший преподаватель СПбГУ на факультете математики и компьютерных наук. Его работу на программе «<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://bsse.compscicenter.ru/" rel="noopener noreferrer" target="_blank">Современное программирование</a>» поддерживала международная IT-компания JetBrains. Виталий 20 лет преподавал и разрабатывал учебные планы, в том числе учил студентов языкам программирования. Курировал программы сотрудничества с Apple и Amazon. Переводил и редактировал книги о языке программирования Haskell, состоял в комитете по разработке стандарта языка и даже написал книгу <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.manning.com/books/haskell-in-depth" rel="noopener noreferrer" target="_blank">Haskell in Depth</a>. В мае 2022 года Виталий сменил должность в JetBrains на девелопер-адвоката и переехал на Кипр.</p>
<style data-mantine-styles="inline">.__m__-_R_5derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_5derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_5derddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/algorithms?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">2 месяца</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Алгоритмы и структуры данных</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Алгоритмы для собеседований</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NDAyOCwicHVyIjoiYmxvYl9pZCJ9fQ==--ae9eed98663dd1201759d042a5ba7ca790866156/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Programming-bro.png" alt="Алгоритмы и структуры данных" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/discrete-mathematics?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дискретная математика</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дискретная математика для программистов</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png" alt="Дискретная математика" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/python-sicp?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Для продвинутых</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">СИКП на Python</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите Python на глубоком уровне для решения сложных задач</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mzc1OCwicHVyIjoiYmxvYl9pZCJ9fQ==--023ea18f500b1c4c91617fa96bbc52df8395da39/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20engineer-bro.png" alt="СИКП на Python" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/python?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">10 месяцев</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Python-разработчик </p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Изучите Python, Django, REST и Fast API для создания веб-приложений</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzczMSwicHVyIjoiYmxvYl9pZCJ9fQ==--f5df4883f3f678321cb4fa96e9ce657bd5ee1adf/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Static%20website-cuate.png" alt="Python-разработчик " loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 6 792 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/flask?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Веб-разработка на Python</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Навык создания веб-приложений на Flask</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY3NywicHVyIjoiYmxvYl9pZCJ9fQ==--745022c2f47ba4203dd11cd8922cd55d5bebfdca/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Code%20typing-rafiki.png" alt="Веб-разработка на Python" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=blog_post&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div>
<h2 id="heading-2-1">Содержание</h2>
<ul>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-2">Я больше не преподаватель программирования</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-3">Я написал книгу про Haskell, потому что увидел проблему</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-4">Я не уверен в исключительной ценности книг</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-5">Самоуверенность хуже лени</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-6">Главный лайфхак как все успеть — работать</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="#heading-2-8">Я читаю книги о войне, Кинга в оригинале и слежу за происходящим в мире</a></li>
</ul>
<h2 id="heading-2-2">Я больше не преподаватель программирования</h2>
<p>Как только окончил университет, я стал преподавать и разрабатывать учебные планы. Вместе с коллегами определял, чему именно учить студентов. Занимался этим 20 лет: сначала в Ростове-на-Дону, в Южном Федеральном университете, а затем в СПбГУ. В преподавании мне нравилось, что ко мне приходят люди, которые чего-то не знают, а уходят уже с навыками и умениями. Это конкретный результат: люди стали специалистами. Я с огромным удовольствием встречаюсь и общаюсь с теми, кто у меня учился, горжусь их успехами. Радостно осознавать, что в какой-то степени в этом есть и моя заслуга.</p>
<p>JetBrains всегда поддерживала образование — выдавала стипендии и покрывала стоимость обучения лучшим студентам, поддерживала людей, которые занимались преподаванием и научной деятельностью в сфере Computer Science, спонсировала образовательные программы. Например, программу «Современное программирование» в СПбГУ. Я был частью этой поддержки — работал в университете, занимался учебным планированием, читал курсы. Моя работа продолжалась вплоть до конца апреля этого года. С мая я перешел непосредственно в команду JetBrains и уже три месяца могу представляться <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://habr.com/ru/company/haulmont/blog/555902/" rel="noopener noreferrer" target="_blank">девелопер-адвокатом</a>.</p>
<p>Это забавно, потому что во время беседы о моем переходе на эту должность с руководителем в JetBrains я сказал, что устал от сферы образования, 20 лет в ней проработал, сколько можно. Мне ответили, что на новой работе тоже придется много этим заниматься. Я пояснил, что не хочу читать длинные курсы, но кого-то чему-то научить всегда только рад.</p>
<p>Мне кажется, что смена работы полезна. Когда 20 лет занимаешься одним и тем же, начинает надоедать. Главное ощущение от перемен: я нахожусь в руках компании, которой доверяю, поэтому не было страшно менять работу и переезжать. Я хотел оставаться в JetBrains и знал, что компания организует мой переезд на Кипр и смену проекта максимально легко и комфортно. И вот я уже три месяца как уехал и теперь даже иногда купаюсь в море после работы.</p>
<p>Сейчас я большую часть времени занимаюсь языком программирования Rust. Я всегда старался не быть адептом одного языка, поэтому за все время работы преподавал больше дюжины. Моя насущная цель — сделать так, чтобы мои доклады по Rust начали принимать на конференциях. Первая профессиональная цель, которую надо достичь: предложить сообществу этого языка то, что было бы ему интересно.</p>
<h2 id="heading-2-3">Я написал книгу про Haskell, потому что увидел проблему</h2>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/sePzsDe.png" alt="" loading="lazy"/>
<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.manning.com/books/haskell-in-depth" rel="noopener noreferrer" target="_blank">https://www.manning.com/books/haskell-in-depth</a></p>
<p>Когда что-то «плохо лежит», мне сразу хочется это исправить, перенести на нужное место. Так у меня случилось и с издательской деятельностью, переводами, написанием книги, участием в промышленных конференциях, подготовкой докладов, чтением кратких курсов. Все это было дополнением к преподавательской деятельности.</p>
<div></div>
<p><em>Первая лекция из курса Компилятор GHC языка Haskell</em></p>
<p>Написание собственной книги <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.manning.com/books/haskell-in-depth" rel="noopener noreferrer" target="_blank">Haskell in Depth</a> было поэтапным процессом. Сначала я редактировал переводы. Первой редакторской работой стал перевод книги Мирана Леповача «<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.ozon.ru/product/izuchay-haskell-vo-imya-dobra-8696277/" rel="noopener noreferrer" target="_blank">Изучай Haskell во имя добра!</a>». Мне не понравился готовящийся к публикации русский перевод, я написал в издательство и предложил его улучшить. После этого я перевел еще несколько книг и редактировал переводы.</p>
<p>Следующий этап — сотрудничество с американским издательством <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.manning.com/" rel="noopener noreferrer" target="_blank">Manning</a> для участия в работе над англоязычным изданием «Программируй на Haskell». Моя должность называлась Technical Prover, ее можно перевести как «технический редактор». Я должен был просмотреть все примеры кода, проверить ошибки, дать рекомендации.</p>
<p>В какой-то момент я сделал в блоге на Medium обзорную <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749" rel="noopener noreferrer" target="_blank">рецензию на все существующие свежие издания о Haskell</a>. Я хотел взять несколько книжек и про каждую честно написать по блог-посту, но в процессе понял, как все плохо с литературой по этому языку. Так я увидел проблему, которое нужно было исправить – и приступил к работе.</p>
<p>Сначала придумал план, пошел с ним в издательство и получил согласие. Только после этого начал писать, и на это у меня ушло катастрофически много времени – почти 3 года до момента издания.</p>
<p>Моя работа в JetBrains в то время подразумевала решение университетских задач, а подготовка учебных материалов и преподавание на курсах учитывались отдельно и могли выходить за пределы рабочего времени. Мы договорились, что половину рабочего времени я буду тратить на университет, а вторую половину — на другие образовательные вещи, которые кажутся мне полезными и интересными. Ради них меня и взяли в компанию. В итоге я согласовал с начальством, что написание книги будет входить в мои рабочие часы.</p>
<p>Книга получилась нормальной — этого достаточно. Мне за нее совершенно точно не стыдно. Но я, конечно, не считаю, что понял о языке все.</p>
<h2 id="heading-2-4">Я не уверен в исключительной ценности книг</h2>
<p>Больше писать книги пока не хочется. Кажется, поэты говорят: «Если можешь не писать — не пиши». Я не ощущаю острой необходимости в писательской работе: это не нужно ни мне, ни другим. Книжек и так много, а методы изучения сейчас кардинально меняются, поэтому писать новые книги необязательно, особенно с учетом того, что это тяжело и малодоходно.</p>
<p>Написать книжку, чтобы прославиться, стать узнаваемым в сообществе — можно, только зачем? Я не пытался продвигать книгу за пределами Twitter, мне было лень отправлять доклады на все конференции и тем самым рекламировать себя как автора в Haskell-сообществе. Поэтому я не думаю, что благодаря ей как-то прославился в мировом комьюнити.</p>
<p>Хорошо, чтобы книги были, но я не уверен, что их должно быть много и что большое количество людей будет их читать. Само обучение через книги перестает быть прямым способом донесения информации. Я все еще его использую: например, когда осваиваю новый язык, то беру книжку и с ее помощью изучаю как он устроен. Но от раскрученного видео на Youtube или онлайн-курсов часто гораздо больше пользы. Это более массовый и эффективный путь.</p>
<div></div>
<p>Неважно, какой способ обучения вы выберете. Главное, чтобы это помогало учиться, держать себя в тонусе и двигаться дальше. Например, я сейчас осваиваю редактор ScreenFlow. С помощью роликов на Youtube я узнал про множество фич и собираюсь применять их в своих видео в роли девелопер-адвоката.</p>
<p>Если в какой-то момент для учебы человеку понадобится сложный контент, он всегда может найти пост в блоге или нужную книгу. Главное — желание научиться. Иногда читаешь книжку, а она навевает тоску. В ней может быть описан плохой пример или содержаться гигантская и ненужная справочная информация. В этом случае порой легче и интереснее прочесть документацию.</p>
<h2 id="heading-2-5">Самоуверенность хуже лени</h2>
<p>Очень сложно совмещать написание книги с основной работой: организовать все процессы, подобрать примеры. Но сложнее всего было чувствовать уверенность в том, что делаю, что выбрал правильный путь.</p>
<p>К счастью, эта уверенность так и не пришла, потому что, на мой взгляд, уверенность — путь к загниванию. Всегда нужно изучать новое. Если кажется, что можно поставить точку, значит, настало время заняться чем-то другим.</p>
<p>Среди студентов мне встречались разные ребята. Одна категория меня в молодости очень раздражала — это абсолютные бездельники, которые ничего не делают, которым ничего не нужно. Я злился — ведь я придумывал им классные задания, хотел чему-то научить, а им не надо. Но потом я начал к этому спокойно относиться, потому что понял, что для них мой предмет действительно может быть не обязательным. Может, им достаточно на тройку сдать.</p>
<p>Но есть еще одна категория, которую я хотел бы выделить — излишне уверенные в себе студенты. Я до сих пор их не понимаю. Это люди, убежденные, что абсолютно все знают хорошо, и это очень мешает им учиться. Из-за своей самоуверенности они не пытаются углубиться в предмет. Мне такая категория студентов не нравится, с ними эту проблему крайне сложно обсуждать. Мысль, что каждый человек чего-то не знает, для них слишком обидна.</p>
<p>Проблема излишней уверенности в себе встречается не только у студентов, но и у опытных специалистов. Это люди с короной на голове, абсолютные знатоки всего, не готовые слушать никого вокруг. Обычно они считают остальных слабее и глупее. Я же, наоборот, уверен: всегда найдется кто-то, кто гораздо лучше вас в вашем деле.</p>
<p>Могу привести в пример человека, с которым работал. Это <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D0%B9%D1%82%D0%BE%D0%BD-%D0%94%D0%B6%D0%BE%D0%BD%D1%81,_%D0%A1%D0%B0%D0%B9%D0%BC%D0%BE%D0%BD" rel="noopener noreferrer" target="_blank">Саймон Пейтон-Джонс</a>, один из создателей языка Haskell, самый главный и очень известный человек в комьюнити. И в обсуждениях он никогда не боится признать, что чего-то он не знает. Тогда он просто задает вопросы — даже про язык, который сам и создал.</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="https://imgur.com/k1j6pvW.png" alt="" loading="lazy"/></p>
<p>Когда язык создан и компилятор написан, пользователи начинают на этом языке писать код. Чем больше пользователей, тем больше способов использовать элементы языка не так, как было задумано. Потом автор часто недоумевает: как это вообще оказалось возможным, я такого даже не представлял.</p>
<p>Это нормально, потому что языки программирования — это сложные объекты. В них всегда можно что-то применить так, как и в голову не приходило в момент проектирования. Очень частый пример, когда берут две фичи, два элемента языка, и начинают их совместно применять. Тут может скрываться масса всего интересного. Современные языки достаточно сложные для того, чтобы один человек мог быть абсолютным специалистом абсолютно во всем и на максимальном уровне.</p>
<h2 id="heading-2-6">Главный лайфхак как все успеть — работать</h2>
<p>Чтобы все успевать, нужно просто работать. Сейчас это не очень модно, хочется как-то облегчить себе жизнь. Но важно создать для себя какие-то рамки, в которых вам достаточно комфортно. В 20 лет я мог писать программу 12 часов беспрерывно. Сейчас я понимаю, что так нельзя — поэтому какое-то время работаю, а потом честно и спокойно отдыхаю, имея на это полное право.</p>
<blockquote>
<h3 id="heading-3-7">Читайте также:</h3>
<p><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://ru.hexlet.io/blog/posts/self-help" rel="noopener noreferrer" target="_blank">Лучшие Self-Help книги для разработчиков от Хекслета и издательства МИФ</a></p>
</blockquote>
<p>Первую неделю пандемии я провел в ощущении, что нахожусь в полуотпускном режиме, но быстро понял: пора брать себя в руки. В марте 2020 года мне приходилось трекать время и все планировать. У меня было восемь рабочих часов в день. Я обычно рано начинаю работать, поэтому с 8 до 12 утра занимался только книгой. Отслеживать затраченное на разные процессы время требовалось не для работодателя, а для меня. Нельзя запланировать, что сегодня я закончу пятую главу, но можно определить, что четыре часа я буду заниматься написанием книги. Результат зависит и от других факторов, но важно, что я запланировал на это определенное время.</p>
<p>В начале 2022 года я перестал так серьезно отслеживать время. Но все еще люблю работать по <a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://pomofocus.io/" rel="noopener noreferrer" target="_blank">Помидоро-таймеру</a>. Он позволяет фиксировать периоды активной работы и обязательные перерывы между ними. Это хороший способ себя организовать и легальная возможность вовремя выпить чаю — на это есть законная пауза.</p>
<p>Мне кажется, что самый важный навык для освоения тяжелых тем — это усидчивость. Я часто ловлю себя на том, что какой-то сложный материал прочитываю быстро, и в голове ничего не остается. Сложно заставить себя второй, третий раз это прочитать. Еще сложнее сесть и попробовать сделать что-то похожее, модифицировать код из книжки или статьи, попробовать что-то в нем поменять.</p>
<p>Для этого важно не просто пробежать глазами, а вникнуть глубже. Это сложно, но безумно полезно и помогает осваивать материал. Так появляется знание «на кончиках пальцев». Не понимание, как найти ответ на Stack Overflow, а возможность самому его в любой момент написать. Такого уровня тяжело достигать, но это важно. Я в своей книжке обязательно пишу к примерам кода рекомендации, как с ними эффективно работать для закрепления знаний. Программист должен уметь писать код и работать с уже существующим.</p>
<h2 id="heading-2-8">Я читаю книги о войне, Кинга в оригинале и слежу за происходящим в мире</h2>
<p>Раньше я любил активности на свежем воздухе, но за пандемию отвык. До 2020 года довольно много путешествовал, сейчас снова стараюсь вернуться к этому — больше ездить, ходить в музеи, заниматься образовательным туризмом.</p>
<p>Я люблю читать. Не техническую, а художественную, научно-популярную литературу, историю, экономику, биологию. Читаю много, все свободное время трачу на книги. Был период длиной в 2-3 месяца, когда я вообще ничего не читал, но сейчас возвращаюсь к этому хобби.</p>
<p>Из последнего прочитанного — Лоренс Даррелл «Горькие лимоны». Мне посоветовали эту книгу в Telegram-канале, потому что она про Кипр. Когда я приехал на остров, мне было интересно больше узнать про его историю. Это художественно-публицистическая книга, в которой описывается период 50-х годов, борьба за независимость, и я с большим удовольствием ее прочитал.</p>
<p>Сейчас читаю новый роман Стивена Кинга «Билли Саммерс». Я не то чтобы очень люблю этого автора, но читаю его книги только в оригинале. Книги на английском языке идут медленнее, но Кинг интересно пишет. До этого прочитал его предыдущий роман «Институт». Еще с большим удовольствием читаю экономически-исторический научпоп. Из недавнего — книга «<a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.amazon.com/Why-Nations-Fail-Origins-Prosperity/dp/0307719227" rel="noopener noreferrer" target="_blank">Why nation fail?</a>» — о том, почему одни государства богатые, а другие бедные.</p>
<style data-mantine-styles="inline">.__m__-_R_37derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:80%;}@media(min-width: 36em){.__m__-_R_37derddmiub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_37derddmiub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/group-training"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="Лайв-кодинг, совместное решение задач, поддержка друг друга: как устроено групповое обучение программированию на Хекслете"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Лайв-кодинг, совместное решение задач, поддержка друг друга: как устроено групповое обучение программированию на Хекслете</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">На Хекслете существует несколько форматов обучения, один из них — «Групповой», в котором студенты...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">9 марта 2023 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/filmoteka-dlya-programmistov-25-filmov-o-programmirovanii-tehnologiyah-i-iskusstvennom-intellekte"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTY5OSwicHVyIjoiYmxvYl9pZCJ9fQ==--ecd38e914c68debadef03c88a60804b37146e5b5/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX2FuZF9wYWQiOls3MDgsMzU0XSwic2F2ZXIiOnsicXVhbGl0eSI6ODV9fSwicHVyIjoidmFyaWF0aW9uIn19--324dc52aa55ebe818c2a887ebcb832b9ad1c0381/%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%D1%8B%20IT-01.png" loading="lazy" alt="50 лучших фильмов и сериалов о технологиях"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">50 лучших фильмов и сериалов о технологиях</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Сделали подборку фильмов о технологиях, программировании, искусственном интеллекте и роботах.</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">30 декабря 2022 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/marketolog-heksleta-natalya-musina-8-knig-kotorye-pomogut-vam-v-zhizni-i-v-rabote"><div style="padding-top:0rem;height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="margin-bottom:var(--mantine-spacing-sm)" class="m_599a2148 mantine-Card-section" data-first-section="true"><div style="--ar-ratio:2" class="m_71ac47fc mantine-AspectRatio-root"><img class="m_9e117634 mantine-Image-root" src="/vite/assets/blog_post-7eTyeLLt.webp" loading="lazy" alt="8 книг, которые помогут вам в жизни и в работе: советует комьюнити-менеджер Хекслета Наталья Мусина"/></div></div><p style="margin-bottom:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-lg);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">8 книг, которые помогут вам в жизни и в работе: советует комьюнити-менеджер Хекслета Наталья Мусина</p><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Комьюнити-менеджер Хекслета Наталья Мусина делится подборкой своих любимых книг, которые помогают...</p><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-sm)" class="m_4081bf90 mantine-Group-root">29 декабря 2022 г.<p style="font-size:inherit" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></a></div></div></div></div></div>
<p>Даже сейчас я могу читать и про войну, и про историю. Я страстный поклонник исторического журнала «Дилетант». Выписывал его с самых первых номеров и читаю до сих пор. На днях начал читать апрельский номер, посвященный маленькой и победоносной русско-японской войне.</p>
<p>Намеренно пытаюсь впитать в себя все ужасы насущной повестки из соцсетей. Это тяжело, но чувствую, что нужно. Прятаться от всего я считаю неправильным, ну а мозг позволяет расстраиваться и при этом продолжать читать. Я в таком возрасте, что не могу делать вид, будто ничего не происходит.</p>
<p>Мне очень страшно наблюдать за происходящим сейчас в России, но в будущее смотрю с оптимизмом. В последние месяцы понял, что иметь долгосрочные планы на жизнь больше необязательно. Я почувствовал освобождение от них, и это скорее приятное ощущение, а не трагичное. В конце концов, совершенно не обязательно знать, в какой стране будешь жить через 5 лет.</p></div><div class=""><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap;margin-bottom:var(--mantine-spacing-lg)" class="m_4081bf90 mantine-Group-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-user "><path d="M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0"></path><path d="M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"></path></svg></div><p style="margin-inline-end:var(--mantine-spacing-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Маша Даровская</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">4 года назад</p></div><div style="align-items:center" class="m_8bffd616 mantine-Flex-root __m__-_R_5dirddmiub_"><a style="display:inline-flex" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/vitaliy-bragilevskiy-o-prepodavanii-novoy-rabote-v-jetbrains-napisanii-knigi-pro-haskell-i-chtenie/votes"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:var(--mantine-spacing-xs);color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-thumb-up "><path d="M7 11v8a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-7a1 1 0 0 1 1 -1h3a4 4 0 0 0 4 -4v-1a2 2 0 0 1 4 0v5h3a2 2 0 0 1 2 2l-1 5a2 3 0 0 1 -2 2h-7a3 3 0 0 1 -3 -3"></path></svg></div></a><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">5</p></div></div></div><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding:var(--mantine-spacing-xl)" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Читайте также:</p><ul style="margin-inline-start:var(--mantine-spacing-lg)" class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/group-training">Лайв-кодинг, совместное решение задач, поддержка друг друга: как устроено групповое обучение программированию на Хекслете</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/filmoteka-dlya-programmistov-25-filmov-o-programmirovanii-tehnologiyah-i-iskusstvennom-intellekte">50 лучших фильмов и сериалов о технологиях</a></span></div></li><li style="margin-bottom:var(--mantine-spacing-sm)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><a style="color:inherit" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/blog/posts/marketolog-heksleta-natalya-musina-8-knig-kotorye-pomogut-vam-v-zhizni-i-v-rabote">8 книг, которые помогут вам в жизни и в работе: советует комьюнити-менеджер Хекслета Наталья Мусина</a></span></div></li></ul></div><div style="margin-block:var(--mantine-spacing-xl)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div></div><div></div></div><style data-mantine-styles="inline">.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:100%;--col-max-width:100%;}@media(min-width: 48em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}@media(min-width: 62em){.__m__-_R_lmiub_{--col-flex-grow:auto;--col-flex-basis:33.333333333333336%;--col-max-width:33.333333333333336%;}}</style><div class="m_96bdd299 mantine-Grid-col __m__-_R_lmiub_ mantine-visible-from-md"><div style="background-color:var(--mantine-color-indigo-light);border:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-bottom:var(--mantine-spacing-xl);padding:var(--mantine-spacing-xl);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div style="margin-bottom:var(--mantine-spacing-md)" class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Категории</p></div><ul class="m_abbac491 mantine-List-root"><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Мотивация">Мотивация</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Истории успеха">Истории успеха</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Дневник студента">Дневник студента</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Код">Код</button></span></div></li><li style="margin-bottom:var(--mantine-spacing-xs)" class="m_abb6bec2 mantine-List-item" data-with-icon="true"><div class="m_75cd9f71 mantine-List-itemWrapper"><span class="m_60f83e5b mantine-List-itemIcon"><div class="m_4451eb3a mantine-Center-root"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-chevron-compact-right "><path d="M11 4l3 8l-3 8"></path></svg></div></div></span><span class="mantine-List-itemLabel"><button style="color:inherit;text-decoration:underline" class="mantine-focus-auto m_87cf2631 mantine-UnstyledButton-root" type="button" aria-label="Карьера">Карьера</button></span></div></li></ul></div><div style="justify-content:end;margin-top:0rem;position:sticky;top:calc(5rem * var(--mantine-scale))" class="m_8bffd616 mantine-Flex-root __m__-_R_5dlmiub_"><div tabindex="0" style="cursor:pointer"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses_web_development?promo_name=program_category&promo_position=blog_post&promo_creative=card&promo_type=card"><div style="background-color:var(--mantine-color-default);border:calc(0.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-inline:var(--mantine-spacing-xl);padding-top:var(--mantine-spacing-xl);padding-bottom:var(--mantine-spacing-xs);width:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root"><div class="m_4451eb3a mantine-Center-root" data-inline="true"><p style="font-size:var(--mantine-font-size-h4)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Курсы по веб-разработке</p></div><img class="m_9e117634 mantine-Image-root" src="/vite/assets/development-BVihs_d5.png"/><p style="margin-bottom:var(--mantine-spacing-xs);text-align:right" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></a></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-CdBlNCiQ.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-nkZBEvfU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>