---
title: "Как мы нанимаем инженеров Plutus через собственную программу обучения"
date: 2023-11-01
description: "Планируя развивать направление блокчейн-разработки, мы решили обучить языку Plutus каждого бэкендера в компании, включая стажёров. Делимся опытом."
author: "Светлана Дульцева"
intro_image: "https://metalamp.ru/images/abstraction.png"
fulltext_image: "https://metalamp.ru/images/abstraction.png"
categories:
  - name: "Magazine"
    url: "https://metalamp.ru/magazine.md"
tags:
  - name: "education"
    url: "https://metalamp.ru/tags/education.md"
  - name: "cardano"
    url: "https://metalamp.ru/tags/cardano.md"
  - name: "web3"
    url: "https://metalamp.ru/tags/web3.md"
  - name: "haskell"
    url: "https://metalamp.ru/tags/haskell.md"
---

# Как мы нанимаем инженеров Plutus через собственную программу обучения

![Как мы нанимаем инженеров Plutus через собственную программу обучения](https://metalamp.ru/images/abstraction.png)

Блокчейн Cardano использует собственный функциональный язык для написания смарт-контрактов Plutus Core, основанный на Haskell. Разработчики Haskell на рынке — редкие птицы, а знакомые с надстройкой Plutus — и вовсе вроде кота-манула: о них много говорят, но мало кто видел. Планируя развивать направление блокчейн-разработки, мы решили обучить языку Plutus каждого бэкендера в компании, включая стажёров, которые только готовятся стать частью команды Metalamp. Делимся своим опытом.

 
## Пишем на языке Haskell

 На языке Haskell фактически пишутся скрипты для смарт-контрактов Cardano, которые затем автоматически компилируются в собственный язык блокчейна, — Plutus Core. Впрочем, наша любовь к Haskell началась с самого Haskell и до знакомства с блокчейном, так что сперва воздадим ему должное и расскажем, как и почему мы выбрали этот язык. 

 Haskell не так популярен, как JavaScript, Python, Elixir или C/C++/C# — языки, которые мы сами много использовали в разработке, — он [занимает 27-е место](https://pypl.github.io/PYPL.html) в «Индексе популярности языков программирования» по состоянию на июнь 2022. Но у него есть безусловные преимущества перед остальными. Самым важным для нас всегда было добиться максимальной читаемости и недвусмысленности функции, — чтобы любой мог зайти в кодовую базу и понять, что там происходит. А так как мы работали с финтехом и [высоконагруженными](https://thecode.media/treger2/) системами, ещё двумя приоритетными задачами стало снизить вероятность возможность ошибок и сделать надёжность кода независимой от конкретного разработчика и его когнитивной нагрузки. Haskell, чистый функциональный язык, позволил нам делать и то, и другое. Вот особенности Haskell, которые открыли ему путь к нашим сердцам и ПО:

 
- Качество, практичность, скорость. А ещё предельная выразительность языка и его гибкость (например, операторы можно использовать как в инфиксной, так и в префиксной записи, а также [определять свои](https://wiki.haskell.org/Infix_operator)); 
- Лёгкость рефакторинга. Любой долгоиграющий проект предполагает рефакторинг; написание нового функционала — это лишь 10-15% процесса разработки, остальное — либо дополнение существующих частей, либо рефакторинг ошибок в проектировании; 
- Гибкость и комбинаторность. Haskell предлагает формальные абстракции ([функторы](https://habr.com/ru/post/125995/) и [монады](https://habr.com/ru/post/490112/)), которые легко комбинируются и позволяют описать разного рода взаимосвязи между частями программы, правильность написания которых проверяет компилятор;
- У Haskell есть набор инструментов для [параллельного программирования](https://eax.me/haskell-parallel/), который поддерживают почти все популярные редакторы кода;
- Мощная качественная [библиотека](https://www.ohaskell.guide/hackage.html) и использование пакетов Haskell позволяет создавать коммерческий софт, чётко отделять чистые части программы от частей с сайд-эффектами и при этом не писать заново то, что уже написано до нас: содержимое модулей библиотеки автоматически импортируется во все модули нашего проекта.

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

 
## Обучаем талантливых Haskell-инженеров

 Наша компания возникла в 2014 году из студенческого проекта. Поначалу у нас не было денег ангажировать новых дорогих специалистов, поэтому мы запустили бесплатную [образовательную программу](https://vc.ru/hr/304764-kak-my-sdelali-besplatnuyu-programmu-obucheniya-veb-razrabotke-i-trudoustroili-60-vypusknikov) по двум направлениям — backend и frontend — которая предоставляет всем желающим открытые ресурсы для изучения и возможность быть принятым в штат после успешного прохождения практических и теоретических испытаний. На этих двух направлениях мы стали растить собственных специалистов по Haskell и Javascript. 

 Изучению Haskell как раз-таки посвящена программа для бэкендеров. Обучение предполагает 80% самостоятельной работы новичка (мы не делаем вид, что не знакомы со стажёрами, а отвечаем на все их вопросы и проводим экспертную оценку, но никак не мотивируем и не инициируем прохождение ими программы до победного конца, потому что ждём энтузиазма от самих учеников), и только 20% занимают командная подготовка (прокачивание soft skills для лучшей адаптации) и ревью ученических проектов. Первые два этапа стажёры посвящают изучению теории, два следующих — выполнению практических заданий, а в финале проходят трёхэтапный рефакторинг готового проекта, получая обратную связь от штатных разработчиков. Мы даём фундаментальные знания о языке и ценим инженерный, качественный подход к делу — поэтому, хотя стажёры по факту ещё находятся в «песочнице», правила игры максимально приближены к взрослой жизни: финальный ученический проект сопровождают реалистичные требования к объёму, гибкие переменные техзадания и жёсткий дедлайн. По этой же причине рефакторинг проходит в три этапа — так мы добиваемся максимально удовлетворительного качества результата работы стажёра. 

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

 На втором этапе замечания делают ревьюеры, работающие у нас не менее полугода, и имеющие коммерческий опыт; на последнем этапе проверку проводят мидлы. Middle оценивает общую архитектуру проекта, делая концептуальные замечания. Весь процесс рефакторинга можно сравнить с проверкой сочинения учителем по русскому языку, — с той разницей, что у нас это делают три разных человека: первый этап — проверка на орфографические ошибки (в нашем случае — на соответствие best practices), второй — проверка на синтаксис, а на третьем этапе проверяется непосредственно концепция проекта. После исправления ошибок по замечаниям ревьюеров, стажёр проходит собеседование. На практике до этого этапа обычно добираются самые сильные и целеустремлённые — 1 из 500 подавших заявку на обучение. Так мы 100% уверены, что с нами будут работать те, кто владеет теорией, имеет практический опыт и знает достаточно, чтобы сразу встать на проект.

 
## Сотрудничаем с Cardano

 Первый проект, который мы сделали на Haskell, был наш собственный стартап Ptichka.moscow (срочные курьерские доставки по Москве). Запустив его, мы стали искать заказчиков, готовых отдать Haskell-проекты на аутсорс, и столкнулись с любопытной реальностью: большинство запросов на Haskell приходят с рынка блокчейна. Согласно [отчёту](https://www.marketsandmarkets.com/Market-Reports/blockchain-technology-market-90100890.html) MarketsandMarkets, размер мирового рынка блокчейнов в 2021 году оценивался в $4,9 миллиардов и к 2026 году ожидаемо достигнет $67,4 миллиардов при совокупном годовом темпе роста в 68,4% в течение прогнозируемого периода. Скорость роста рынка блокчейнов связана не только с увеличением популярности криптовалют, но и [с растущим количеством](https://www.sciencedirect.com/science/article/pii/S0740624X21000617#fn0010) правительственных инициатив, а также с разработкой и использованием децентрализованных приложений для платежей, смарт-контрактов, отслеживания цепочек поставок, цифровых удостоверений и т.п. Оценив перспективы блокчейнизации, мы поняли, что не хотим оставаться в стороне.

 Haskell, как уже было сказано, служит основой для Plutus Core, — языка смарт-контрактов Cardano. Haskell роднит с Cardano академический, или научно-исследовательский подход к программированию и математическая проверка кода в разработке любого продукта. В Cardano Foundation [говорят](https://medium.com/@cardano.foundation/why-cardano-chose-haskell-and-why-you-should-care-why-cardano-chose-haskell-and-why-you-should-f97052db2951), что выбрали Haskell потому, что он гарантирует правильность выполнения операций с данными, заставляет писать чистый код, который невозможно неверно понять и помогает защитить блокчейн с открытым исходным кодом на интернет-платформах.

 Благодаря наличию в анамнезе Haskell [IOG](https://apply.workable.com/io-global/) пригласил нас поучаствовать в тестировании смарт-контрактов Cardano, и Plutus мы изучали уже в процессе работы над этой задачей. Это не было эргономичным решением, потому что мы не знали наверняка, сколько времени займёт у конкретного члена команды освоение языка и когда он будет готов приступить к работе. Тогда мы решили воспитать Бабу-ягу в своём коллективе включили обучение языку Plutus в свою образовательную программу для бэкендеров, чтобы при трудоустройстве в штат прокачанные на Haskell джуны сразу вставали на блокчейн-проекты. 

 
## Работаем с Plutus Pioneer Program

 Программа обучения Plutus у нас состоит из двух частей:

 
1. **Курс лекций, которые разработали сами**[**IOG**](https://apply.workable.com/io-global/)**в рамках программы**[**Plutus Pioneer**](https://testnets.cardano.org/en/plutus-pioneer-program/), — официального проекта по обучению разработчиков языку экосистемы Cardano от создателей. Ребята смотрят видеоролики (они также доступны в текстовом формате), изучают код, выполняют тренировочные задания и участвуют в сессиях вопросов и ответов, пользуясь возможностью общения с основателями и экспертами по языку. Из-за высокого порога входа в Plutus создатели рекомендуют слушателям заранее получить опыт программирования в функциональном стиле или предварительное знание Haskell, а также иметь развитые логическое и математическое мышления.

 Курс Plutus Pioneer предполагает, что слушатель будет посвящать ему 10 часов своего времени в неделю. Программа включает изучение таких строительных основ Haskell и Plutus, как функции и типы данных, монады, конечные автоматы (state machines),использование [Plutus Playground](https://playground.plutus.iohkdev.io/), работа с Plutus ончейн и оффчейн, [EUTxO](https://docs.cardano.org/learn/eutxo-explainer/),  [PAF](https://docs.cardano.org/plutus/learn-about-plutus/#plutusapplicationframework(paf)) и [PAB](https://plutus-apps.readthedocs.io/en/latest/plutus/explanations/pab.html). 

 
1. **Практические упражнения, которые подготовила наша команда.** Мы решили докомплектовать готовые кейсы от IOG заданиями, для которых наши разработчики будут сами искать и с нуля писать решения — например, реализовать NFT-маркетплейс, создать Faucet-приложение и т.п. Цель этой практики — закрепить теорию и убедиться, что разработчик действительно понимает изученный материал.

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

 Блокчейн медленно, но верно входит в нашу жизнь; популярность DeFi и смарт-контрактов растёт, и платформы, обеспечивающие соответствующие решения, активно развиваются. Cardano — это имплементация блокчейна на Haskell, языке, который давно стал нашим любимчиком благодаря своей чистоте и функциональности. Используя библиотеку Haskell можно запускать смарт-контракты и создавать безопасные dApps в полностью предсказуемой среде на платформе Plutus. Мы обучаем языку Plutus Core всех наших разработчиков,  — в том числе тех, кто только готовится стать членом команды, потому что нам близка философия блокчейна и мы хотим развивать сотрудничество с экосистемой Cardano в длительной перспективе. 

 Надеемся, что наши best practices будут интересны и полезны тем, кто неравнодушен к Cardano, а также работает с перспективными джунами и стажёрами.

 ![article-logo](https://metalamp.ru/images/article/logo.svg) 
## Больше интересных статей о Cardano


## Custom Fields

**reading time:** 9

**Article type:** articles

**Article description:** Планируя развивать направление блокчейн-разработки, мы решили обучить языку Plutus каждого бэкендера в компании, включая стажёров, которые только готовятся стать частью команды MetaLamp. Делимся своим опытом.

**Author (copy):** Светлана Дульцева

