Про Haskell
Название компании состоит из моей фамилии и названия языка программирования Haskell. Наша главная идея состоит в том, что мы стараемся нести этот язык в массы, хотим показать, что его можно и нужно использовать в производственных масштабах, в продакшене. Сейчас это не самый популярный язык, он сильно уступает, например, C++ или Java. Бытует мнение, что Haskell слишком сложный и использовать его нужно разве что для математических расчетов. Но это то средство разработки, которое нравится мне больше всего.
Когда я поступал на кафедру компьютерных технологий, я хотел стать программистом, или ученым, или математиком, или сочетать все три «звания» сразу, но мне было неудобно и сложно пользоваться теми инструментами, которые нам предлагали, получался плохой код. На втором курсе я поспорил с друзьями, что смогу освоить Haskell, и оказалось, что он, во-первых, не такой сложный, как мне говорили, а во-вторых, мне легко думать функциями и писать на этом языке. В сравнении с объектно-ориентированными языками мне нужно меньше шагов для того, чтобы перевести свою мысль в код. Раньше в Университете ИТМО преподавал Ян Малаховски, который и привил мне любовь к функциональному программированию и Haskell, в частности. Сейчас он, к сожалению, ушел, и я преподаю функциональное программирование вместо него.
Haskell — это строго типизированный язык. Например, если в Python вы можете сложить строку и число и получить невероятный ответ, то в Haskell такого сделать нельзя, и в этом преимущество. Он дает дополнительную гарантию того, что код, будучи запущенным, всегда будет работать так, как вам нужно. В Java типизация тоже есть, но она используется только во время компиляции, а в момент запуска информация теряется. Haskell же не «теряет» типы данных никогда. Кроме того, это чистый язык программирования, то есть у функций здесь нет побочных эффектов, и при одних и тех же входных данных они всегда будут давать один и тот же ответ. Здесь можно использовать и «грязные» функции — например, ввод с клавиатуры зависит от пользователя: никогда не можешь быть уверен, что он наберет то, что нужно. Но Haskell умеет это очень интересно абстрагировать так, чтобы можно было выполнять и грязные функции в мире чистых, никак при этом не влияя на их выполнение.
Про разработку
Если очень сильно упрощать, в мире программирования есть front-end — то, что видит пользователь, и back-end — то, на чем все держится. Haskell очень хорошо подходит для второго. Надо понимать, что, например, его не стоит использовать для написания драйверов и системных программ, но он подходит для большого спектра вещей, среди которых машинное обучение, обработка изображений, работа с пользовательским интерфейсом, написание серверов. У Haskell огромное сообщество и большое количество библиотек, так что не нужно изобретать велосипед для каждого нового проекта. В целом, Haskell можно использовать и для фронтенда, но это не лучший инструмент. Мы в Serokell используем для этих целей PureScript — он сильно похож на Haskell и транслируется в JavaScript, а также пишем свою систему управления базами данных на языке Rust.
Как я говорил, многие считают Haskell слишком сложным, из-за этого они его не изучают, из-за этого мало специалистов, и, в свою очередь, в этом причина того, что на Haskell реализовано достаточно мало проектов. Крупные западные компании часто обращаются к Haskell, у нас — практически никто. Поэтому я хотел подготовить в России почву для таких, как я, и доказать, что мы можем сделать на Haskell любой продукт, а не только небольшую часть в составе крупного проекта.
Про Serokell
В 2014 году перед окончанием бакалавриата у меня умер отец, устроиться на работу в крупную компанию я не мог, потому что необходимо было быть дома и помогать больной матери, а денег не хватало. И в один из дней после трагедии я сформулировал для себя новую философию. Есть вещи, которые невозможно сделать в принципе — например, полететь, быстро размахивая руками. А есть вещи, которые кто-то уже делал: заработал миллион, покорил Эверест, а значит, я тоже могу их повторить или сделать что-то новое, что никто не делал до меня, если это не противоречит законам мироздания. Я решил, что хочу и могу создать свое окружение, свою компанию, в которой я буду воспринимать работу как дело своей жизни, получать комфорт и удовольствие, дарить их людям. Еще некоторое время я дописывал диплом и вынашивал эту идею, а в августе начал общаться с другом, который тоже увлекается функциональными языками программирования. Мы решили, что, если у него или у меня появится заказ, мы будем работать вместе.
Первыми проектами у нас была программа для генерации дистрибутивов Linux и обменник валют. Уже к февралю 2016 года мы наняли в штат двух студентов из Университета ИТМО и парня из Хорватии, получили начальный капитал, я по большей части отошел от написания кода к управлению и общению с заказчиками, чем занимаюсь и по сей день. А в марте сооснователь компании познакомился с гендиректором IOHK. Этой компании требовались штатные сотрудники, которые бы писали ядро их нового проекта, и они хотели купить нас целиком, но я от этого отказался. И до сих пор этому рад, иначе бы вернулся к тому, от чего бежал. Сейчас мы работаем на условиях аутсорса и разрабатываем для IOHK новую криптовалюту, которая называется Cardano. Недавно выпустили пре-альфа версию, ей уже можно пользоваться, но полноценно запустить ее мы собираемся в феврале.
На меня работает уже одиннадцать человек, мы активно набираем интернов, многие из них остаются работать разработчиками на постоянной основе. Со всеми, кто пришел к нам в Serokell, я знаком лично, хотя мы работаем удаленно. Кроме разработчика из Хорватии, у нас есть ребята из Португалии, Латвии и Белоруссии, остальные — россияне. Для взаимодействия мы в основном используем Slack. В текстовом формате очень удобно контролировать рабочий процесс: когда работаешь в офисе, может случиться так, что кто-то обсудил какие-то вопросы лично, остальные об этом не знают, и из-за этого может возникнуть конфликт. Скайп-конференции мы проводим раз в неделю-две, в основном общаемся письменно, причем исключительно на английском языке.
Про Cardano
Cardano отличается от Bitcoin тем, что в основе этой криптовалюты лежит другой так называемый консенсус-алгоритм. Как работает Bitcoin: транзакции пакуются в блоки представителями касты так называемых майнеров (шахтеров). Чтобы опубликовать блок, получив награду, майнер должен решить вычислительно сложную задачу перебором. Когда задача решена, решение публикуется вместе с набором транзакций. Это решение служит доказательством работы майнера. Сложность задачи алгоритмически контролируется так, чтобы новые блоки транзакций публиковались примерно раз в десять минут. Чем больше у тебя мощностей, тем выше шанс того, что блок сможешь вычислить именно ты, этот принцип называется Proof-of-work, и использовать его расточительно как с экономической точки зрения, так и с точки зрения охраны природы. Тратится слишком много энергии, одна транзакция может обеспечить электричеством более трех стандартных домов в США.
IOHK — это R&D компания, они пишут и публикуют научные статьи, и одна из наиболее примечательных посвящена другому консенсус-алгоритму, на котором работает Cardano — так называемый Proof-of-stake. Его суть в том, что более авторитетным узлом сети будет тот, у которого больше криптовалюты на счету. Это убирает необходимость тратить электричество, а тем, у кого больше криптовалюты, будет невыгодно нарушать работу сети. Cardano будет поддерживать смарт-контракты, как Ethereum, для этого у нас есть тьюринг-полный скриптовый язык, к тому же мы сейчас пишем для этой валюты приложение-кошелек Daedalus с поддержкой других криптовалют. Основное начальное назначение Cardano — гэмблинг. Исходные тексты проекта мы планируем публиковать под лицензией MIT.
Про то, как запустить свой IT-бизнес
Бояться не нужно: на создание своей компании, если она будет заниматься разработкой программ, не нужно практически никаких первоначальных вложений. Поначалу может быть сложно найти заказчиков, но никто не мешает делать что-то свое: днем работать по найму, а вечером заниматься собственным продуктом. Когда вы напишете свой проект, выкладывайте его на публичное обозрение, на GitHub, пишите на Reddit. Если идея хорошая, она обязательно найдет свою нишу. Может, вам не удастся на ней заработать, но этим вы начнете работать на свое имя, на имя своей компании. Самое главное, что вы получите опыт. У меня был и негативный опыт, но теперь я более защищен, лучше знаю, как общаться с людьми, где стоит накричать, а где промолчать.
У меня очень удачно совпали любовь к Haskell и отсутствие высокой конкуренции в этой области. Наверное, если бы я знал про конкретные свободные ниши, сам бы их занял. Советую тоже смотреть в сторону криптовалют, они в России не развиты никак, их пытаются регулировать и запрещать, в то время как мой друг из Норвегии платит биткоинами за услуги ЖКХ. Слышал, в Москве поставили один биткоин-банкомат, и все. Понимая, как устроен этот рынок, думая и имея контакт с пользователями, можно найти эффективную стратегию и создать уникальный продукт.
Я участвую в зарубежных конференциях, например, летом ездил в Осаку и в Токио, где читал доклады про Haskell и криптовалюты. Уезжать из России я не собираюсь и стараюсь объяснить другим, что делать этого не нужно. Заниматься IT можно где угодно, но вас учили здесь, надо воздать должное преподавателям, отблагодарить за знания, которые вы получили. Например, сделать свой вклад в развитие науки и образования, стараться повысить качество образования. Я искренне рад, что в Университете ИТМО у меня преподавали высококвалифицированные специалисты. Самое классное, что мне дал вуз: я научился учиться, постепенно нарабатывать методику быстрого понимания любого материала. Кафедра КТ дала мне многое из того, что, как я вижу, мои друзья не умеют.