Becoming a web developer can be a quick and painless process if you know what skills to focus on. When I started from scratch I was able to pickup all the basic skills in 6 months and land a job 2 weeks later.
But when I did it, I didn’t have some of the key skills that make good developers good.
In this post you will learn what skills you should focus on and showcase on your resume and portfolio.
What companies are looking for
Companies want you to be capable of building production websites within a team. But, what does “production website” means?
You may be able to land jobs by knowing just the basic stuff (kind of like I did), but you stand a much better chance against the other candidates for the job if you know how to make production websites
In this section I’ll go over what defines a production website or app, and then I’ll break it down into technologies and skills you can acquire to demonstrate your value in the job market.
Production Ready Websites Are
- Maintainable and testable
Well, that’s a short list… And no, I did not forget anything. As I said I spent 6 months learning all the skills I needed and was ready to take on a job at a startup in Los Angeles.
Before we dive deeper into those, the basic technologies you will need to learn are well known, here they are:
These are the technologies for the standard web developer, if you want to become a specific kind of developer which can make getting a job easier but limits the available jobs you have to choose from, then focus on your tech stack and add the skill-sets to make websites production ready.
If you are a beginner looking for the basic knowledge, I made this short post to describe them. You can pick these up in 3 months and then spend some time to learn the skills I’ll be describing in this post.
So what can make a website…
Maintainable and testable
Maintaining a website requires that the website doesn’t break in the future. Big companies focus on mainly two things:
- Architecture (more on this on the “scalable” section)
But testing is the most important, automated tests run whenever you deploy your code and they check to see if any feature may have stopped working before you deploy.
There are different types of tests:
- Unit testing (tests components)
- Integration tests (tests combined components)
- End to end testing (tests the UI)
There are many technologies you can choose from, but I’d recommend the following:
about Cypress for end to end tests here.
By adding these automated tests, your team will be able to catch a lot more bugs, and by following TDD (test driven development), you will be writing better code and develop the habit of thinking and planing before coding, TDD will make you a better developer.
Another very important aspect of maintainable code is version control. So sharpen your Git skills.
The architecture of the website or app is also very important to make it maintainable, its a lot easier to apply changes when you know they are not going to break everything.
Architecture is also important for the scalability of the app or site.
For regular websites the architecture is simple, you will have some pages and components, you might have a module for making AJAX requests. The simpler sites just require everything to be modular and then imported into the pages.
But the more complex the site or app, you need to put in a lot more thought on the architecture.
When you have thousands of units interacting with a server and sometimes each other, you will realize that just having everything being modular just isn’t enough to keep your code readable and easy to traverse.
You and your team members need to understand how the code was structured, that’s why it’s important to have a convention being followed by everyone.
If you know you are going to be building complex websites and apps, I highly recommend you learn about clean architecture.
If you are brand new to web development, you can get away with:
- Making your code modular, import the modules where you need them.
- Each module has a SINGLE responsibility, if you need a module to do many things, break that module down and then have a function that puts them all together step-by-step.
- Modules don’t cause side effects (don’t mutate state, each module has a defined input and output, if you need to change state, create a module that does that).
By practicing the above you can leave the learning of the architecture to happen during your job, that’s what I did and I believe it was a much better learning experience than trying to tackle it in a demo project where I was the only developer.
Now that you have the overview of testing, maintainability and scalability, we are only left with what makes the code valuable. And the good news is, you don’t really have to worry about it, that’s the job of business and design departments to come up with a solution to a problem.
But you can benefit by understanding how to perform A/B tests, to help businesses make decisions on what proves to be most valuable to the user.
There are many different frameworks for A/B testing and depending on which front-end framework you decide to use you may have different options. I’m not providing any recommendations for A/B testing frameworks as I haven’t used many of them yet.
I’m sure a google search for “react a b testing” or “react split testing” will give you plenty of information, I may do a more in depth article on A/B testing later on.
Being a skilled developer is not just about knowing the technology you are going to be use, but how to use it effectively within a team.
If you can demonstrate that you understand TDD and basic architectural concepts, you will be far ahead of brand new developer that’s also looking for a job.
So here is a to-do list for you to hone your skills and be job ready:
- Choose a new portfolio project.
- Plan your units of code and how they will come together
- Write tests first using Jest and then write the units, continuously testing them as you go.
- Use CircleCI to test the integrations.
- Use Cypress to test the application end to end.
- Learn git to help with integration .