Robert Czinege Software Developer at RisingStack

TLDR: We have a Node.js coding bootcamp here at RisingStack which will help you to sucker punch imposter syndrome and give you a kickstart learning Node.js!

In this article, I give you some insight on it and share my experience. I hope that if you are a rookie just like me, you will get some boost seeing my example, and you will jump right into it.



((Back then, I had no idea what I'm getting into!))

And the good news? Our Node Bootcamp is totally open source (aka free), so you can improve yourself too by going through it.

By the time you finish it, you’ll become a Node developer who can confidently work on enterprise projects (with the help of a mentor) - and it’s a great learning material in case you’re preparing for the Node Foundation’s Certification Exam!

This is my story:

Meet Me, the Wannabe Node Developer

My journey started back in May 2016. I’ve been looking for an opportunity for changing my career for quite a time back then. Originally I’m a civil engineer, but I was interested in web development. Doing some tutorials and online courses every now and then, but nothing serious, it was more like about learning new things, you know, just for fun.

Then one day I saw an ad of a coding course. 4 months of basic web development, with pretty good chances of finding a job. I did some research about the opportunities, and I spoke with a couple of friends in the industry. I guess you’ve found out already: I applied.

I got a junior front end developer job after finishing the course. It was all fun and games until I figured out that it’s not what I dream of. The team was superb, I learned a lot during working hours and even after. When I got involved in an API development and implementation project, I realized I’m very interested in backend technologies as well. Unfortunately, I wouldn’t have the chance to work on similar projects, since the company almost exclusively develops front-end projects and this was a one-time-only, internal project.

Fast forward to June 2017: a message was waiting for me in my LinkedIn Inbox. It was different from the usual recruiter messages, it was kinda personal and really straightforward, asking whether I’m interested in working on cool stuff, contributing to the Javascript and Node.js community and if so, let’s talk.

Best. Timing. Ever.

Starting the Node Bootcamp at RisingStack

On my first day at RisingStack, I got a T-shirt with two words on it: Node Hero. I immediately burst into laughter.

“Node Hero? More like a sidekick. Or the guy who changes the lightbulb in the callsign reflector…” - I said.

“For now, maybe. But at the end of our Node.js bootcamp you’ll know everything you need to move forward” - they said.

It turns out they were right though. The professionalism and knowledge they provided were more than enough to get the fundamentals about Node.js and to confidently jump into the new chapter of my programming career.

So I started the bootcamp exercise right on my first day, without any deeper knowledge of relational databases or Node apps whatsoever.

I’ve found it to be pretty delightful that my exercise wasn’t a to-do app they usually ask you to make. Not that there is any problem with it, but as a total rookie, I did it many times before so it was nice to see something new.

You know, just for fun and for the sake of variety. :)

So what did I do instead, you ask?

The main task the business logic had to handle in the first assignment was:

Find GitHub repos, using the GitHub public API Collect the repos into a database in a form specified in the readme Collect the contributors of the repo into a database in a form specified in the readme Calculate the added lines per contributors and save it into the database Be able to query the contributions

This seems pretty easy, huh?

You’d be surprised how complex it can get in no time! Especially if you want to do it at RisingStack grade..

First I was so confident in what I did, that I just jumped right into the first task, starting to hack-n-slash around. It was a good way to get lost in all the new things.

So I Needed to Slow Down a Little Bit...

“Could we like go through the daily task every end of the day and check whether I got everything right or not?”

During this bootcamp, each and every task - or milestone, if you will - introduces something new, a new tool / library / syntax / feature / unicorn / double rainbow you have to use, like

ES6 syntax with async-await

Joi for validation

Knex.js, for SQL query building and migrating

Redis to handle messages ( yes, there will be workers ;) )

just to name a few.

You can find links to useful resources next to the task description, where you can find documentation, examples, and articles which will help you to grasp the concept, from the very beginning, setting up the project and getting all the required things right, to deploying and making the app production ready.

Pro tip from a rookie: For me, it was really helpful to set up a method:

First I spent a day reading the resources, finding related ones and doing super simple examples to see how they work in real life and to check whether I got it right.

