2018 Full Stack Developer Road Map: Part 2 – Back End Development

 

In part one of our 2018 Full Stack Developer Road Map we described the steps needed to become professionally versed in front-end development. In part two we are going to discuss the road towards mastering back-end development. Although road is probably an ineffective description, as learning back-end development is much more akin to a giant web. Back-end development differs greatly when compared to front-end, because there are exponentially more routes you can take. In this article I’ll help you navigate those choices to make sure you end up heading in the direction that works best for your goals.

Step 1 – Choose Your Weapon (Language)

The first step on the road to mastering the back-end aspects of becoming a Full Stack Developer is to choose a programming language. It’s also the most crucial step, as it will likely determine the direction you end up taking in your career. The key to becoming a Full Stack Developer is choosing one language and learning it inside and out. Once you are able to command that language you can begin learning all of it’s associated tools, frameworks, and environments.

So which language do you choose? It’s not an easy question. To help you make this decision I’ll provide a list of some of the more popular languages, list some pros and cons, and then provide some available learning resources. You should keep in mind that this isn’t an exhaustive list of programming languages for Full Stack developers. Just some of the most popular ones, currently.

Python

https://www.python.org/

Python is one of the most popular languages available to Full Stack Developers. It’s easy to learn, powerful, and has a couple extremely popular and in demand frameworks written in it. Job demand for Python is typically high and the language is used in almost all corners of the software industry. On a personal note, Python is my favorite programming language and has provided me many opportunities during my career so far.

Pros

  • Average to high job demand.
  • Used in many fields.
  • Scripting language, easier to pick up for beginners.
  • Mature and stable ecosystem/community.

Cons

  • Nothing! Python is my baby! (just kidding).
  • Web Development may be leaning away from Python towards Javascript (NodeJS).

Learning Resources

Javascript (NodeJS)

https://developer.mozilla.org/bm/docs/Web/JavaScript

I’m sure you’ve probably already realized this, but Javascript is everywhere these days. Javascript was originally written to work exclusively in the browser but eventually became available as a server side language with the release of NodeJS. Ever since, it’s been on a steady climb to the top of the software industry.

Job demand for Javascript appears to be at an all time high and is an absolute must learn language if you want to become a Full Stack Developer. If you are following along from part one of this article, you should already have a solid understanding of Javascript, which makes transitioning to NodeJS fairly easy. This “one language to rule them all” approach has attracted the interest of many people on their road to becoming a Full Stack Developer, and is definitely worth considering as your primary back-end language.

Pros

  • Extremely high job demand.
  • Easy to pick up because it’s used on both front and back-end.
  • The Web Development industry has been leaning towards NodeJS lately.

Cons

  • If you aren’t a fan of Javascript, you now have to write it on both sides of your applications.
  • The asynchronous nature of Javascript can be tedious and confusing to some.
  • The NodeJS ecosystem is less mature than some others.

Learning Resources

Ruby

https://www.ruby-lang.org/en/

Ruby is a scripting language that was made popular in 2005 by it’s association with the MVC framework rails. It became a mainstream technology and one of the go to frameworks for startups up, until the rising popularity of Python and Javascript appeared to take over. Ever since, the popularity of Ruby has decreased significantly and job demand, at least for developers with less experience, has decreased.

Pros

  • Scripting language, easier to pick up for beginners.
  • Has a fairly mature framework in rails.
  • Tons off applications have been built using rails, so work will continue to be available.
  • Strong community.

Cons

  • Ruby isn’t often used outside of Ruby On Rails, which limits it’s career value.
  • Job demand for juniors appears to be decreasing.

Learning Resources

Java

https://go.java/

Java is the only strongly typed, compiled language that I’ll be touching on, but I think it’s an important language to consider because of it’s job availability and the maturity of it’s ecosystem. Java has been around for a long time and continues to be one of the most in-demand languages in the Software Development industry. For this reason, a lot of developers choose to learn Java as their first programming language and often never have to to look back. As an added bonus, Java can be used literally anywhere, which opens up all sorts of opportunities for programmers that are experienced with it.

Pros

  • High job demand in corporate settings.
  • Also used for Android mobile development.
  • Provides cross platform compatibility with the JVM.
  • Extremely mature ecosystem and community.

Cons

  • Java is a strongly typed language, which some people find more difficult to understand when learning.
  • Requires compile time, which can slow down development.

Learning Resources

Other Languages to Consider

Step 2 – Learn a Relational Database

Step two of the back-end road map to becoming a Full Stack Developer is learning a database technology. Relational databases have been around and will be around for a very long time. They are also used in the vast majority of web development projects, which makes them a crucial step in the learning process. Knowledge and understanding of SQL is an extremely in-demand skill and will most likely be on every single job posting you run into.

Luckily, SQL has become a standard across the available technologies and only differs slightly from one to the other. This means that, although it’s important to choose appropriate RDS technology to learn, switching from one to the other has a fairly easy learning curve.

Postgres

Postgres is a popular and powerful (object-)relational database system that is extremely popular in the open source community. It’s performant, extensible, and provides some great advanced data types. There’s recently been a strong push for Postgres knowledge in the job market, which puts postgres near the top of databases you should learn.

https://www.postgresql.org/

Learning Resources

MySQL

MySQL is the most popular of the open source relational database technologies. It has plenty of great features and is responsible for powering a good portion of the open source projects on the internet. It’s popularity makes it a strong candidate for best Relational Database to learn, as you’ll see a lot of job requirements include knowledge of MySQL.

https://www.mysql.com/

Learning Resources

