Why Rust

11 minute read Published: 2021-06-26

EN

People ask me a lot about Rust, so I wrote this blog post to answer following questions:

Where engineers use Rust and what job can I find? Do they really pay more for Rust? [Backend] is good enough on Rust? Or is it a trick and they use Rust only for metrics gathering and everything else is on Jave? Hi! I remember you were interested in Rust? Did you find a job on it?

Reading this you will find out information about three main aspects I extracted from these questions:

  1. Rust application domains
  2. Rust salaries
  3. Small guide how to become Rust developer

Application

Rust - general purpose programming language. I could put a period here, but "old" languages like Java or C++ had their own "areas" because of their limitations and historical conditions. In case of Rust there are almost no restrictions and history is still in process of establishment, so landscape is very dynamic.

Blockchain

Basically 4 out of 5 messages in my LinkedIn's inbox are about Blockchain projects. Many platforms like Substrate use Rust in it's core and as a clients language. Most of vacancies not about writing a platform, but about smart contracts (which can also be written in JS, C++, etc.) or extensions for existing platforms (which mostly Rust written). I had a luck to be involved in Iroha's (distributed ledger based on blockchain and consensus) core developement. Yet I avoid contracts which assume writting something on substrate or other similar platforms.

Small spoiler, this domain is very welcome for people without big Rust experience. Interest in blockchain and finances are welcome.

Embedded

Rust became popular among embedded developers. Language has no-std mode, when you exclude standard library from your project. No more allocations or unnecessary functions in your binary. Minimum resources consumption is what IoT devices need.

There are not a lot of vacancies here, mostly because market too specific and maybe it would be interested for people who love hardware.

Web Services

Special category - web development. I had experience to write web projects in Rust - both pet and by contract. Rust has a lot of libraries for web domain.

My team had devs with Node.js, Python, Java and Go backgrounds - the only problem they had is writing idiomatic code. Trait can be confused with Interface, someone will overuse Generics and it's hard when people need to explicitly deal with Lifetimes. Yet if you will be mentored by some experienced Rust dev you will quickly move to new paradigm.

Game Development

