In fact, I frequently get asked questions like this:
You should know that the hardest part of becoming a programmer is not learning the domain specific knowledge of a single programming language, but instead learning how to figure out the things that you don’t know. It’s the procedural knowledge about how to teach yourself foreign concepts that is the hardest part to master when becoming a full-stack web developer
This means even though there will overlap of a small percentage of the domain specific knowledge, this will make your coding skill progression a negligible amount easier in the grand scheme of things.
If you’re thinking about making the correct long-term decision that will produce the least amount of friction, and ultimately give you the highest chance of success, you should be asking a different question altogether. The right question to ask is:
What is the right tool for the job?
This means when you evaluate technologies you should evaluate different technologies based on merits of the technology – not the hype, “number of Google Searches” or a number of irrelevant details.
Let’s think about a practical problem you could potentially face outside the coding world. The analogy holds true in the coding world as well.
Problem: You Need to Build A Bookshelf
Potential Solution #1
First, we could use a wide variety of different tools. We could use a saw to cut the wood, nails to connect the pieces of wood, a hammer to drive the nails through the wood, wood-glue in some places that aren’t appropriate for nails. A drill could come in handy to, depending on the blueprints we’re using.
Potential Solution #2
Or, we could just use a hammer. Instead of cutting the wood with a saw, we could use the opposite side of the hammer to split the pieces of wood into smaller pieces. We could connect the pieces of wood with nails we drive into the wood with the hammer. We could avoid using blueprints, because those would just be another thing we’d have to learn about how to use.
Now, let’s return to our argument in this case:
If all I need to learn is how to use a single tool like a hammer won’t building bookshelves be 4 times as easy for me as someone who uses a hammer, a saw and glue, and blueprints? Doesn’t that mean all things considered, if I work as hard as someone who uses all the other tools combined I can produce 4 times the amount of bookshelves.
NodeJS, ExpressJS, AngularJS and MongoDB are all excellent tools at solving some problems, but in many cases there are different specific tools that will work better in a wider range of cases. You should always try to understand which problem a specific technology and available alternatives solve before you choose a tool to complete the job.
As someone starting out, determining the right tool for the job can be a difficult task. In order to understand the right tool for the job you’ll need to understand the problems at hand. To understand the problems that each tool solves, you’ll need to understand a variety of moving pieces and how web applications are built at a high level.
Without knowing anything about how web applications are built, we’re likely to believe anything that we read about the “latest programming language” hype that anyone tells us.
This post will teach you exactly how to evaluate different technologies when learning to become a web developer.
First, we’ll cover the difference between front-end and back-end, what a web application is, how databases work and what our server does.
Then, with the context we need to understand the problems that the specific technologies solve for us, we will discuss the benefits and drawbacks of different technologies.