Skip to main content
Improvado
Международный агрегатор рекламных кампаний
60 млн $
капитализация
22 млн $
инвестиции в серии А
Создаем стартапы на блокчейне Cardano с использованием платформы Plutus, написанной на Haskell
Узнать больше

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

abstraction

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

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

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

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

  • Качество, практичность, скорость. А ещё предельная выразительность языка и его гибкость (например, операторы можно использовать как в инфиксной, так и в префиксной записи, а также определять свои); 
  • Лёгкость рефакторинга. Любой долгоиграющий проект предполагает рефакторинг; написание нового функционала — это лишь 10-15% процесса разработки, остальное — либо дополнение существующих частей, либо рефакторинг ошибок в проектировании; 
  • Гибкость и комбинаторность. Haskell предлагает формальные абстракции (функторы и монады), которые легко комбинируются и позволяют описать разного рода взаимосвязи между частями программы, правильность написания которых проверяет компилятор;
  • У Haskell есть набор инструментов для параллельного программирования, который поддерживают почти все популярные редакторы кода;
  • Мощная качественная библиотека и использование пакетов Haskell позволяет создавать коммерческий софт, чётко отделять чистые части программы от частей с сайд-эффектами и при этом не писать заново то, что уже написано до нас: содержимое модулей библиотеки автоматически импортируется во все модули нашего проекта.

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

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

Наша компания возникла в 2014 году из студенческого проекта. Поначалу у нас не было денег ангажировать новых дорогих специалистов, поэтому мы запустили бесплатную образовательную программу по двум направлениям — backend и frontend — которая предоставляет всем желающим открытые ресурсы для изучения и возможность быть принятым в штат после успешного прохождения практических и теоретических испытаний. На этих двух направлениях мы стали растить собственных специалистов по Haskell и Javascript. 

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

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

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

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

Первый проект, который мы сделали на Haskell, был наш собственный стартап Ptichka.moscow (срочные курьерские доставки по Москве). Запустив его, мы стали искать заказчиков, готовых отдать Haskell-проекты на аутсорс, и столкнулись с любопытной реальностью: большинство запросов на Haskell приходят с рынка блокчейна. Согласно отчёту MarketsandMarkets, размер мирового рынка блокчейнов в 2021 году оценивался в $4,9 миллиардов и к 2026 году ожидаемо достигнет $67,4 миллиардов при совокупном годовом темпе роста в 68,4% в течение прогнозируемого периода. Скорость роста рынка блокчейнов связана не только с увеличением популярности криптовалют, но и с растущим количеством правительственных инициатив, а также с разработкой и использованием децентрализованных приложений для платежей, смарт-контрактов, отслеживания цепочек поставок, цифровых удостоверений и т.п. Оценив перспективы блокчейнизации, мы поняли, что не хотим оставаться в стороне.

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

Благодаря наличию в анамнезе Haskell IOG пригласил нас поучаствовать в тестировании смарт-контрактов Cardano, и Plutus мы изучали уже в процессе работы над этой задачей. Это не было эргономичным решением, потому что мы не знали наверняка, сколько времени займёт у конкретного члена команды освоение языка и когда он будет готов приступить к работе. Тогда мы решили воспитать Бабу-ягу в своём коллективе включили обучение языку Plutus в свою образовательную программу для бэкендеров, чтобы при трудоустройстве в штат прокачанные на Haskell джуны сразу вставали на блокчейн-проекты. 

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

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

  1. Курс лекций, которые разработали сами IOG в рамках программы Plutus Pioneer, — официального проекта по обучению разработчиков языку экосистемы Cardano от создателей. Ребята смотрят видеоролики (они также доступны в текстовом формате), изучают код, выполняют тренировочные задания и участвуют в сессиях вопросов и ответов, пользуясь возможностью общения с основателями и экспертами по языку. Из-за высокого порога входа в Plutus создатели рекомендуют слушателям заранее получить опыт программирования в функциональном стиле или предварительное знание Haskell, а также иметь развитые логическое и математическое мышления.

Курс Plutus Pioneer предполагает, что слушатель будет посвящать ему 10 часов своего времени в неделю. Программа включает изучение таких строительных основ Haskell и Plutus, как функции и типы данных, монады, конечные автоматы (state machines), использование Plutus Playground, работа с Plutus ончейн и оффчейн, EUTxOPAF и PAB

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

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

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

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

Больше интересных статей о Cardano

sharding
выбор редакции
ton
bottle_wine
выбор редакции
Зачем вину блокчейн: как токенизируют премиальный алкоголь

Елизавета Черная

Редактор Бренд-медиа

Статьи

web3
nft
business
launchpad
twa
Тренды блокчейна и криптоиндустрии 2024: Telegram Mini Apps (TMA)

Елизавета Черная

Редактор Бренд-медиа

Статьи

web3
buildings
anonymus
выбор редакции
Zero-knowledge proof: один из трендов 2024 в блокчейне

Евгений Биктимиров

Венчурный аналитик

Статьи

ethereum
web3
dApps
cpay
выбор редакции
AA zksync
zero knowledge proofs
выбор редакции
stock market chart
выбор редакции
planets
fundraising
выбор редакции
cto
wallet
tokens
выбор редакции
rocket computer
выбор редакции
Как создать дизайн для MVP стартапа за 7 дней

Юлия Черепанова

Head of Design Office

Статьи

startup
MVP
design
nft
AI
crypto wallets
выбор редакции
Account Abstraction: что это такое и зачем нужно криптомиру

Павел Найданов

Solidity разработчик

Статьи

ethereum
web3
business
red space
выбор редакции
speed up development
myths
выбор редакции
Мифы о разработке блокчейн продуктов

Николай Бордуненко

Project manager at MetaLamp

Статьи

web3
dApps
startup
launching
выбор редакции
Кого нужно нанимать в команду для запуска MVP?

Алексей Сухарев

Head of Sales Department

Статьи

business
startup
MVP
galaxy
magazine
spaceman
выбор редакции
coffee
investors
nft
Первый NFT marketplace на Cardano

Станислав Жданович

Haskell разработчик

Статьи

cardano
web3
nft
stair
выбор редакции
bridge
rocket
abstraction
Как мы нанимаем Plutus инженеров через собственную программу обучения

Светлана Дульцева

Супервизор программы обучения

Статьи

education
cardano
web3
mountains
blockchain
salary
salary increase
app
developer with books
keyboard
abstract