The depth of the trade seems to be infinite, so the question ‘Where to start?’ raised by beginners seems legit. There are other questions like
- ‘How to get a job?’,
- ‘How to prepare for interviews?’.
In this series, I’ll attempt to answer these questions.
To give some context, my relationship with development started in my teenage years. I’ve learned HTML and CSS just for fun and curiosity. After that, I built websites with content management systems like Wordpress, and that was it. I didn’t take it seriously: it was a hobby and nothing more.
Taking part in a programming school wasn’t an option: the basics are freely available on the internet, and I didn’t want someone to charge me for the same thing I can find in tutorials. I knew it wouldn’t be easy though, but I can say it was fun for me.
I practiced at least 6-7 hours a day.
I worked on hobby projects with React, but after 3 months, I started to feel the limitations of self-learning. There was nobody to tell me the best coding practices:
- “How do I structure an app?”
- “Which packages should I use?”
- “What makes sense learning and what is merely some glorified sugar coating?”
Maybe I could have figured it out somehow by myself, but I realized that I need to work with people who already have many years of experience, so I can soak up the knowledge from them. The best way to be around people like that was to get hired, so I started sending my CV to companies. Many of them. Even for positions I was sure I wouldn’t be hired. Why not? If you can get through and be called in for an interview you can already learn from the questions you cannot answer or the coding challenges you cannot complete.
After several attempts, my efforts paid off: I got hired by RisingStack as a junior developer which allowed me to develop my skills a lot faster compared to the time I spent with self-learning. During my first month - like every new recruit - I had to finish the internal bootcamp, which prepared me to work on client projects.
But this series is about what to do before you get hired, so you can get hired.
At least you should have a basic interest in web technologies, programming or IT itself. It will be cumbersome without that, and anyway, why start learning something that you are not interested in? Learning how to write code just for the money isn’t a good idea either.
If you are reading this post, I assume you have the curiosity I’m talking about.
Basic interest is enough for learning the fundamentals and maybe even for getting hired, but if you want to make progress especially from an entry level, it requires extra dedication and effort. This is maybe the most crucial point about it.
Try to set reachable goals for yourself. Learn something new everyday.
Beyond the efforts, the required mindset to be a successful developer is also worth mentioning.
These are skills you will have to pick up as the time passes.
One of the other most important must-have skill is to know how to Google, a.k.a find solutions to a problem. I’ve seen a lot of people struggling to search for an obstacle that is so obvious to solve with a bit of inspection. There is an answer for the 99% of the problems that a beginner is going to face.
You just have to find the solution and apply it. It’s that simple (at the beginning). If you didn’t find the answer, probably you didn’t search the right way. So start getting to know how to Google correctly, and make a ‘friendship’ with StackOverflow and MDN.
Do not fear making mistakes. It’s part of the learning process.
With respect to the subject above mentioned, let’s move on to the next section.
HTML and CSS can be picked up really fast. Build a simple static website, experiment a little bit. Once you are comfortable with the concepts of these technologies, you can move on..
As HTML and CSS are not programming languages, so it is time to get some theoretical knowledge about programming. There are some books that I recommend:
- You Don't Know JS: Up & Going. (for beginning)
These books and tutorials should give you a basic understanding of the language.
Getting to know the command line is necessary. Learn the basic commands like how to enter/leave a directory, and edit/copy/move/remove files. You will use them a lot - so why not save time for yourself by learning them at the beginning?
Forget these cool words like React, Vue, Angular, Node.js, OOP, Webpack, functional programming, etc. In my experience, until you don’t know the basics, it is absolutely unwanted to confuse your mind with these advanced concepts and frameworks. Be patient, you will get there soon.
Setting up an IDE with a decent config will make your life easier. My personal favourite is VSCode, but there are other amazing IDE’s like Atom, WebStorm, Brackets or Sublime.
Your project can be a todo-app, a calculator or basically anything. Don’t choose very complex projects, it’s good to have a sense of achievement in the beginning. As you develop your project, you’ll have lot of questions. Use MDN, StackOverflow and Google. As I said above, there is an answer almost for all questions a beginner going to face. In case of you have no idea what kind of project to build, I provide some links below which maybe help with the decision.
Learning from mistakes is also an essential part of the process. Don’t be afraid to break the code. A failure is an opportunity to prevent future failures, and it makes you curious how to solve the problem.
I think you can get familiar with these things I outlined within 1-2 months if you do some exercise every day. Once you think you are confident with this knowledge, and made some hobby projects, and read the books, you can do a level up, and choose a framework and set Node.js in motion as well.
Originally published at blog.risingstack.com on October 9, 2018.
(open source and trusted by devs everywhere ❤️)