The next day I created a plan, usually with pen and paper (Yeah, I know, it’s so 3000 B.C., but it is the best way to make notes and drafts fast!) to draft a workflow about what I have to do in the task.

This way you can stay on track and save a lot of time!

Tests. They got your back, bro..

I think almost all of us know the phase where we all started: you know the basics, and can put together something that just miraculously works. I found this the main selling point in developing, you can just create things out of thin air! Absolutely amazing.

But is it really working? In every condition? What about that refactoring you did yesterday? Is it still cool? I think you’ve heard this a lot, or else, you’re the Test Pope himself, and so you can back me up on this one:

Testing gives you the confidence, that you did not screw up something accidentally and your code does exactly what you wanted it to do.

We think that proper testing is a crucial part of every project. Milestones are only reached if you have the proper testing done. You'll most likely find some predefined tests, but most of them need to be written by you.

The bootcamp helps you to get familiar with the most commonly used testing techniques and tools, like

Mocha.js,

Chai.js,

Sinon

for stubbing, spying and mocking out calls, from unit test to end-to-end tests.

They really come in handy for refactoring, because one of the main point of this exercise is to write maintainable, readable, efficient code. Which you probably won’t be able to do at first try.

Pro tip from a rookie: Try to organize your code in a way that makes it easy to unit test all your functions! If you already wrote it and then you realize that it’s not really fit for unit testing, just try to restructure it instead skipping the test!

Don’t forget: today’s skipped test is tomorrow’s bug. Potentially.

Is this the lab experiment accident which made me a super Node.js guru-hero-ninja and let me write ridiculously long section titles?

There’s this ancient proverb:

“The thing is, while you are a rookie, you don’t have enough knowledge to decide which way is the best to step on, the amount of options are just overwhelming...”

Nope, not at all. Probably you already know that it is not possible to become a pro in a fortnight, as there are no magic potions making you lean and muscular while you can eat trainloads of chocolate, heck, not even a shoe that fits all feet.

Fortunately for me, the good folks of RisingStack created an exercise that can give adequate answers for some simple, yet periodically emerging questions hitting all of us at least once in a time, like:

“I’ve just finished a tutorial on javascript. What should I do next?”

“Do you have a good exercise that fits a beginner?“

“What is the minimal requirements to get a junior job as a Node.js / web developer?“

I’m almost sure, that if you are subscribed on r/javascript, you saw these questions more than once…

What I loved in this exercise is that I got familiar with a lot of new things, while I created something that is the archetype of every web app nowadays.

After I finished every task in the Node Bootcamp, it became my number one backup code I went back to when I needed to create something, or when I wanted to try out or learn something new.

Just the recent example of mine: I wanted to create a login system with token authentication, by only myself, without any step-to-step tutorial or whatsoever. I didn’t want to create a whole new app for this simple task. So I just integrated it into one of the bootcamp exercises! After this I created a handy boilerplate out of it, so whenever I want to experiment with some new fancy stuff I need a backend for, I just grab this boilerplate and spice it up as I want to in no time! Really good for quick prototyping.

Wanna go farther? Sure thing, chief! What about wiring some CI system into it? Deploying out on Heroku maybe? Creating a front end for it? It is all possible, I know because I did it. It is only up to you, which direction you wanna move from this point.

So yeah, as you can see, this bootcamp is not equivalent with the bite of a mutant spider or chemical X, but it is a very firm base that gave me a general overview of back-end technologies, and it allowed me to experiment with new things.

The other very important personal thing is that it gave me confidence as a junior in what I know. I could start to learn effectively, and now I can distinguish what resource is useful and which is not. It taught me to learn, and now I am not afraid at all to get in the water for swimmers only.

You can Start RisingStack’s Node Bootcamp Now

My description above was just a small taste, barely scratching the surface. I suggest you to check out the exercises for yourself on GitHub: https://github.com/RisingStack/risingstack-bootcamp

We’re counting on your feedback!

Also, If you find the bootcamp too easy, I recommend you to check out our upcoming Node.js trainings to challenge yourself even more. I bet you have plenty of areas to cover - like microservices and security!