MS SQL

MS SQL is Microsoft’s Relational Database solution, which means that it’s a proprietary technology. It’s a great solution but should really only be learned if you are planning on working in the corporate industry. MS SQL is used in the majority of more traditional businesses, but is an extremely valuable technology to learn if you are looking to break into that world.

https://www.microsoft.com/en-CA/sql-server/

Learning Resources

Step 3 – Learn Version Control (Git)

https://git-scm.com/

Another important step on the road to becoming a Full Stack Developer is learning how to use version control. Every job I’ve ever had as a Developer required me to have knowledge of version control. Although version control is used in both front and back-end development, I decided to include it in the back-end article. That’s not to say you shouldn’t be versioning your front-end code, I just felt like it tied in better with server side learning.

There are a handful of version control tools available for Full Stack Developers but Git has become the most popular by a large margin. Git is an extremely powerful VC tool that you can use to maintain your code. It also ties into Github, which is the most popular remote repository hosting site on the web. Github is a great way to build a public portfolio of your code and is often requested by the majority of companies hiring developers. With that said, here are some resources to learn git.

Learning Resources

Step 4 – Learn  Web Application Framework(s)

Frameworks are tools that Developers use to prevent us from having to recreate the wheel. Over time, the Software Development community refines the process of creating web applications and websites. This progress is often distilled into reusable application frameworks. Frameworks allow you to create and organize software into manageable and predictable components. This greatly decreases the time and complexity required to create and maintain Software, which in turn makes your job easier. If we had to write all our software from scratch, even small changes or features would take a long time to implement.

Choosing which frameworks to learn is a lot like choosing which language to learn. You want to choose a framework that is going to provide you with a positive return on your investment. With that said, the development industry moves fast and framework popularity is unreliable. If you’re worried about choosing the wrong framework, check out this article and remember that as long as you are confident with the language you chose, there will always be jobs available for you.

Listed below are some of the more popular frameworks at the time of writing this post. Keep in mind this list is not exhaustive.

Flask (Python)

http://flask.pocoo.org/

Flask is a micro framework, which means it’s fairly minimalist. Flask is great for building all sorts of applications but directly benefits Developers that are looking to pick and choose their own libraries. Flask doesn’t provide solutions for things like form management, ORM, or user management. The benefit to this is that you only include tools you need and can leave out the rest. The downside to this is that you often need to do more setup to get functionality that some other frameworks provide out of the box.

Learning Resources

Django (Python)

https://www.djangoproject.com/

Unlike Flask, Django is a considered a full fledged framework. This means that it includes an ORM, form management, user management and more. Django is one of the most popular frameworks out there which has made job demand fairly high. If you like a one stop shop and want to get hired, Django is a good framework to pick up.

Learning Resources

Express (Javascript)

https://expressjs.com/

Express is similar to Flask, as it’s considered a minimalist or micro framework. It doesn’t include an ORM or any other tools which, as mentioned, has it’s pros and cons. Express is one of the most popular frameworks available. The rise in popularity of NodeJS has created a huge demand for Javascript developers with knowledge of the Express framework. Definitely consider picking up Express if you want one of the best resume pieces a Full Stack Developer can have at the current time.

Learning Resources

Ruby On Rails (Ruby)

http://rubyonrails.org/

Ruby on Rails is the natural extension of the programming language Ruby. It’s a full fledged MVC framework and provides a lot of great ways to get up and running quickly. Although less applications are being built with rails these days, it continues to be used in the industry. Not to mention the fact that thousands of applications have been built using rails since 2005 and all of those applications still fuel the need for developers with a strong knowledge of the framework.

Learning Resources

Step 5 – Misc. Topics

Steps one to six composite the base for becoming a Full Stack Developer. However, there is a long list of skills and knowledge you’ll need to obtain to continue your journey. If you’ve gotten to this point, you are likely experienced enough to start picking and choosing the skills that will be most valuable to you. With that said, here is a list of miscellaneous topics at I have found valuable in my career.

End Of The Road

This brings us to the end of our road map to becoming a Full Stack Developer. If you’ve made it this far and learned everything we’ve discussed, you’re likely in the top percentile of developers out there. Becoming a Full Stack Developer is a long and arduous journey. Most Developers you talk to would probably tell you that the journey never really ends. There’s always something new to learn and the Software Development industry continues to grow and change every day. So take a deep breath and jump right back in.

Good luck!

 

Learning Python? Building Your Portfolio? Check out my free video series.

Connect With Me


6 Comments 2018 Full Stack Developer Road Map: Part 2 – Back End Development

  1. AJ

    Backend programming is a lot of work thanks to frameworks the base start is great. thanks for the links to all the courses I’ll bookmark this post.

    Reply
  2. Collins

    Solid writing! Just to nitpick a little bit, TypeScript, which is listed under other backend languages, is pretty much JavaScript. A superset version of it.

    Reply
    1. Colin

      I struggled with where to put it in the article. With the adoption of typescript by some major players like reddit, I expect to see more typescript in the wild and wanted to ensure I included it in the article somewhere.

      Thanks for your input!

      Reply
  3. Anthony Humphreys

    “The asynchronous nature of Javascript can be tedious to some. (callback hell)”

    This assumes a lack of knowledge of ES6 and modern JS – Promises and async/await are both great ways to avoid callback hell and offer a great way to manage async workflows.

    Reply
    1. Colin

      I’ve gone ahead and edited out the callback hell reference. My understanding of the phrase has turned out to be inaccurate.

      I completely agree with your comment and appreciate the input.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *