Posted onJuly 9, 2018

With the unstoppable growth of technology, the demand for multi-stack developers is also increasing. In fact, in this year’s Indeed report, full stack development is currently the third most in-demand job in Silicon Valley.

Many aspiring developers have asked me what benefits there are for learning multiple languages and frameworks instead of just one. I’ve thought about this question many times, and there are 4 reasons that I believe are important:


1. You gain a deeper appreciation for each language and framework and the pros/cons of each.

Most developers have one language/framework they are very comfortable with. Although sometimes, this is by choice, some developers were exposed to one language/framework because of what they’ve learned at school, what their first job required, or what was popular at the time when they got into coding. Developers are extremely busy, and they often don’t have the time to pick up a new language and a new framework, which means that they usually just focus on the one language or framework they are most comfortable with. That’s pretty risky these days.


By developing experience in 3 stacks, you are able to recognize why and when to use which language and framework. This makes you a better problem solver, which makes you a better developer.


For example, students at Coding Dojo learn that Rails has a fantastic ORM and TDD but is very rigid on how things should be implemented. Rails are great for creating APIs, and there are a lot of wonderful gems that can be utilized, but that can be a detriment to our students. Students realize that because Rails does so much behind the scenes, it can be harder to understand exactly how something actually works.


Similarly, students may learn that Node is extremely versatile and can create powerful socket connections, but will also learn that the frameworks available for Node are not as robust. When something is created in Node, students learn that it’s best to create lightweight web services and to rely on more established frameworks such as Rails, Django, etc. Students learn that Python is an excellent language for beginners and forces great indentation techniques but compared to Ruby, it’s not as rigid. They also learn that Python comes with great libraries for machine learning that are not so readily available in other languages.


Above all, a good developer understands the when and why to use the right language and framework. If you only know one, you run the risk of creating more work for yourself and your company.


2. You have increased job opportunities when you know multiple stacks and not just one.

Ruby on Rails used to be very hot, and many companies were quickly hiring anyone that knew how to code in Ruby/Rails. Those days are long gone and Ruby on Rails, on most areas, constitutes only about 10% of the job opportunities in the local markets.


Over the last 10 years, we have refined and built a curriculum for all major web programming languages (C#, Java, Python, PHP, Ruby, Node) and offer the top 3 most in-demand languages for the local market. We’ve made this choice because we see more job opportunities for developers who know more, not less.


3. Technologies are shifting much more rapidly, and most companies require developers to know more than one programming language.

Ten years ago some companies only used 1 stack for all of their applications. That’s just no longer true for most companies. Today, there are more APIs available, smaller dev teams working in agile, and newer languages being introduced each year. Not only is your chance of working with more than language or framework very high, but you will also probably need to learn more than one language or framework year after year.


At Coding Dojo, we don’t just teach you to code, we teach you how to learn. By already having learned three different programming languages/frameworks by graduation, our students are much more flexible and comfortable with picking up new tools than someone who’s only familiar with one programming language.


4. Fundamentally, we believe that knowing multiple programming languages and frameworks make you a better developer.

I remember looking back in my career where I first started with Quick Basic, then C, then C++, and then a bit of Assembly, Java, Python, PHP, Ruby, and then C#, Swift, etc. Each time I picked up a new language, I learned to appreciate the previous languages I’d learned as well as the new languages that I’d picked up.


We all know that the fundamentals of computer programming do not change and they are all built with common building blocks (if/else statements, variables or arrays, for loops, functions, and OOP), but the way different languages and frameworks approach problems is unique because optimized for a different purpose.


For example, Python was heavily used by engineers and scientists and therefore has a lot of great functions and libraries for analyzing large sets of data.  It was natural for Python to be one of the languages of choice for data scientists. Java and C# are lower level programming languages and force a disciplined approach that other programming languages are more generous about. For example in Java and C#, we have to be strict on data types and what information we’re going to store in a variable. Other programming languages tend to be more forgiving. Ruby’s approach, making everything about OOP is astonishing and demonstrates how elegant your code can be with some strict discipline. C# is a beautiful modern language that supports multiple platforms (similar to Java). Node, on the other hand, unlike C# and Java, was purely built for handling web server requests and is strong in how it can be integrated with the socket. Even now, although some programming languages are catching up, Node is still the dominant language for creating real-time socket connection (where Node outperforms other Ajax apps by a factor of thousands).


Wrapping Up


In the end, learning 3 stacks is similar to having multiple tool sets in your toolbox. If the only thing you knew how to use was a hammer, everything might look like a “nail” to you. Knowing how to use different programming languages and frameworks will only help you develop creative solutions to your problems that may not have been possible if you just knew one programming language.

Tomasz David
Tomasz David

Leave a Comment