Navigating the path to becoming a full stack developer involves traversing a diverse landscape of skills, but which ones are the most important? Which ones should you focus on first? Drawing from my experience as a full stack developer, I’d like to provide you with a bit of a roadmap. In this post I’ll lay out the skills that I find to be the most important for paving the way to working full time as a full stack developer.
1. Working with Arrays and Objects
(Or for our fellow Pythoners, Lists and Dictionaries)Full Stack development means working with data. You need to know how to do it. And when working with data, you will usually be working with arrays and objects. I don’t go a single day without working with arrays. Here are the things I do most often with them.
- Sorting
- Filtering
- Searching
- Extracting values
- Converting to comma separated strings
- Merging arrays
- Removing duplicates
- Iterating over them
- I’m sure I’m forgetting something…
Accomplishing these tasks can look very different depending on the language you are using. You should practice these things with all the languages you plan to use at work. You don’t need to memorize all of the array functions a language has to offer. Just make sure you’re familiar with them and know which one to use in order to complete a task. You can always look up the exact syntax of a function and, in time, you will memorize them.
I would also practice working with multi-dimensional arrays and arrays of objects. When it comes to objects, it’s important to know how to iterate through them and extract values. In Javascript, I find myself using the Object.values
, Object.keys
, and Object.entries
methods quite often as well. It’s also useful to know how to convert objects to JSON and vice-versa.
2. Truth Checks
Truth checks can be tricky, and if you get them wrong it can have some pretty big consequences! To become a full stack developer you’ll want to spend plenty of time playing around with AND
s and OR
s and figuring out how to determine if some code should run or not. It’s also helpful to think about if you want to check for false values or true values? It can make a difference!
One helpful trick is to name your truth check variables how you would actually ask the question. For example, let’s say you need to check if a coupon code is expired or invalid for some other reason. That code could look something like this.
$coupon_is_expired = checkIfCouponIsExpired($coupon_code);
$coupon_is_invalid = checkIfCouponIsInvalid($coupon_code);
if ($coupon_is_expired || $coupon_is_invalid) {
return 'no discount for you!';
}
Here I named my variables in a way that it makes it very clear what the truth check is looking for. When you’re working on more complicated projects, you’ll be thanking yourself later for using these naming conventions.
3. Working with Databases and Other Data Sources
Since data is a huge part of web development, you might expect that databases are too (And you’d be correct!). Personally, I write SQL queries more often than I thought I would, even though all of the languages I use have a framework that can “write them for me”. As a full stack developer you may be asked to provide exports for clients. You may need to write queries for debugging or testing. Or there may be changes to an application that requires a mass update of data. Either way, knowing how to write SQL statements is a useful tool to add to your toolbox.
It’s also important to know different types of databases and data storage and when to use them. You should be familiar with no-sql databases and object storage (like AWS S3). Understanding what data lakes, data warehouses, and vector databases are is also helpful. Even though these may pertain more to data scientists than full stack developers, understanding them certainly won’t hurt!
4. Working with Third Party Packages
Third party packages are helpful because they prevent you from needing to re-invent the wheel, so to say. Why code something yourself from scratch when it’s already been done before? In order to add these packages programming languages each have their own package managers. For example:
- Javascript has NPM
- Python has PIP
- PHP has Composer
As a full time developer you will likely use third party packages. Practice using them! Play around with different packages. You’ll find some are better than others. Some have great documentation while others have terrible documentation. Some are well supported while some are not. At times I’ve had to read the source code to figure out how to use the package. And that brings us to the next skill in my list.
5. Know How to Read Code
So you may have experience working with frameworks and third party packages, but have you ever read their code? When you learned how to read in general, I guarantee you spent plenty of time practicing by reading books. Reading code is no different! Spend as much time as you can reading code. You’d be surprised how much you can learn by doing this. It helped me a lot on my journey to become a full stack developer. Start off with frameworks that you use. It’ll help you understand how they work under the hood. It will also help when you need to work with or even take over code that you didn’t write. Being able to read and understand code makes bug hunting easier. And speaking of bugs…
6. Debugging and Error Handling
Handling errors effectively is very important. At the time of building a UI component or backend service, it’s common to drop a console log in a catch block and say “I’ll come back to this later.” And that’s ok, but make sure you come back to it! It’s important to handle errors in a way that both helps the user and your future self.
Handling Backend Errors
If you’re developing a server side service, be sure to try to account for anything that could go wrong. Return meaningful error messages and use correct status codes. For example, when a resource isn’t found you should return a 404. A 400 is appropriate when some data is missing or incorrect in the request. And if the server couldn’t handle the request, a 500 is the correct response. Make sure you know what the various status codes are and be sure to use them correctly. Here is a useful list of all the HTTP status codes.
Also be sure to set up logging for your service, as it will help you determine the source of bugs in the future. It can be helpful to both log the request being sent to the server, as well as any errors that are encountered. If you happen to be a Laravel developer, you can check out an article I wrote showing how to build custom loggers.
Handling Frontend Errors
On the front end, it’s important to handle each of the errors in a meaningful way for the user. Display error messages and, if it is user error, show them what they need to fix. You can also console.log
error messages that aren’t necessarily meant for the user to see but would be helpful for you for debugging.
Handling Errors in Running Scripts
When writing Python scripts, I will often log progress to the terminal, text files, or both. In doing so I can make sure the script is behaving as expected. I will also do a test run of a script with a subset of the data I am working with. It would be terrible to run a script for an hour just to discover it didn’t do what you expected! What you log will ultimately depend on the nature of the script you’re running. The general idea is that you want to be able to see any failures or unexpected results.
7. Working with Third Party APIs
Working with APIs might not be an every day task for all Full Stack Developers, but it’s helpful to know how to do it. There are many instances in the business world where you need to be able to connect what is happening on your website with third party services, and vice versa. Some examples of this could be updating user information in HubSpot, writing data to AWS S3, or receiving data from a webhook. Integrating your project with third party services is a useful skill, and it involves being familiar with APIs.
APIs offer a programmatic way to interact with a web service. They are all set up differently and the quality of documentation and API design can vary a lot. Play with as many APIs as you can so you get a feel for how they work. My favorite tool for learning new APIs is Postman, but using cURL or the requests library in Python works as well. It is also helpful to have an understanding of what the different HTTP request methods are.
There are tons of free APIs out there to play with. Most of the apps and websites you use on a daily basis offer APIs as well. This gives you an opportunity to play with things that matter to you. Some paid services also offer a free tier, which can be helpful for learning. And in the end, if you need to pay for a month or two in order to learn an API, I think it’s worth the cost if it’ll help you land the job.
And the most important skill of all…
Wait… there’s only supposed to be 7? Math is hard. ¯\_(ツ)_/¯These are the 7 skills that I find I need the most when I am working on development tasks and projects. But I think the most important (or the 8th skill…, if you will) is the ability to learn new things! No matter how much you learn before you get your first job, you will always need to learn on the job. There are just too many technologies, frameworks, services and APIs to learn. You can’t possibly know everything. But knowing how to learn new things quickly is immensely useful. And it’s something that I strive to become better at every day.
So if you want to get into development but feel overwhelmed with the amount of stuff you need to learn, I hope this gives you a starting point. Or maybe some ideas on how you can build up your skills. Regardless, you probably got into coding because it’s something you love doing. So no matter what road this journey happens to take you down make sure you have fun too!
Questions? Comments?
Find me on X
@twinwebdev #goFullStack