- ECMAScript Language Specification
- Structure and Interpretation of Computer Programs
- Smalltalk-80: The Language and its Implementation
- React.js Essentials
- You Don't Know JS
- Google Web Fundamentals
Quickly find all 25 alphabetically ordered developers and their insights.
All 25 expert reactions are chronologically ordered
Pick a non-technical problem to solve, something that affects end-users, a social problem, an environmental problem, a management problem, a education problem, a science problem... something like that, something important to you that can make a dent in the world and your peers, something that will last. Do whatever it takes to solve that problem. Pick the right technology to solve it. Learn the technology on the way. Avoid the rabbit hole of falling down into an endless loop of technical improvements and changes that do not benefit your end-users, that most often only benefit other developers, as that shit will be thrown out in a year with no dent to the universe. Work on what's important, and learn along the way. Let your project speak, not your code.
Example: I started to study ES6 2 years ago. To learn properly I started a open-source project: Harmonic. Which is a static site generator written in ES6.
Also, I'm always reading blog posts and some books. A good tip is to follow the "right" people on Twitter and the precious one, use Github instead of Facebook.
I believe that the best way to learn any programming language is to read code in it. I found that larger projects in their early stages are particularly useful to read, because they are very close to the original intent of the developer.
As software progresses, it usually gets optimised and made more thus complicated to understand. For example, see the original mustache.js — It is fairly straightforward.
Today, it include a parser and compiler and the original intent is obfuscated by these abstractions. That is not to say that it’s bad that mustache.js got more complicated. Programming is trade-offs, and execution speed and code size are opposed to beginner-friendly reading and learning.
Another example is the annotated version of the first jQuery release —it is possible to follow. Today’s jQuery is a lot more complicated (again, because of trade-offs).
Peter van der ZeeWebsite
For beginners books are probably best. There's a new superhero every year so getting a book released this or last year is probably fine.
For advanced you simply read the spec. Takes a long time. Can be very dry. But after plowing through it you'll know everything. If you can remember it all. And keep the high level overview in your head
Easy: Sit down and tinker with it on a side project. For the first project, do a small but useful website, that can be anything.
It's not for everyone, but I'm still kinda oldschool and very much a book-based learner (print, not even e-books). I like to crack open a well written book, start following along, then branch off on my own experiments before returning to the book or finding answers to my inevitable questions there. Couple that with a bit of StackOverflow, and we're good.
Another resource I would suggest is various Code Challenge sites (Coderbyte and CodeEval). These exercises help you figure out how to solve problems like a programmer, and they both have a lot of "Easy" challenges you can start with. Also they give you ideas for simple projects that you can work on if you're not sure what you want to do.
If you don't want to go with the self learning route, you could also sign up for a bootcamp Before spending your money (and sometimes these bootcamps are a lot of money), research the bootcamp to see if that is the right option for you, works with your schedule, and what other people have said about the bootcamp. Not all bootcamps are the same, and help more than others.
This all sounds very simple and manageable; because it is. But in doing so, you will be learning the basics - and from there you’ll be able to build on that. It’s how I’ve learned every language I know, despite having zero experience in coding, not even basic HTML, when I first started out.
What works for some people won't work for others. Some prefer to explore examples and prefer top-down approach. Others would rather start from the core and only then move onto the higher level.
I started by learning Prototype.js library and then eventually dug underneath to see how things work and why they work certain way. Then I got all the way down to the spec. It was fun and interesting but if I started from the spec, I'd leave from the first page.
Gotta try things and find your way. As long as you're truly curious, you'll get there.
Kent C. DoddsWebsite
Now, it takes some learning to get to the point where you can actually build something. That's where things are a little subjective. Each of us learns differently. I discuss this a bit on my AMA. Basically, there are a few different types of learning methods that cater to different learners: Visualising, Auditory, and Kinesthetic. Based on the way you learn, you might learn best by watching an egghead.io lesson or conference talk, you may learn better by reading a blogpost, tutorial, or book, or you may learn best by having a mentor help guide you. Based on your learning style, that's where you start.
If you really want to solidify your learning, teach. Propose talks at meetups and conferences. Give workshops. Create screencasts and upload them to YouTube. Write blogposts and tutorials. All of these activities will help you make sure you understand the concept inside and out. It takes a new level of understanding to be able to explain something accurately and simply.
So get the base learning the way you prefer, build something, then teach it. This is how you become a master of a concept.
Watch Kent's recent talk on this topic:
When you're done, you'll have done something that a surprisingly few number of web developers have done: build and app from scratch, on your own.
A few somewhat more specific tips:
- Be wary of anything that claims to solve all your problems;
- You'll need to know Node.js and npm no matter what, so building a simple node.js server using something like express.js will not be a waste of time;
- You probably don't need half the stuff you've heard about, this is why focusing on building something real is so important;
- Get on twitter and connect with and learn from other developers.
Write your own libraries and frameworks. Then throw them away and write them again but better. Reinvent the wheel many times. The lessons learned during these exercises will serve you well.
Proceed making freelance HTML (and read books of course!) until you find it easy (5-10 projects are going to be enough) and pick a JS framework then. Does not matter will it be Angular or React both of them have pros and cons. Just pick one which is closer to your soul. For me ReactJS is good and if you want to go the same way I would recommend to read React.js Essentials
Once you are done with first project built with JS MVC framework proceed with looking for internship job scanning market demand and trying to respond to them by reading corresponding books and tutorials.
Got your first job? Be disciplined, be eager, be flexible, be enthusiastic. Success.
More to read?
One thing is still very important though: try to write by your own some code, even if it looks like the simplest thing on Earth, don't consider it that easy until you've implemented, and mastered, all steps needed to reach the goal.
Forget the copy and paste, forget forums with ready-to-use solutions for problems maybe not even similar to yours; use other people experience to learn, rather than quickly solve something as if it was a "magic spell" on your file, that won't bring you anywhere and won't help for the next time you'll encounter a similar issue.
I'm a big fan of learning by doing. Books and tutorials fine for getting started with the basics but building real things gives you so much more context for what your learning. Start by setting a small goal to hit and get Googling! Sites like Stack Overflow, Mozilla Developer Network and CSSTricks are full of information and tutorials to help you. Then do it again, and again, and again. Before long you'll be ready to tackle more and more complex projects.
- Nodeschool.io: Do the workshops. Go to events. Mentor and/or help organise if you can.
- The best resource for learning is your community. Your peers and the code they write. Find them at local meetups and in chatrooms (Slack/Gitter/IRC/etc).
- Read the code of the tools you use. You'll always learn something new.
- Establish a personal policy of at least trying to fix open source tools before asking the maintainer to. Look at the code. If you can't fix it, then make sure to log a detailed issue including reproduction & what you tried to fix.
- The best way to learn is to teach. Teaching forces clarity and cohesiveness in your mental model.
- The best way to teach is to listen. You may even learn something.
- Try help solve problems people post in chatrooms and stack overflow.
- Volunteer to present at meetups, especially about topics you want to learn about. Trick yourself into learning something to avoid embarrassing yourself!
- Volunteer to help organise & maintain your communities. Help shape your community into what you want it to be. Whatever you put into your community, you'll get back tenfold.
- Be wary of strong opinions. Always evaluate tools for yourself and make your own judgements about the pros & cons. Refuse the temptation to form strong opinions for or against any technology until you've used it with an open mind in production. Question whether others with strong opinions have done the same.
- Remember there are no silver-bullet tools, methodologies or languages – everything has upsides and downsides – always understand which tradeoffs you're making and respect that others may value a different set of tradeoffs.
These days most of my learning is done via blogs (learning never stops). My list of blogs changes over time as old blogs stop being updated and new ones spring up.
Tweet: Maarten TibauView Tweet
Tweet: Miguel CorreaView Tweet
Get new articles, interviews and roundups delivered to your inbox:
We'll send you our non-commercial newsletter a few times per year.
No SPAM ever, we value your privacy.