Relatively new stream, despite a lot of mature libraries and frameworks written in Rust long time ago - Rust makes only first steps towards big industry. Andrea, Андрей and many other enthusiasts move it forward. You can look for more info at [Rust in Gamedev]](https://gamedev.rs/).

CLI

A lot of utilities were rewritten in Rust - can't count. Crates.io contains thousands of CLI applications and if you are more into TUI - command line tools development is a good way to start. I'm not sure about dedicated vacancies, yet many projects like tokio create their own CLI utils.

Others

Honestly I tired to name all possible domains for Rust. I saw talks about medicine, transport, drivers, geo apps written in Rust. It's application spectre is quite wide so you can find a work based on your interests. Besides domain that you want to work in you also should have a financial motivation. Here Rust also shines.

Salaries

For more scientific and accurate research table with a lot of data would be needed. In this post I want to give you some numbers without pretending to be objective, only offers that I dealt with would be used here.

No experience

If you have no experience in Rust you may find a job based on your additional skills, maybe it's game development or algorithmic trading knowledge. It's hard to say about the salary in this case, all companies will differ in risk estimations. Yet they mostly ready to pay you about 3000$.

Pet projects only

This is not very different from previous category. You will just have more trust if people will see your code before you join the project. So it should be also about 3000$.

Several months to year expirience

If it's a relevant experience, for example you switch one blockchain project to another, then you are ready to have a raise. About 6000$ will be the most common offer for you and please, do not put it down - you will help yourself and other developers.

A couple of years

In this moment people with 2-3 years of experience are "mature" developers. If you read this post it means that you will have this experience in 2023 and idk how many devs will compete with you. Right now - not a lot and hunters ready to pay 10,000$ and even more for such specialists.

3+ years

Here we can talk not about years of experience, but about qualification. Real knowledge and hard skills can open you FAANG companies with at least "standard" for sillicon valley 15,000$ a month.

How to Rust in 30 days

  1. Read the Book (1 week) Rust has it's own philosophy and would be more effective to knew how, why and what to use in your work. After reading the book you can also look at narrow topics - official site contains resources for it.
  2. Write a couple of apps For example, if you are a web developer you can take different frameworks to write the same app. This way you will find out what are pros and cons of macroses usage in Rocket, how to deal with async Rust in Actix and Tide or you can write everything in a pure std.
  3. Watch conferences Listen to different talks from Rust confs, take a variety of topics and check your understanding, if you don't understand something realted to your speciality - this is the gap you should fill.
  4. Subscribe to this week in Rust TWIR - contains many interesting blog posts, changes notes and fresh jobs.
  5. [optional] Contribute to open source Pull requests to popular projects can be a big plus on interview.
  6. Update your LinkedIn Mark you readiness to work with Rust, add it to your skills and find some communitites and people related to this technology.
  7. Attend interviews And don't forget to close gaps you will find during this process. Also take a week to cool off and think about offer before accept.

RU

Меня спрашивали, спрашивают и видимо будут спрашивать ещё ни раз:

Для чего сейчас используется раст и куда можно с ним вкатиться? То есть за раст больше платят? на раст теперь идти что ли? [Backend] Нормальный на расте? Или это уловка, на расте у нас сборка метрик, а все остальное на джаве? Привет! Я помню ты интересовался растом? Получилось работу найти на нем?

Поэтому в данном посте я отвечу на три главных вопроса о Rust:

  1. В каких сферах используется Rust?
  2. Сколько платят Rust разработчкиам?
  3. Минимальный гайд по поиску работы на Rust.

Применимость языка

Rust - язык программирования общего назначения. Тут можно было бы поставить точку, но "старые" языки типа Java и C++ имели свои зоны влияния из-за различных ограничений, а также исторических обстоятельств.

В случае с Rust ограничений практически нет, а исторические обстоятельства влияют на популярность той или иной сферы применения и достаточно динамичны на данном этапе:

Blockchain

Собственно четыре из пяти сообщений в моих входящих в LinkedIn это предложения о разработка Blockchain проектов. Многие платформы, такие как Substrate, используют раст и в ядре и как клиентский язык. Львиная доля вакансий предполагает написание контрактов (здесь поддерживаются и Javascript, и C++), а также расширение стандартного функционала "аддонами" - которые уже в основном пишутся на Rust. Мне посчастливилось участвовать в разработке ядра одной из таких платформ, но написание прикладного кода для существующих я теперь избегаю.

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

Embedded

Также Rust получил популярность среди разработчиков для встраиваемых систем. У языка есть no-std режим, когда в своём проекте вы "отключаете" стандартную библиотеку. Никаких аллокаций памяти или лишних байтов ненужных функций. Минимум потребления ресурсов.

Вакансий меньше, но это связано с особенностями рынка - если вам интересно быть близко к железу, то это направление отличный вариант.

Web Services

Отдельная когорта - разработка веб-сервисов. У меня так же был опыт написания веба как в пет-проектах, так и по контракту. На Rust есть целая плеяда библиотек и фреймворков для нужд веба.

В моей команде были ребята переехавшие с Node.js, Python, Java - у людей без опыта возникают проблемы с написанием идиоматичного кода, Trait путается с Intefrace, кто-то слишком много использует Generics, Lifetimes. Однако, при должном менторстве очень быстро переучиваются и выстраивают новое мышление.

Game Development

Относительно свежее направление, несмотря на то, что библиотеки и движки на Rust существуют долгое время - только только подбирается язык к большой индустрии. Andrea, Андрей и многие другие энтузиасты двигают это направление. Следить за новостями можно тут.

CLI

Сколько утилит было переписано на Rust и не счесть. Crates.io содержит несколько тысяч подобных приложений и если вы предпочитаете текстовый пользовательский интерфейс, то разработка CLI инструментов это отличный способ войти в индустрию. Не уверен что есть специальные вакансии, но различные проекта, например tokio, создают свои консольные утулиты.

Others

Если честно, немного устал перечислять различные направления. Есть доклады о применении Rust в медицине, транспортных разработках, драйверах, геодезии и т.д. Rust действительно язык с широким профилем и если захотеть - то можно подобрать работу по душе. Но помимо интереса прикладной областью, должна быть и финансовая мотивация. Тут Rust тоже не отстаёт.

Зарплаты

Для точного анализа нужно составить таблицу, выгрузить данные с агрегаторов и высчитать медиану. Но в этом посте я хочу дать вам приблизительное представление, поэтому буду основываться на поступающих предложениях и собственном опыте.

Без опыта

Если у вас не было опыта разработки на Rust - то работу вы найдёте по другим навыкам, например игроделанию или знанию алготрейдинга. Здесь сложно сказать что-то про оплату, ведь разные проекты будут по разному оценивать риски от кота в мешке (вас). Насколько я могу судить - это обычно 200-300к рублей.

Только пет проекты

В целом подходит и под предыдущую категорию, разве что к вам больше доверия и можно попасть на проект именно по Rust навыку. Также следует просить 200-300к деревянных.

Опыт до года

Если это релевантный опыт - например блокчейн, то вы переходите в следующий раунд и тут уже ставки идут до половины миллиона рублей. На этом этапе стоит знать себе цену и не стесняться отказывать тем, кто демпингует её вниз. Так вы поможете и себе, и другим разработчикам.

От года до 2-3 лет

На данный момент - это уже матёрые растовики. Боюсь что если вы не стоите на пороге этого рубежа, то к 2023 году этот опыт перестанет быть редкостью. Однака сейчас зарубежные вакнсии предлагают от 500к до одного миллиона за таких специалистов.

Свыше 3 лет

На самом деле тут уже не важен опыт в годах. За пару лет Rust разработки вы уже считаетесь хорошим специалистом и доказывать что-то сверху придётся не человекоднями, а реальным опытом и знаниями. На СНГ рынке ничего сверх миллиона вам не предложат, однако есть путь в высшую лигу Amazon, Google, Microsoft - и какие там вам предложат условия, мне не известно. Но стандартные миллион в месяц гарантированы.

Как заржаветь за 30 дней

  1. Прочтите книгу Rust это язык со своей философией и будет неэффективно использовать его как инструмент не понимая основных принципов - как, что и почему нужно делать. Самая свежая версия книги на английском, но можно найти и переведённый вариант. Также доступна бумажная версия, а на официальном сайте есть раздел посвящённый ресурсом для изучения как самого языка, так и его специализированного использования.
  2. Напишите 2-3 приложения Если вы веб-разработчик(ца), то возьмите разные фреймворки и напишите одно и тоже приложение с их использованием. Так вы поймёте плюсы и минусы макросов в Rocket, помучаетесь с асинками в Actix и Tide или напишите всё на чистом std.
  3. Смотрите конференции Слушайте различные выступления с Rust конференций. Возьмите максимально непохожие доклады и проверьте ваше понимание сказанного в них. Если что-то незнакомо - значит есть пробел и его стоит изучить: относится к вашей специальности - заполните, не относится - поступайте как считаете нужным.
  4. Подпишитесь на this week in Rust TWIR - это много интересных блогов, описание изменений в языке и популярных проектов, а самое главное - свежие вакансии.
  5. [опционально] Законтрибьютте в open source Наличие pull requests в популярные проекты придаст вам уверенности и веса.
  6. Настройте LinkedIn Откройте в своём профиле готовность работать на Rust, добавьте его в свои навыки, поищите сообщества и людей связанных с технологией и подпишитесь на них.
  7. Ходите на интервью Старайтесь восполнять недочёты после отказов, а также не торопитесь принимать первый полученный оффер. Берите недельку на подумать - возможно появится что-то более заманчивое ;-)

PS

Делитесь своими историями, пишите дополнительные вопросы и давайте советы из вашего опыта.