[ 8 minute read ]
Disclaimer: We use Node.js at Elium because we believe it is the best technology out there - and gaining traction in the industry worldwide. However, we have experience with other frameworks and recognize their value as well so we've included the pros and cons of each technology. That way, we ensure the article stays as impartial as possible.
This is the final article of the Learn to Code series (the one you've all been waiting for :P) In it, we will explore the different paths you can follow as part of your web development career.
Path 1 - Iron Man
Ok, ok but what's the catch I can already hear you saying. And I want to to be honest with you, so here it is: being relatively new, the Node.js framework lacks maturity compared to other frameworks - like Laravel or even Rails.
Does it really matter? Yes it does.
Should you run away from Node.js then? No, of course not!
Why not? Well, thanks to its very fast growth (see here) and huge community, Node.js is becoming a major player.
What this means is essentially this: when Iron Man wants a new gadget, he buys it; when Node.js needs a new tool, the size of the community means that that tool probably already exists and if it doesn’t, the community makes sure it is developed very quickly.
- Netflix - Building With Node.js At Netflix
- New York Times - Building With Node.js At The New York Times
- PayPal - Building With Node.js at PayPal
- Walmart - On Building With Node.js At Walmart
- LinkedIn - Building With Node.js At LinkedIn
What exactly is involved in following this path?
Let’s find out by filling up our pyramid (if you missed the article about the web development pyramid, check it out here) so you can understand what and why you need to learn certain things.
Wow that’s a lot of new stuff! Well yes and no.
Let’s use a typical engineering approach to understand this diagram: break a big thing into smaller bits until each bit on its own is understandable. So let’s go through the structure section by section and analyze each one.
- A simple text-editor, like Sublime or Atom
- Using your terminal, or console to execute commands
- Github account - to save, organize and share all the code you produce, but also view the code written by millions of other users. Basically, your community.
With these three things, you’ll be ready to start your coding adventure.
Next comes Front-end. For this you need three things:
- HTML - a coding language* to create content on your website, web apps, or other apps
- CSS - another coding language* which allows you to stylize your products, make something blue, round, stick to the side, etc.
While there are millions of libraries covering the needed instructions for all industries in the world, for our purposes, we’ll look at the major ones for web development:
- Bootstrap - a library with instructions about forms, buttons, navigation bars, styling templates and many more things pertaining to front-end development
Now comes Backend languages.
Next are frameworks.
- React.js - Could also be termed a library because React gives you so much freedom you still actually decide on virtually everything. It makes your front-end, or User Interface extremely fast and reactive (hence, the name). It’s what powers facebook and Instagram’s User Interface.
Next up are databases.
And now, packaging systems.
And finally deployment.
- Heroku - A deployment service that supports many languages & frameworks, including Node.js.
- GoDaddy - A huge web hosting company that allows you to deploy your web app. It also offers domain name registration services and sells software for e-business purposes.
There you have it!
My structure with concrete examples from the Node.js-based framework. With this structure, you can easily navigate through the plethora of information available out there while sticking to the essentials. That way, you’ll always have an overview of what you’re doing and why you’re doing it. Let’s now explore the remaining three paths.
Path 2 - The Quick Fix
This is the Ruby, Ruby-on-Rails framework. It’ll lure you to its house and then keep you comfortable. How? The structure. It allows you to quickly build applications if you follow the formula. Sure, sometimes it doesn't go well with other languages and is often not the fastest but it’s a pretty comfortable environment for creating prototypes and that’s enough to make some beginners happy.
The language is easier to pick up if you want to learn how to build basic products quickly. Whether you're a beginner or a developer, Ruby can get your product online pretty fast. This is because Ruby on Rails hides many processes from you, meaning you cannot optimize them, meaning you may never really understand them.
It's completely fine for many applications you may have in mind though, but if your product gets really big, or you want to customize certain details of your product, Rails just isn't flexible enough for that.
Still, it’s a promising path to follow for beginners (or developers) who really just want to get their project up and running as fast as possible. Let’s use the structure again to get a better understanding of what exactly is at play here.
What was added to the structure was Ruby, Ruby-on-Rails and Ruby Gems. The Ruby-on-Rails framework is what most bootcamps focus on because it is easier to pick up within the typical length of a bootcamp, ~ 10 weeks. It helps the students from those bootcamps get a working product online quickly, sacrificing some speed and performance in the process. So it’s well suited for start-ups who want to get started quickly or for any company who wants a quick proof of concept for their product.
Don't be mistaken by Ruby's seemingly too-easy-to-be-good appearance, you can become a good developer by starting to learn Ruby-on-Rails as it is really good for getting your product up-and-running quickly. It's just that many processes are hidden from you so you might not become that good at optmizing the efficiency of your code.
Path 3 - The Hipster too-cool-for-mainstream
Python & Django (or flask) are relatively unconventional in the web development industry. They, like all 'independent thinkers', want to make a name for themselves. But they don’t know how to sell themselves so they go around town in a Smart car yelling from a megaphone at fear-struck villagers who think the terrible thunderstorm that was predicted in the ancient books is finally coming. Sometimes, the villagers think it’s the cry of females in heat and end up jumping in the Smart car. And then they realize that's not true. But they’re pretty happy with the rest, so they often convert to the hipster lifestyle and stay.
Indeed, Python and Django offer good job prospects and lots of learning tools to get you started. They’re slowly but surely growing to become an important player in the industry. But what's so special with this path?
Let me explain. Python is not better or worse, it's just different. The way that it processes data makes it optimal for algorithmic processing but not for data processing. Example: while Node.js is much faster at things like banking transactions or social networks, Django would be far superior for building image recognition software or performing complex statistical analysis.
Python is present in places like Youtube, Google, Quora and Survey Monkey. Notice that the core business of these companies is dealing with huge amounts of data. So they need fast and efficient algorithms to parse through their data. Python allows them to do that because it is good with algorithmic processing, as stated above. If you think about it, these companies do a lot of statistical analyses and machine learning (the strong points of Python) to improve their product - how do you think Youtube shows you your 'recommended videos'?
The last important detail about Python is that it's scalable. Since Python is very intent on making code readable and fun to interact with, it's not only really attractive to beginners, it also makes it much easier to build on top of existing code because it is easy to read and understand it.
Let’s use the structure again to visualize the tools that are involved here:
Again, we’ve only added things to our structure compared to the structure we had for the Node.js-based framework. Specifically, what was added was Python, Django and Pypi (or pip).
This framework isn’t that popular in the web development industry but it’s gained quite some traction in the education world. That’s because there’s tons of documentation and a great community attached to these technologies. Also, since it focuses so much on being readable, it’s great for students who know nothing and need to understand the material. But it's also very good for statistical analyses, image recognition or machine learning as I mentioned above.
Path 4 - The Survivor Challenge
This is the Java-based framework. This path will make you wish you’d followed your mother’s advice and got that job at ‘We Love Pizza’ with the fat, hairy, and inexplicably overly affectionate Italian boss. Or your father’s advice, and became a soldier because military bootcamp can’t possibly be that hard.
It’s a hard path but you’ll hear about it because it’s used in many of the big companies with the high-paying jobs. So it’ll send you those gentle reminders that the big projects in this world need it and give you that smug face to let you know it knows that you know. So, if you ever join a big corporation or get involved in the corporate world, it’ll show its smug face every now and again, ready to suck you into the ‘complexity is our thing’ funnel, signed "Lots of love - Java".
Here’s a view of the structure in this case:
The bottom line is that there is no easy way to get something up and running with Java. That being said, Java is involved in tons of backend processes that run apps & web apps, so if you think it isn’t relevant today, you’ve got it all wrong. Indeed, Java is used in apps for the financial services industry (Goldman Sachs, CitiGroup, Barclays), web applications (OpenOffice, Eclipse), and most Android applications are written in Java!
So there are tons of uses of Java but working with Java will require a substantial effort on your part as becoming a good Java programmer will take years of practice. If you’re a die-hard programmer and you only swear by fast and efficient code, Java will live up to those expectations. Just know that this path is almost nonexistent in web development and is almost exclusively used for backend procedures. My recommendation would be to follow an easier path and then if you’re up for it, learn Java.
- No matter which path you choose, building something on the web requires you to learn about many different tools
- If you want to be guided and have a lot of structure when building stuff even if it isn't widely used in the job market (and sacrifice efficiency along the way) go with Ruby/Ruby on Rails
- If you want to do complex statistical analyses and/or machine learning on your web projects while having clear and readable syntax, go with Python/Django
- If you want to make a robust backend and want to be employable by big legacy corporations, go with Java even if the learning curve is very steep.
- Making a real plan, using for instance the why technique described in this article (or here) will save you loads of time and enable you to learn much faster
For our more avid readers, I've included additional resources you might want to check out:
For the more tech-savvy:
What are the pros and cons of Node.js/Express vs Ruby-on-Rails?
For those just starting out and who need more information:
BONUS: In this bonus article, we will look at an entrepreneur's toolkit in web development. You've got your own idea and you want to launch a startup or business but you don't have time to become a fullstack web developer? This article will tell you only what you need to know, skipping all the unnecessary details.
Subscribe to be the first to get the entrepreneur's web development toolkit!