Harvey
A very Junior dev. @EscobarDrake on Twitter.
I never thought my first ever article will be because I am scared of something. I am a 3rd year Computer Science student in France, I learned a dozen of languages and some of them were Java, C, C++, COBOL ( that's a lot of letter C) or PHP.
And I still feel very very very junior. For the end of the year we had to find an internship for the first time and while I was searching one, I have noticed something: Javascript is everywhere. Native Javascript, Node.js, Angular, React, I don't know any of them and there was only a few job offers with the languages I knew.
I felt like I really missed something. I am a normal guy, I don't really code at home, or work on a personal project. Last year I started learning Android development for 2 months but thats all. So I did some research and followed some people on Twitter and quickly realized Javascript ecosystem is changing rapidly. And there isn't just 4 or 5 frameworks, but many more and I don't know how I'm going to deal with it. Am I missing something? Javascript became so popular (and powerful?) that we, junior devs, have to absolutely learn it? Which framework should I learn first? Is it a waste to learn Native JS?
Today I am doing my internship as a Symfony Developer, we are working on a Symfony/React project and sometimes I'm sneaking in the React part to figure how it works. So I've chosen to start learning React.
Two days ago I wrote my first Component and even it was only a div with a greeting sentence I loved writing it.
Thank you for reading this, and by the way I will gladly take any tips/tutorials you have for me!
It is pretty wild, but the fundamentals are still just computer programming and hopefully your employer will be able to help reign in the insanity with good technical direction.
There are a lot of great JavaScript articles on this site. I recommend querying and reading a bunch. Here are a few you might find helpful:
Writing modern JavaScript code
Setting up a Minimal, Yet Useful JavaScript Dev Environment
The JS Path: JavaScript Best Practices
Also @kayis posts a lot of great info on JS.
Good luck!
Hi Ben and thanks for sharing my article It makes me really happy !
I will read all of them since I kinda like how the JS community is so active ! When I see all these articles and tutorials I'm a little more relieved about it
One more thing, you only need ONE job and there are PLENTY of jobs in Java, C, C++, COBOL, PHP.
You are in control of your own career and JavaScript is only eating a bit of the software industry. There is plenty of room for all the languages, personalities, etc.
The key is to know vanilla js really well. If you know that, I dont't think it will be hard to switch to frameworks.
Vanilla JS? Never heard about it, I will do some research thanks
I mean a pure js usage, without frameworks etc. Ok, maybe jquery to perform ajax requests, because they're messy, but other things can be done with pure js. Like, creating a component using prototypes and native dom manipulation etc. Just to try it out. Check out this: vanilla-js.com
or rather than jQuery for ajax look at fetch - all the goodness of modern vanilla JS, with a great polyfill, and none of the jQuery bloat :)
What was really frightening was 10 years ago and maintaining JS code for the %$`$ IE6 (ie6death.com/). Now things are getting better so don't be afraid! :)
This might be part of the problem: "I am a normal guy, I don't really code at home, or work on a personal project."
I see this as an indication that you aren't all that interested in programming; those who have a passion for it can't get enough of it. Take a look at how you spend your time at home...what is it that gets you excited, something that you'll work on nonstop until the early hours of the morning? That's your real passion, and following it might make you a happy guy.
Hey, thank you for your advices!
I think I like programming, really, but I don't know, i'm going to the gym 4 times per week and the other days I'm doing my homework. I really feel like I don't have time for a personal project. But you're right, if I loved it that much I could make some times for it, this is why I'm going to learn React (or maybe another framework ?) and start creating something. I already have 2 ideas for a little project which can help me to increase my skills !
I agree with Perry, about the passion. I always find something interesting to do or at least to read about.
As for JS, I've avoided it until now (59 y/o and counting... being a programmer since I was 20).
The approach I took with JS is to use it as a compilation target and focus on Typescript instead. I read so many praises about the language, so I started learning it. It's amazing.
A few more points on JS:
Agree 100% with Perry.
You've managed to perfectly illustrate what I truly see as the biggest issue with the way CS is taught and why I would never advise someone that wants to code to spend the time and money on college. To put it succinctly, the neckbeards at Universities are simply too resistant to change and refuse to acknowledge that Javascript has grown up, and they're damning their students because of it. This is a generalization, but I personally never had a professor prove me wrong.
Also, I want to note that "I am a normal guy, I don't really code at home, or work on a personal project," isn't a good sign, IMO. Granted, most personal projects most people would have any interest in are going to be web-based, and that means Javascript. Personal projects are where you learn the most, and if you're not coding at home, you don't love it, and if you don't love it, there is a greater than likely chance you will burn out. In all honesty, if you don't develop in your off time, I'm hesitant to call you a developer at all. Perhaps that's harsh and I'm just a zealot, but alas.
With that out of the way, check out YDKJS. It's arguably the best, most comprehensive JS guide online. Then, once you've got the basics of JS down, React is the way to go. The community is huge, documentation plentiful, and the ecosystem is an absolute joy to work in.
github.com/getify/You-Dont-Know-JS
The issue is that HR/recruiters still mostly expect people to have degrees. Most of the time your application will just end up in the garbage bin for not having a degree. This process might even be automated in many places. Beyond that there is a bias towards degrees from specific institutions. It doesn't make much sense on a technical level, but that's just how it is here in the US. There was a point in time that I was considering dropping out of school, because I was making extremely good money coding. It was my boss actually that convinced me to stay in school. After going through a couple rounds of job searching and seeing how tough it can be even with qualifications, I'm really glad that I had that voice in my ear telling me to stick with it.
I'm US based, and never finished school. I think you'd be genuinely surprised what a healthy GitHub account attached to your LinkedIn can do. Degrees seem to be a stopgap for having actual code published. In my experience, once you've published even a small amount of usable, well documented code, they're pretty willing to overlook the degree. My LinkedIn is a joke when it comes to "professionalism," yet I've been bombarded with recruiter emails since linking my GH, even when I only had a small number of projects. It does make that first contact harder to establish though, I will admit that.
Establishing a reputation on StackOverflow and HackerRank can aid a LOT as well.
With all due respect, being bombarded by recruiters on LinkedIn and actually getting the job you want are two entirely different things. I'm glad things seem to be working out for you though.
This is very true. I don't want to seem like an advocate for dropping out, or like college is entirely pointless. Rather, pointing out that I think much of what is taught is antiquated with regards to most of the jobs on the market.
At the end of they day, what it takes for you to learn the skills and get code published is the path you should take. For some, myself included, college wasn't it. If you're the type of person that functions better in a self taught environment, diving head first into open source and contributing wherever possible can work. IMO it's one of the things that makes this field great. The path you take is less important than the fact that you get there.
For the sake of completeness, I want to note that pretty much all of what I've said could very well be exclusive to the web. It's my niche, and in all honesty I don't stray far because it's what I love. The rise of coding bootcamps, and even projects like FreeCodeCamp, seem to have liberated web development from the traditional CS model.
I agree entirely. College is overrated and generally poor at actually teaching vocational skills. Hopefully people will eventually catch onto the fact that an undergrad liberal arts education isn't all it's cracked up to be, but I still recommend people get degrees for the time being.
oh! one more thing: use the documentation on mozilla developer network (developer.mozilla.org/en-US/) for anything you need to know. it's WAY better than w3schools. and they have good tutorials.
There is a Chrome extension to exclude W3Schools from search results, and I highly recommend it. The information on there is usually outdated, or just flat out wrong.
MDN really is the definitive source for JS.
I'm not sure if React and Symfony (a PHP web framework) is a good combination. With the modern JS frameworks (React, Angular etc.) server based web frameworks seems to be dead, at least for new projects. If I were you I'd choose another language for the business layer (Python, Kotlin etc.) instead of PHP.
To throw in my $0.02, Sails.js and Trails.js have very low barriers to entry and allow you to build a JSON API almost mindlessly. Plus, then you're in the magical world of full-stack javascript, and server-side rendering and other isomorphic patterns are only a Google and StackOverflow away.
You are entitled to your own preferences of course, but the idea that the client/server model is dead is simply not true... Traditional frameworks have become very good at serving APIs.
Nice article. This summarize the fear I had back in my days of 3rd year as a Computer Science student (2007, I guess). That was a time of plenty 'revolutionary' java Web frameworks, and I knew none of them.
I think this is a technology dilemma that will never end: there is always a 'sexy' technology that everybody talks. And here is my advise: focus on learning the programming paradigms and the benefits of them, not just frameworks. If you are learning different languages, as you said, you are already in the right path, I think. The best job offer is the one which takes you as a programmer, and not as a framework specialist, so, for you will be a matter of time.
So you was in the exact same situation, and I think you are absolutely right, even if I don't know JS (yet!) If I'm good at programming I will find something interesting.
I would actually recommend starting with jQuery because it's relatively easy to use, does not require a complex build system, and its effects on the browser DOM are predictable and observable without special tooling. From there work on performing DOM operations with less and less reliance on jQuery. A site called "You might not need jQuery", a site called "Can i use", and the MDN javascript reference should help a lot. Frameworks like React and Angular are powerful, but also kind of magical so it's difficult to tell what exactly they are doing. I wouldn't discourage you from learning these frameworks, but I also don't consider knowing how to use them to be quite the same as understanding javascript.
Please don't work your up from jQuery, jQuery abstracts out a lot of good things that are important for beginners developers to learn in order to understand good design patterns of JavaScript.
Doing this, will only make you more comfortable with anti patterns of JavaScript such as using a lot of iife, like in
$(document).ready
functionReact is also a salad of anti-patterns reminiscent of early 90s PHP spaghetti code. Inline XML, seriously? I would argue that jQuery is a pretty solid DOM toolkit and a no-nonsense way to introduce oneself to, ahem, the actual DOM.
i love javascript. and yes, there are a billion or more frameworks to pick... but start off with learning just the plain javascript before tackling the other frameworks. it's a lot like going straight to mindstorm lego before playing with duplo. hahaha!!
but seriously, javascript has se seriously quirky features, but as soon as you get thise figured out, you'll be able help anyone with "this". :)
i'm currently watching a video lecture series on nodejs by a guy called anthony alicea (on udemy) and he's really explaining the javascript fundamentals well. he does a course on plain js as well (understanding the weird parts) and i've liked the few videos i've seen.
tl;dr:
my suggestion: learn plain javascript and once you can make loops and popups and do stuff with the webpage, go for jquery. it's a really great framework and is still in use a lot (we use it at work - a decision they made because everyone knows it).
good luck!
I understand how you feel. I'm kind of going through the same thing.
Way back in 2012 or so, I was really starting to learn programming and I fell in love with JS. The only real frameworks or libraries I knew about were JQuery and... that's it.
After finishing a few projects and having felt like I really understood Javascript, I started learning Ruby on Rails, and Javascript fell out of my view. I woke up four years later, in 2016, bored with Rails and realizing that my love, Javascript, was too good for me now. I didn't understand any of the frameworks or what was so special about them. There were so many different things to learn about: the tooling, the linting, the webpack-ing, the components, the arrow functions!
I've started to reconcile with Javascript a little bit. I've made my way through an Angular 2 tutorial (which is in TypeScript rather than Javascript, incidentally), but we aren't best friends anymore, and I don't use Javascript often, if at all anymore. I write lots of Java for my Computer Science classes and lots of Python for my job.
Anyways, I would say it's not a waste to learn vanilla/native/pure Javascript (Javascript without any frameworks or other tools). Javascript is, above all, a fun language. It's dynamic and flexible and helped me understand basic programming paradigms. But if you already have a strong background in programming (you've said you know lots of different languages), Javascript isn't a necessity. You can do great things all the while completely ignoring it. Don't feel like you have to get a Javascript job or know even a smidgen of it.
Nice post/discussion you started here! Definitely going to read all the suggestions the community commented here.
First of all, let me tell you that I know how you feel: I did Java, C/C++ and others in college and then discovered the JavaScript ecosystem just like you. To be honest I recently started learning React too, but you seem to be doing pretty well so don't be scared.
On the other hand, an internship doesn't define your whole career and, as Ben said, there are plenty of jobs in those other languages if the JS family doesn't suit you or you end up not liking it, so don't worry.