Rails Web

May 12, 2017
Crud screen

erroneousIf your goal is to become a Full Stack Developer you need to decide which programming language you’re going to learn. And if you’ve researched different web development technologies, you probably came across Ruby on Rails, NodeJS, AngularJS, JavaScript and perhaps even the “MEAN” stack (MongoDB, ExpressJS, AngularJS and NodeJS). The appeal of the MEAN stack to beginners is quite obvious since it implies that all you need to learn is JavaScript – a single programming language – and you’re ready to conquer the world of Full Stack Development.

In fact, I frequently get asked questions like this:

If all I need to learn is JavaScript, and I use the technologies: MongoDB, ExpressJS, AngularJS, and NodeJS, won’t web development be 4 times as easy for me? Doesn’t that mean all things considered, if I work as hard as someone who doesn’t use this stack I would be four times as good?

Although it sounds intuitive that becoming a full-stack JavaScript developer is an order of magnitude easier to learn, it’s incorrect! Here’s why.

Thinking that learning JavaScript is the fast track to becoming a full-stack developer is based in the incorrect assumption that learning programming language syntax is the hardest part of becoming a full-stack developer.

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:

n09XISSWhat 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.

This argument is obviously completely ludicrous. Figuring out how to cut wood with a hammer is probably possible, but why would you want to do it, given there are better tools out there? That’s why the argument of learning to be a full-stack JavaScript developer for the sole reason of it being easier to learn 1 thing than 4 things is completely wrong.

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.

Source: blog.thefirehoseproject.com
How to Program your own web server using Ruby on Rails
How to Program your own web server using Ruby on Rails
Rails assets pipeline - Web marries Ruby - Abhinandan Kothari
Rails assets pipeline - Web marries Ruby - Abhinandan Kothari
Share this Post