In this third article of my, How to Become a Web Developer and Get a Job guide, we’ll discuss what to study to become a web developer.
In the previous article on front-end vs back-end developers, I covered the existence of front-end and back-end technologies, which in turn have many options to choose from.
Too many options, in fact. How do we go about choosing what to study? And what about all the other stuff web developers tend to know, such as the command line, Git, and other developer tools?
When you are beginning in this field, not only you do not know a wide range of things, you are likely also unaware of what you don’t yet know.
As such, my goal for this section of the guide is to give you a list of things you should get acquainted with, along with some rationale for why you’d opt for those versus other possible choices.
This list of what to study to become a web developer is necessarily incomplete (I don’t even list learning to debug), but fear not! You will pick up other skills and tools organically in the process of studying these key topics.
In the next article in the guide, we’ll discuss how to go about learning those needed elements as well.
What to study for front-end development
As far as the web is concerned, front-end means three main technologies:
- HTML: The structure of your web pages;
- CSS: The styling of your web pages;
- JavaScript: To make your web pages more useful and interactive.
You need to become familiar with all three of these areas if you’re going to have much of a hope of getting job as a web developer.
If you don’t plan to become a front-end developer, you might get away with a superficial knowledge of CSS (and to some extent JavaScript). However, you should still have a fundamental understanding of both.
For CSS, you should become acquainted with both the Flexbox model and Grid layout. While these terms might not mean much to you yet, they will become familiar as soon as you take a course, read a book, or peruse documentation on CSS.
If you plan on becoming a front-end developer, then you need to be quite decent at CSS.
Learn HTML, CSS, and JavaScript regardless of what development role (e.g., front-end, back-end, or full-stack) you may ultimately end up taking on in your career.
In the beginning of your journey, simply focus on these three in their plain/vanilla form. For example, don’t try to go for fancy JavaScript frameworks like React and Vue right out of the gate.
The only frameworks you might want to explore at this stage are CSS ones like Bootstrap and TailwindCSS, and an old school JavaScript library (i.e., jQuery), to see what they have to offer over vanilla CSS and JavaScript.
What they don’t do is introduce a whole host of new and confusing concepts (like React does), which are best tackled once you have a decent mastery of the front-end trifecta (i.e., HTML, CSS, and JavaScript).
What to study for back-end development
After you’ve spent a couple of months grasping the fundamentals of HTML, CSS, and JavaScript, I’d recommend that you start exploring a back-end development language and framework.
You’ll quickly find that front-end alone limits the type of web applications you can build a fair bit. Want to permanently save and retrieve the data the user gave you? You need back-end tools.
Adding back-end development skills will allow you to create much more useful web applications, as well as to better understand the other side of the coin.
This is useful even if you decide to specialize in front-end development because you’ll most likely be working with back-end developers and interacting with their work from your front-end code.
So far there hasn’t been much controversy in this article. Just about everyone can agree that learning HTML, CSS, and JavaScript is a must. Some will fight me on my suggestion of putting off React or Vue until later (or think that looking into jQuery in 2020 is silly), but nothing as of yet has been truly controversial.
Sides are about to be drawn, however, as I proceed to tell you what to study for the back-end side of things. There are countless possible options out there. At least a dozen of which are squarely reasonable choices.
Some of the most worthwhile candidates include:
- Python and Django
- JavaScript and Express.js
- Ruby and Ruby on Rails
If you already know, or have a hunch, that you will focus on front-end development, I recommend using a JavaScript server-side framework like Express.js.
This will further solidify your JavaScript skills and will enable you to build complete web applications (and APIs that your front-end can then consume).
I’m personally not a huge fan of server-side JavaScript (or JavaScript in general), but if you know that you want to become a front-end developer you must become as skilled as you possibly can in JavaScript. It is, hands down, the number one skill that you’ll need to master in this field.
I would skip the JavaScript and Express.js stack if any of the followings apply to you:
- You didn’t particularly enjoy JavaScript while learning it for front-end;
- You are unsure whether front-end development is right for you;
- CSS and JavaScript offended your sensibilities and you are now seeking refuge in back-end development where you’ll be less likely to work with either of these technologies;
- You want to learn something new and a different programming language is likely to make your profile more appealing to employers.
If that’s you, I recommend that you consider Python and its associated framework, Django.
Python is one of the most popular programming languages in the world and it is quite pleasant to work with. Nowadays, it is almost a given that most well-rounded programmers will know Python.
It’s also the ideal language to have at the ready, should you develop an interest in data science and machine learning down the line.
The most popular frameworks to build web applications in for Python are Flask and Django. Ideally, you’ll want to learn both, but to begin with, I would suggest you focus on Django.
Why Django? It’s highly productive which means that you’ll be able to create fancier web applications with less work, which can be quite motivating when you are starting out. It also ships with a lot of sensible conventions that will in turn teach you how to structure and how to think about the architecture of your web application.
Flask is excellent too and likely the better tool if one is focusing on building small apps and APIs. That said, it is best used once you have a better understanding of how web applications work.
What about Ruby and Ruby on Rails? They are also an excellent choice and my favorite among the options listed here. However, Ruby is not quite as popular as Python, and it is mostly used within the scope of web development.
With Python you get a very similar programming language, plus access to all the data science goodies that are not readily available in Ruby.
Should you decide to pick up Ruby and Ruby on Rails down the line, it will be quite easy coming from a Python and Django background.
As you go through this process, regardless of the language and framework you choose, you must become well acquainted with the REST paradigm which will teach you about HTTP requests and responses, HTTP methods, and response codes.
What about databases?
You’ll also need to become acquainted with databases. For the most part, you’ll have to master the fundamentals of:
- MongoDB: A document-based database;
- PostgreSQL: An SQL/relational database.
Mongo is overused. However, it is common and easy enough to learn, so it can certainly be worth picking up. PostgreSQL, on the other hand, is fantastic and an obvious recommendation.
Once you have an SQL foundation in place, you can switch with relative ease to other relational databases, should a project or employer require it.
Miscellaneous things
The front-end and back-end stacks outlined above are enough to make you useful and capable of landing your first job in tech.
There are however several other skills which are taken for granted. If you are not too familiar with them, you’ll want to invest some time in learning these areas as well.
- Git and GitHub: to store, edit, keep track of changes, share, and release code.
- Basic Linux shell commands: think
ls
,cat
,echo
,source
,ps
,top
,grep
,find
,curl
, etc. - A code editor: I recommend Visual Studio Code unless you already have a different favorite. Learn how to use it efficiently, including leveraging popular plugins. For example, plugins that enable you to autocomplete your code, linters to ensure that it follows idiomatic style and formatting, and more.
- Regular Expressions: quite complex but also handy both within your code and when searching/transforming text via the command line (or within your code editor).
- Web security: you should be able to prevent common security issues like SQL injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), etc.
I suspect you’ll pick up many of these skills automatically as you study the rest of the stuff mentioned earlier on.
Just make sure to supplement as needed so that you are not entirely unfamiliar with any of the concepts listed here.
More advanced front-end and back-end skills
Once you have all of these skills above under your belt, you might be ready to tackle more advanced areas.
If you decide to become a front-end developer, I suggest looking into:
- Accessibility;
- User Experience (UX) principles;
- SEO (Search Engine Optimization);
- Building responsive web applications (web apps that scale to the user’s device resolution);
- Wireframing with Figma or Adobe XD;
- Styling with Sass;
- Webpack;
- React/Redux or Vue/Vuex.
If you decide to become a back-end or full-stack developer, I’d recommend exploring more in depth:
- Algorithms: learn more about traditional algorithms and data structures concepts often taught in computer science university courses, including the concept of Big O notation.
- SQL, going beyond the language by looking at more advanced features modern relational databases have to offer (triggers, stored procedures, etc).
- Flask (if you opted for Python) or Sinatra (if you opted for Ruby).
- GraphQL: go beyond REST and see what all the buzz is about.
- Deployment and scaling with containers using tools like Docker and Kubernetes.
Note that for all of the technologies I’ve mentioned here, this list is still not an exhaustive one by any means. This is by design, as it really doesn’t need to be all-encompassing. Most professional web developers have not mastered every entry on this list.
So, if you decide to become a front-end developer, mostly ignore the advanced back-end stuff, and focus on the front-end skills.
Conversely, if you decide to become a back-end developer, focus on the advanced back-end skills by studying, practicing, and building projects without worrying too much about the advanced front-end skills side of things.
You just need to become really good at the key components for the role you decide to take, while not being entirely unfamiliar with the rest of the entries on this list.
What’s next?
Now that you know what you should be studying, we need to address how to actually go about studying it.
Do you need a degree to become a web developer? Should you enroll in a development bootcamp? We’ll cover these questions and much more in the next article in this multi-part guide.
Stay tuned and don’t forget to subscribe, if you haven’t done so ready.
Get more stuff like this
Subscribe to my mailing list to receive similar updates about programming.
Thank you for subscribing. Please check your email to confirm your subscription.
Something went wrong.
I would avoid suggesting Flask. Its design, using global/threadlocal objects rather than arguments passing, is really poor. FastAPI is a much modern lightweight framework to implement self-documenting API and exposes to more modern Python (strong types, async)
Agreed on the technical merit, Daniele. However, I would still recommend it. Here is why. Someone starting out can certainly investigate FastAPI at some point but to make yourself marketable as a newcomer, you need to know what most companies already use (which is Flask and Django in the Python world).
Does PHP exist in your brilliant world ?
PHP is fine. Still plenty of jobs to be had, especially if you couple it with WordPress development skills.