Learn programming with Rust as first language

Introduction

Coding can be a daunting task to any beginner. In fact even at seniority levels, it still is for advanced concepts. As you get on your journey of learning how to code you’ll begin to find previous hard tasks as easy. At some point they will become so obvious that it gets hard to imagine how other people don’t understand them. But regardless, there will always be daunting tasks waiting for you. Programming is not about the destination, it is about the journey itself.

It’s not something that you learn, and you’re done. There’s almost an infinite amount of stuff that can be learned and used, as you gain more expertise, you’ll be able to specialize on certain types of programs and make them go the extra mile, which feels very satisfying. This field also keeps constantly evolving, so much that in 10 years the job requirements change drastically, and it might be difficult to find a job if we don’t keep learning.

If you enjoy learning and trying to do new stuff day by day, then this is for you. It will get easier over time, I promise!

From zero knowledge on programming to being able to apply to any job and hope to succeed, it takes at least 6 months with full day dedication (8 hours a day) if you’re a good learner.

To get rid of the “junior” title, you will need another 2-3 years usually. And (real) seniors have at least 8 years of experience. From there, the differences between someone with 8 or 20 years of experience tend to be very dim; it depends more on the people themselves than the experience.

The good news is that with enough dedication you can get yourself employed in record time, which for other careers requires proper study at a university, which takes several years. And you’ll be able to grow easily on the job. Getting employed is not the destination, but maybe a new beginning. There’s always a huge demand on good developers, so if you prove yourself good, even if the company doesn’t allow you to grow, there will be several companies wanting your talent and will raise the offer accordingly.

So, before taking this journey ask yourself: Is this the path I want to take? If the answer is yes, then do it! Commit and push forward to get it.

NOTE: I love oversimplifying a lot!. And I will lie in order to make things look simpler and create simple rules that don’t always work. This is done on purpose to make the experience easy to follow and add concepts slowly. I will correct these and get into specifics slowly as I feel the reader got enough knowledge to understand the whole thing.

Book Levels

I organized the book into sections called levels, following “mage” levels as in fantasy games.

These give a way to you to know how much progress you did and how far are from your goals.

Your target should be to reach the “Adept” level and be proficient with it. You could consider yourself a programmer just with that.

After this point, it’s a matter of wanting to be better. The better you are, the easier it will become to get a job. I would recommend at least reaching the Master level to be in a good position to start working.

Level: Starter

You know how to install Rust and create programs.

Level: Novice

Your programs know how to apply logic and process a lot of instructions.

Level: Apprentice

Your programs become useful, and you’re able to create your own utilities for your own use.

Level: Adept

Able to use most libraries out there and create programs that would be production grade. This could be enough for some starting junior positions in some companies.

Level: Master

Got rid of most of the blockers and brain-walls that are associated with Rust and programming. Coding complex stuff that matters, using the right tools for the job and being able to participate and contribute with the community.

Level: Grand Master

Expertise and in-depth knowledge on how Rust works. Able to follow almost all code that you came to see.

Level: Legendary

If you reach this level, better go and contribute to Rust itself!

Unfinished chapters

This Book keeps growing. A lot of chapters are still a work in progress.

I added some symbols on the titles to clarify:

  • ?: Pending review and completing a bit.
  • !?: Several paragraphs are still missing.
  • !!?: Still mostly empty, placeholder.