Much has been said about the skills and capabilities of a full stack developer: On one hand, there are people who believe that a full stack developer is a “jack of all trades, master of none.” The range of skills that a full stack developer is expected to have means that those skills do not reach a level of proficiency required for one to be called an “expert.” On the other hand, there are those who argue that even if full stack developers are not experts at all layers, they are still considered skilled and competent since they can perform a wide array of tasks that many people can’t handle.
Full stack developers are a gem for startups, as they provide a range of services and skills that companies with limited resources need. And with the competition in the IT industry growing fiercer than America’s Next Top Model contestants, a developer will feel the pressure to go full stack.
Should You Aim to be a Full Stack Developer?
So how can you become part of the full stack developer workforce that is greatly in demand now? Are your skills up to par with others’? Just how “full” are the stacks of such developers?
A full stack developer refers to a person who understands and has at least the basic skills to develop a product from start to finish. Some people might include design skills as essential for a full stack developer (there’s also what we call a full stack designer, but that’s another story, albeit a similar one). After all, design and development skills are crucial to each other. Sometimes it’s difficult to perform a design task well if you’re not at least familiar with basic coding and development, and vice versa.
Technology has come a super long way, which is fantastic news for mere mortals but not quite a cause for celebration for full stack developers. If fifteen years ago a full stack developer only needed to create web pages in Adobe, convert it into HTML or CSS, and know basic PHP 4.0 scripts, today’s full stack developers find themselves in a much more complicated world.
What Do I Need to Learn, to be Considered a Full Stack Developer?
If you’re determined to pursue a career as a full stack developer, these are the things you need to learn. (Take note that because many people have different opinions about full stack developers, you might need more or less than these to snag your dream job.)
Front-End Development
This one’s a giveaway. Of course you need to know HTML/CSS and JavaScript. This is what every web development student learns on the first day. These basic front-end technologies are crucial to the success of a product, so make sure you are up to speed with your skills. While you’re at it, throw in some development frameworks and third party libraries such as AngularJS and React, or even jQuery for good measure.
Medium.com outlines the steps you need to get started as a front end developer. You can also try these front end development bootcamps recommended by Course Report, as well as sites like Codecademy, Treehouse, and Sitepoint.
Back-End Development
You can’t be considered full stack if you don’t also know basic back-end development. This is where you study programming languages such as JAVA, Python, Ruby, Node.js, and PHP. Some experts recommend focusing on one or two languages and sharpening your skills there, while maintaining a good working knowledge of the others. There is no single best programming language that you must learn, as people have different opinions and therefore prefer different languages.
Here are some of the websites that offer courses on back end development: Udacity, Hasura, Codecademy.
Databases
Databases are also essential, because you’ll need a place where you can store all the data and access it for future use. Some of the topics you need to learn to gain full stack development skills are relational databases (MySQL), NoSQL databases (MongoDB, Redis), graph databases (Neo4j), and other web storage.
Other websites you could browse to learn about databases for full stack development are RisingStack and Mozilla.
Basic Design
As mentioned, this is one skill that you don’t need to hone, but it would benefit you greatly if you know more about it than your fellow job applicant. Having a good grasp on what makes a design both meaningful and efficient can help you a lot as a full stack developer, not to mention boost your credentials.
UX Apprentice offers free resources for learning the basics of “User Experience”(UX) design. You can also check out Google’s guide on designing great user experiences online.
Application Architecture
Learn about the architecture of web programs so you are sufficiently armed with the appropriate skills and knowledge if you want to create a more complicated web application. You can do this by working on a big application, learning by practice. If you can join a team that’s already doing this, go ahead, as this will serve as a valuable learning experience. Some topics to keep in mind: Heroku, AWS, performance optimization for applications, and model-view-controller (MVC).
Resources online like courses from Udacity and Coursera, as well as online books can help you study software applications.
DevOps
Good DevOps leads to heightened efficiency, leading to a solid product. Familiarize yourself with this relatively new term, which improves collaboration between software developers and IT teams so the work progresses faster and smoother.
Here are some websites where you could learn DevOps: Cloud Academy, Udacity.
Git
Knowing Git and how it works will be useful for you in your coding and software development work. If you are already familiar with it, great. If not, take some time and read about Git and GitHub and how it can manage changes made to source code. This is important especially if you expect to be working a lot with software development teams.
One of the best ways to learn is to actually contribute to an open source project on GitHub. Codeburst gives you step-by-step instructions on making your first contribution, allowing you to get a feel for it and familiarize yourself with how GitHub works.
Basic Computer Science
This one’s a bit tricky, since many believe that learning computer science is not necessary to be a good full stack developer. Some of these topics include algorithms and data structures. While you can succeed as a full stack developer even without any CS background, some companies look for it from their engineers. So you might benefit knowing something about CS topics.
Treehouse’s Computer Basics course is a good start for developers who want to learn the basics of CS. Udemy and Udacity also have a couple of courses on introductory computer science. This blog post on learning computer science for developers can provide you with enough information to get you started on your CS education.
Being Full Stack
You might find it nearly impossible to be adept at all of these skills, and that’s fine. Most engineers identifying as full stack developers are likewise not geniuses at all layers. However, the point of learning all these is to have a greater understanding of the things you are actually good at. Having basic skills and knowledge of the full development stack can help you work faster and more efficiently, rather than relying on others to fill your knowledge gaps. In fact, a big advantage of full stack developers is their ability to see the big picture and work well with different teams.
In the end, it’s the amount of time and effort you put in that will make you a full stack developer who’ll be the envy of all other full stack developers.