After the Front-end course I teach, people often ask me what to do next. To avoid repeating myself, I decided to write down my own general development plan for a Front-end developer after a basic HTML/CSS/JavaScript course.
I cannot guarantee that this plan will help everyone, and it definitely should not be followed blindly, but it can surely give you a few ideas for growth.
Algorithms
To begin with, there are kinds of knowledge you will need sooner or later, even though they will not produce an immediate effect. At the early stages it may even seem as if none of it is used in real work. But in the long run it is still better to have it. I mean algorithms, patterns, and code style.
Worth studying: algorithms, patterns, code style, the Clean Code series.
Many programmers come to these seemingly basic areas only years into their careers. There is something positive in that too, because by then they already know exactly where to apply that knowledge. They have real problems in their work, and they find solutions in these areas.
Without that kind of “problem”, this knowledge will feel more theoretical. Still, I recommend going deeper into the fundamentals as early as possible. Do not redirect all of your learning time toward it, just spend 10-15% of your study time on algorithms, patterns, and related areas.
This knowledge will make you a more versatile programmer, one who does not need months to learn the syntax and principles of every new language.
HTTP and client-server basics
For a web developer, it is important to understand the principles of client-server interaction. The foundation of that understanding is HTTP, along with some basic networking concepts.
You will need this knowledge when you run into problems with loading resources, page speed, and AJAX work.
JavaScript fundamentals
This is the foundation of your specialization, so you need to make sure that gaps in your knowledge of the language’s syntax and capabilities do not become obstacles to the tasks in front of you.
You should also regularly keep an eye on new language features as they appear. Back then it was ES6 and then ES7.
Layout and styling (HTML, CSS…)
You need to understand layout well, even if 90% of the code you write will be JavaScript. JavaScript in the browser is tightly connected to the DOM, so without solid HTML and CSS knowledge it will be difficult.
Useful skills: Flexbox, working with SVG, Canvas, CSS3 animations and transforms.
Libraries, frameworks, and tools
jQuery: you should know its capabilities and limitations, be able to use a jQuery plugin, or write one of your own.
Angular: you should have at least basic experience building a single-page application, something you should already have had after our final assignment.
React.js: it is highly desirable to understand how it works, because this is where web development is moving. It is also good to have at least minimal experience building an application roughly as complex as our final assignment, but using React.js + Flux or Redux, although without understanding the principles this is pointless.
lodash: knowledge of this library will help you when you need to work with data. There is no sense in memorizing every function. You just need to be able to turn to the documentation at the right moment and figure out which one solves your problem.
node.js: it is very desirable to have at least a little experience writing simple scripts for Node.js, given that it is simply another JavaScript runtime. Ideally that would be a simple server using Express or a program that works with files.
Gulp and Grunt: build systems for web projects that run on Node.js. It is important to understand the principles and be able to configure plugins and extend the functionality when necessary.
What should you do right now? Where should you go to work?
I can recommend starting with one unusual task, though I should warn you right away: it requires a fair amount of self-organization. Set yourself a task and implement it.
What do you do besides studying JavaScript? What interests you? Maybe you do cross-stitching? Or play a musical instrument? Try making a site about your hobby and build it in a way that you would not be ashamed to show to a future employer. With one task like this you solve several problems at once:
- you work on something you actually like;
- your project may be useful to someone besides you;
- you gain experience;
If your hobby does not lend itself to a website, make a site about anything. Even a site for the residents of your building to communicate. Traffic does not matter. What matters is how exactly you build it. And make sure each new project is better than the previous one.
Then, depending on luck and skill, you have several options:
-
become an intern. This is probably the best option. You get a chance to work in a team, solve real tasks, and grow. The downside is symbolic pay or no pay at all. Sooner or later you will accumulate enough experience to become interesting to other companies, or you may get a full-time offer from the place where you interned.
-
become a freelancer. Also a decent option. You will get to work on real projects, but without a team. Pay ranges from zero to roughly market average. At the beginning you can ask clients to send you a task “just to try” and solve it for free. I think many will agree, and you will gain another project for your portfolio, some experience, and a client who may later give you the next project as a paid one.
-
try yourself as an Open Source developer. There are a huge number of projects in the world just waiting for someone to come in, add functionality, or fix existing bugs. It may be a bit hard to start here. Perhaps you will come to this after being an intern or a freelancer.
To get into the Open Source world, you can try a plan like this: find an interesting, not too popular, and not too complex project on GitHub, see what problems it has, solve them, and submit a pull request with your solution. In the ideal case your code is accepted, and now you are a contributor to open source software built by people just like you. The more such fixes you make, the more experience you gain, the faster you learn to understand complex projects, and the sooner you land a good job. A GitHub profile like that is a huge plus for a resume.
Do not be afraid to email HR people at companies you are interested in with something like: “I am learning and I want to intern with you.” This gives you an advantage: HR does not need to persuade you, because you came to them yourself. Do not neglect this approach even when you are looking for your next job.
And the main thing: if after a day, a week, or a month you still cannot see how your code could be improved, then you are not growing as a developer, which means you need to spend more time learning. Good luck.