Технология блокчейн произвела революцию в сферах обработки данных и ведения бизнеса. Первоначально она была разработана как сеть для поддержки Биткоина, но со временем стала использоваться вне мира криптографической валюты. Универсальность и безопасность блокчейн-технологии заставили бизнесменов и правительства обратить на нее внимание и начать использовать.
Если вы хотите многообещающую карьеру, работать с развивающейся современной технологией, и любите что-то изобретать, то вам стоит узнать больше о перспективной и высокооплачиваемой профессии blockchain-разработчика.
Эксперт Николай Фоминых, ведущий разработчик "МЕДСИ" и внешний консультант TAGES, программист с десятилетним стажем, объясняет, кто такой блокчейн-разработчик, чем он занимается, и что нужно сделать, чтобы им стать.
- Кто он - блокчейн-разработчик, и какие задачи решает?
- Блокчейн-разработчик – это, прежде всего, backend разработчик. От backend разработчика в других сферах, например в web, его отличает в основном новизна направления. Подумайте над тем, каково было разрабатывать сайты в 1990-м году? Одновременно и сложно, и интересно. Если вы хотите получить этот опыт – путь блокчейн-разработчика для вас.
Всегда можно сузить представление о разработчике. Например, Python-разработчик – это разработчик, который что-то там пишет на Python. В этом случае blockchain-разработчик – это разработчик, который что-то пишет на языках программирования смарт-контрактов. Но это не совсем точный подход.
Blockchain-разработчик решает в первую очередь задачи интеграции между организациями. Blockchain отлично подходит для интеграций, потому что:
- данные записанные в блокчейн – не изменить. Несколько организаций могут писать в блокчейн, не боясь что кто-то из игроков изменит данные в свою пользу;
- блокчейн сложнее сломать, чем традиционную БД – он из коробки реплицируется на несколько серверов;
- блокчейн прозрачен, он хранит историю транзакций и ее удобно отдать на аудит.
Самое очевидная сфера применения blockchain – это финансы. Уже находятся в активной разработке цифровой юань и цифровой рубль. Но есть и другие сферы применения:
- Логистика – сложные цепочки поставок
- Медицина – медицинская карта пациента
- Авиация – например, заправка самолета
- Какие специалисты требуются под какие задачи?
- Если рассмотреть построение блокчейн-решения целиком, то нам потребуются те же роли, что и в другом продукте:
- Архитектор – у каждого блокчейн решения свои сильные и слабые стороны. Ethereum удобный, но медленный. Hyperledger Fabric – быстрый, но его сложнее разворачивать. Каждое блокчейн решение использует свои алгоритмы консенсуса. В команде должен быть опытный человек, который распознает какое решение подойдет под данную задачу. И нужен ли вообще тут блокчейн?
- Аналитик – блокчейн является очень строгой технологией. Неправильно названные вещи – останутся в нем навсегда. Поэтому очень важно разобрать предметную область для которой мы строим систему контрактов. Если аналитик достаточно сильный, чтоб описать предметную область через DDD – нам повезло.
- Frontend разработчик – с теми же навыками, что и у web frontend разработчика. Если наша сеть публична – то может быть потребуется пара вечеров, чтоб изучить web3.js.
- Backend разработчик – ему в любом случае придется учить один из языков для smart-контрактов. И новую систему паттернов – они в smart-контрактах выглядят иначе.
- DevOps – блокчейн – одна из наиболее сложных с точки зрения инфраструктуры вещь. Да, работающую сеть сложно сломать. Но кто сказал, что ее легко настроить? Особенно, между несколькими корпорациями у каждой из которых – свои правила информационной безопасности? А какие метрики нам потребуются?
- Как стать blockchain-разработчиком?
- Давайте вернемся в начало. Пути backend и blockchain разработчика – очень похожи. Но что-то останавливает от того, чтобы взять любого разработчика с рынка и переучить.
- Какие навыки нужны блокчейн-разработчику?
- 1. Алгоритмические навыки – они нужны. Например, в ethereum есть понятие стоимости операций. И у каждой транзакции есть стоимость. Написал N**2 вместо LogN – и организация за это платит в буквальном смысле, а не откупается железом.
2. Знание распределенных систем – крайне желательно. Дело в том, что очередность обработки транзакций зависит от очередности поступления запросов в сеть. Если на N узлов поступило M транзакций – что у нас будет происходить в сети, в какое состояние она придет после разрешения всех конфликтов? Вещи вроде PAXOS и RAFT – должны вызывать живой интерес у разработчика, который работает с распределенными системами.
3. Готовность учить языки. Много языков – у каждой платформы свои языки написания смарт-контрактов. Если web-разработчик может выучить js и писать на нем все – то у блокчейн-разработчика такого пути нет.
4. Криптография. Данные в блокчейн зашифрованы, и скомпрометировать ноду не так уж просто. Почему? Полезно еще раз подумать об ассиметричном шифровании, certified authority и о том, как обеспечивается защищенность сети между несколькими корпорациями.
5. Предметно-ориентированное проектирование. Если нам повезет с аналитиком, и он будет владеть DDD – то и разработчик должен владеть DDD. Так процесс создания точных смарт-контрактов значительно упроститься.
- Не хочу учиться. Хочу сразу делать...
- Вышеприведенные 5 пунктов можно проигнорировать. Их спросят на собеседованиях в серьезных компаниях, где уже внедрен блокчейн. Но если у вас уже есть идея, вам кажется что она подходит под блокчейн и вы хотите ее проверить – можно быстро изучить solidity и truffle.
Truffle – позволит создать скелет проекта с юнит-тестами. А solidity – основной язык программирования для ethereum.