How to learn web frameworks
I talk to a lot of junior developers. I talk to a lot of hiring managers. The former feels a lot of pressure from the latter to come into the job market armed with skills in specific framework. React, Rails, Angular, whatever. First of all, good hiring managers should not be exerting this pressure because good developers can learn and good managers can encourage them. It’s unrealistic to expect junior developers to know frameworks that solve problems they’ve never experienced. They’ll struggle every step of the way and never really get it.
If you are that junior developer and you know you need to learn React, or MEAN stack, or whatever, I suggest you take a step back. It’s unrealistic for you to expect yourself to learn a framework that solves a problem you’ve never experienced.
If you know you need to learn Rails, do you know what Rails does? It’s a web application framework. Does that sound useful to you? Have you tried to build a web application before? It’s hard. Try it. See if you can put together a simple web server with Ruby, or whatever other language you know. Can you respond to a GET request? What about a POST request? Can you store the contents of that request in a database? If you find this doable but tedious, try using a simple framework like Sinatra to do some of the repetitive stuff for you. Keep going until that sucks, then look at Rails again. It should make a lot more sense. If not, keep going until it really sucks.
I never really got JS frameworks (Backbone being the dominant one at the time) until I had struggled with the limitations of building a fairly complex AJAX-based UI with only jQuery. I was never very useful with Rails until I had walked away from it, leaned to build a web server with only node, and felt the pain of trying to scale that web server into a web app.
Frameworks don’t exist to impress people or make your life harder. They exist to solve problems. People use them because they have those problems. If you want to know the framework, it helps to know the problem.
If you’re looking at “learn Rails” or “learn Angular” as the problem, then you’re going to have a hard time knowing where to start, and it will be hard to know if you’re progressing. If you can reframe the problem as “learn how to build complex, interactive UIs” or “learn how to build web applications” then the framework becomes a tool for solving the problem, and learning it won’t be a chore, it will be a discovery.
PS. The aforementioned hiring managers would be disappointed if I didn’t mention that Shopify is looking for developers to help us solve problems, so take a look at our job postings if you’re into that sort of thing.