«Блокчейн — це велике село»: чи важко увійти в криптоіндустрію
Та що допоможе знайти першу роботу
Андріян Честних, Senior Engineer у Polygon Labs та лектор курсу Solidity для блокчейн-розробки, має понад 20 років досвіду в розробці, з них 12 — на позиції Team/Tech Lead. Андріян багато працював з реляційними базами даних та Business Intelligence системами, а сім років тому змінив напрямок та перейшов у блокчейн.
Ми поговорили з Андріяном про те, чому він зацікавився блокчейном, та зібрали поради, які допоможуть зорієнтуватись тим, хто тільки зважує всі за та проти індустрії.
Далі зі слів Андріяна
Андріян Честних, Senior Engineer у Polygon Labs та лектор курсу Solidity для блокчейн-розробки
Раніше крипта сприймалась як дорога іграшка
Я працював з реляційними базами даних, але в певний момент почав цікавитись технологією блокчейн: приваблювала можливість інвестувати в цій сфері — і було цікаво, як вона влаштована. Починалося все як хобі приблизно у 2013 році: чим більше заглиблювався, тим цікавіше ставало.
Розібратись у цій сфері було складніше, ніж зараз, але був набагато менший обсяг інформації, яку потрібно знати для роботи. Я навчався самостійно: ніяких курсів чи книг не було. Читав форуми, спілкувався, ходив на усі конференції, які були дотичні до сфери. У 2016 році я вже точно розумів, що це перспективний напрямок, який буде розвиватись, — тому вирішив змінити спеціалізацію.
Зараз з'явилося багато різних відгалужень у блокчейні, тому новачкам доводиться обирати, на чому саме спеціалізуватись: централізовані біржі, контракти, процесинг платежів тощо.
А тоді здебільшого був тільки біткойн та його відгалуження — лайткойн. Не існувало ще ні Ethereum, ні Solidity, ні токенів або NFT. Крипта тоді взагалі сприймалась як щось тимчасове і незрозуміле, як дорога та цікава іграшка або інструмент для шахраїв.
Зараз я переважно пишу на Solidity, якщо ми говоримо про ту частину, яка програмує децентралізовану логіку.
Solidity — мова високого рівня; вона компілюється в байт-код, який деплоїться в мережу. Водночас в будь-якому проєкті, пов'язаному з блокчейном, значна частина функціонала створюється за допомогою звичайних мов програмування — Go, JavaScript, Java.
Смартконтракти — це абсолютна прозорість
Смартконтракти допомагають описати логіку, яка працюватиме в децентралізованому середовищі. Якщо дуже спростити, можна навести приклад, як ви використовуєте Instagram. Якщо адміністратор сервера вирішить зробити так, щоб ваш акаунт не працював, — ви не зможете завантажувати фото. Ви не захищені від дій адміністратора, тому що він має владу змінювати правила користування.
В децентралізованому середовищі все працює трохи інакше. Так, хтось пише правила, створює смартконтракт. Але цей смартконтракт, коли він вже задеплоєний у децентралізовану мережу, в більшості випадків змінити неможливо. Правила відомі, і аудит цього смартконтракту доступний усім. Абсолютна прозорість.
Тобто якщо смартконтракт контролює акаунт, то у вас є гарантія, що вас не заблокують, — якщо, звісно, функціонала блокування немає у смартконтракті. І той, хто створював цей смартконтракт, не може на це впливати.
Смартконтракти пишуться не тільки на Solidity — є й інші мови, наприклад, Viper. Вона, як і Solidity, теж компілюється в байт-кодEVM, в яку компілюється і Solidity. Але ця мова менш популярна.
Кажуть, що тестувати смартконтракти простіше, якщо порівнювати з сайтами. Але це не так. Це приблизно те саме, що порівнювати складність роботи молотком або лопатою. Все залежить від конкретного кейсу. У смартконтрактів своя специфіка, треба враховувати можливі вектори атаки, коли ви пишете тести.
Я, до речі, ще не зустрічав тестувальників у блокчейні. Зазвичай розробник пише юніт-тести. У цій сфері на тестувальника схожий аудитор смартконтрактів. Думаю, їхня зарплата вища. Вони дуже добре знають технології, криптографію й вразливості систем та можуть помітити найменший баг. Але це не класичні тестувальники. Наприклад, є команда: девелопери, тестувальники. А аудитори працюють у спеціалізованих компаніях, які наймають ті проєкти, хто пише смартконтракти. Тому аудитор може за тиждень передивитися смартконтракти кількох компаній.
Що може полегшити перехід у блокчейн
Мабуть, головна складність, з якою зіштовхуються новачки, — це те, що блокчейн-технології децентралізовані. Тобто якщо порівнювати з централізованими системами — тут значно більше обмежень. Це пов'язано з тим, що ці системи мають бути захищені та витримувати атаки. Тому в того, хто з ними працює, менше ресурсів: менше пам'яті, обчислювальної потужності, пропускної здатності мережі тощо. Якщо розробник раніше працював тільки з централізованими системами, він може спочатку сприйняти такі обмеження як велику незручність.
Я б виділив такі пункти, які можуть полегшити перехід до сфери блокчейн:
1. Технічний бекграунд. Якщо ви вже працюєте з якоюсь технологією, вам буде легше опановувати наступні.
2. Інформація про сферу. Спочатку варто ознайомитися з різними ресурсами про блокчейн незалежно від того, хочете ви бути технічним спеціалістом чи нетехнічним. Дізнайтеся про сучасні концепції, зрозумійте, якими будуть обмеження, як працює індустрія загалом, які є платформи та найвідоміші компанії.
3. Основи блокчейну. Знайдіть релевантні ресурси (YouTube-канали, форуми тощо) та спробуйте розібратися з основами.
4. Слідкування за подіями. Підпишіться на новини профільних ЗМІ, відвідуйте конференції, які пов'язані з блокчейном.
5. Софт-скіли. Такі самі, як і в усій ІТ-сфері. Це вміння планувати час, працювати в команді, добре комунікувати.
6. Хард-скіли. Потрібно розуміти основи технології, з якою ви працюватимете. Якщо ви плануєте працювати з Solidity, то крім цієї мови важливо ще знати, як функціонує EVM. Бо якщо у вас є досвід у JavaScript і ви вирішите просто вивчити синтаксис і семантику Solidity, не витрачаючи час на те, щоб розбиратись, як працює блокчейн, — буде важко розуміти загальну картину, і працюватиметься складніше.
7. Дійте. Коли ви починаєте вивчати основи, можна паралельно вивчати й Solidity. І в певний момент ви станете розуміти, як пов'язані процеси. Тоді можна робити якісь пет-проєкти. Ось це і буде практикою. Ви ставите собі завдання, робите його і викладаєте в GitHub.
Можна також контриб'ютити в якийсь проєкт: принаймні ви прочитаєте код, зрозумієте його логіку. Це, до речі, ще одна грандіозна різниця між централізованими та децентралізованими системами. Останні завжди мають відкритий код, тому що це основа комʼюніті аудиту.
З таким досвідом вам буде легше знайти роботу в індустрії. На співбесідах ви зможете щось показати, навіть якщо це ваша перша робота в цій сфері.
Як отримати першу роботу та успішно пройти випробувальний термін
По-перше, якщо на ваше резюме відгукнулася компанія, яка працює з децентралізованою системою, то можна відкрити документацію, GitHub, прочитати смартконтракти. Ви для себе зрозумієте, чи цікаво вам буде працювати. І якщо ви розкажете на інтерв'ю, що ознайомилися з кодом, — це великий плюс.
Коли ви пишете код, завжди уявляйте, що він має не тільки працювати, а й бути простим у підтримці. Це, до речі, стосується будь-якої розробки, не лише блокчейну.
Можливо, вам самим через пів року доведеться щось змінювати в коді. І якщо ви зробили поганий дизайн, у вас будуть проблеми (або у ваших колег, які цим займатимуться).
Якщо у вас чистий код — вас цінуватимуть й вам буде простіше працювати. Є багато ресурсів, присвячених цій темі: можна почитати твори Роберта Мартіна, наприклад, «Чистий код» та «Чиста архітектура».
Приділяйте багато уваги тестуванню. По-перше, це зниження ймовірності помилок у той момент, коли ваша програма запрацює. По-друге — підтримка майбутніх змін. І третє — тести мають документувати. Я навіть іноді починаю читати код з тестів: вони показують, що робить сам код.
Як проходить день блокчейн-розробника
Таски у нас досить стандартні: час розподіляється між мітингами, формалізацією задач, спілкуванням, щоб з'ясувати якісь деталі. Я можу допомагати нетехнічним спеціалістам. Наприклад, якщо мітинг з партнером, то я можу піти, щоб відповідати на технічні запитання партнера про можливості системи, терміни виконання, нюанси документації.
Комунікацій з партнерами у блокчейн-проєктах більше. Це пов'язано з тим, що ця сфера дуже швидко розвивається.
Ще один наслідок відкритого коду, API й системи стандартів індустрії: проєктам відносно легко інтегруватись. Тому тут все рухається набагато швидше, і може бути навіть кілька мітингів на тиждень. Звісно, якщо ви новачок, то спочатку з вами ходитиме більш досвідчений співробітник, а ви, ймовірніше, будете лише слухачем, поки не наберетесь досвіду.
Переваги роботи у сфері блокчейн та майбутнє технології
Ви опиняєтесь у дуже прозорому середовищі. Це як велике село — ви всіх бачите 🙂 Якщо з'являється щось інноваційне, у вас є можливість моментально з ним познайомитись: обмін знаннями відбувається значно швидше.
У сфері блокчейн дуже багато талановитих людей і тих, хто готовий підтримувати грошима ці таланти. Тут народився цілий клас інновацій і технологій, пов'язаних з криптографією. Наприклад, технологія, що з'явилась і була проспонсорована у блокчейн-середовищі, — Zero Knowledge Proof (Доказ з нульовими розголошеннями). Тобто ви можете довести, що вам більше ніж 18 років і ви не живете в росії, наприклад. Але ви не покажете, ні скільки вам реально років, ні те, що ви живете в Канаді.
Якщо казати про майбутнє технології, думаю, буде більша адаптація продуктів для масового споживача. Згодом, можливо, вона стане чимось на кшталт звичайного застосунку, наприклад, як Instagram чи Facebook. Тобто людина не розбиратиметься, як там всередині працює блокчейн, а просто буде користуватись, знаючи, що там смартконтракт — і це додаткова гарантія, що не заблокують акаунт.
А ще, можливо, блокчейн-технологія може вплинути на баланс між владою і суспільством. Умовно кажучи, можна використати оцю прозорість, гарантію того, що логіка не змінюється для контролю влади. Наприклад, гроші в тендерах. Прозорі вибори. Це складно втілити в життя, але, можливо, це так і буде у майбутньому.