DEV Community

Cover image for The best way to learn backend web development
Sparkout Tech
Sparkout Tech

Posted on

The best way to learn backend web development

¿What is back-end development?

Front-end development implies what a user sees on the screen when they open a specific URL of your property. Even in a completely static environment (only with HTML / CSS), when someone opens a website, some server on the planet needs to respond to you with those HTML and CSS files.

That server is just a computer, like the one you use to surf the Internet. But it has been adjusted for performance and has no unnecessary components like an attached mouse or keyboard. And he meets tons of other computers, probably in a data warehouse.

Programming those computers in some special way is called back-end development in some web app development company.

You may think that back-end development is called that because it runs behind the user's back. A visitor to your website never fully "accesses" the back-end. They simply communicate with your server, either directly through ports for very limited access (such as HTML / CSS file transfer) or even that, buried deep under CDN or firewalls (like Cloudflare).

Now that we have a basic understanding of what back-end development means, let's take a look at some questions real .

*Is front-end programming knowledge required for the back-end?
*

TLDR; No. (Too Long; Didn't read | Too long; I didn't read it)

Back-end development, as mentioned above, involves programming a computer located probably on the other side of the planet responsible for responding to what its users say from their own computers.

If you are a full-time back-end developer, you really don't need to worry about what happens inside those HTML, CSS and JavaScript files that you send to the user's browser. Instead, you should focus more on server performance and code.

What does back-end development imply?

Well, by following the books, you can say that a person who encodes an application that can respond to HTTP requests is a back-end developer.

But actually, sometimes back-end developers can do much more than just write server scripts. They have the knowledge to configure reverse proxy servers (NGiNX / HAProxy), enable compression and other ways to speed up the site, and configure a production container environment (docker).

To qualify as a back-end developer, I'd say the minimum skills you need are:

Good knowledge of a programming language in which you can write HTTP servers. Examples: C #, Java, Node, PHP, Python, etc. (There are many!)
Manage to host using cPanel (traditional) or using bash terminal (cloud / traditional hosting)
Work with version control systems ( VCS ) as git to manage and implement compilations
Just like all games come with minimum and recommended specifications, for back-end developers, my recommended specifications would be ( including minimum skills ):

NGiNX for static file assets and server management
Database management skills ( SQL / NoSQL )
Backend security ( Write safe and robust code, run applications in docker containers with limited privileges, protection against DoS attacks )
Self-escalation / load balancing
Okay, too much talk about what happens in back-end development. But how do you become one?

Start with the minimum requirements

As I said, for the back-end, like games, we have a set of minimum requirements and recommended requirements. The minimum requirements consist of 3 things:

Learn a backend programming language

When people learn for themselves, they usually don't have a team or anyone who can develop the front-end. They are totally alone. Therefore, you will often have to create web pages and servers yourself, at least at first.

Although there are many options for back-end programming languages, and I can't think of any popular system language that doesn't support ready-to-use HTTP servers. The advantage of choosing Node is that your JavaScript front-end skills are transferable to the back-end.

However, you can choose from a variety of languages like Java, C + +, C #, Python, PHP, etc.

How do I choose one? You might ask. The answer is the same as in the front-end development article: you have to test everything initially and see which one fits best with you.

Node is easy as you may have already done JS programming for the front-end. But if you are a developer of Python or Java, you may find them easy to learn. It completely depends on your profession and taste.

More information on accommodation management

Gone are the days when you would have to buy servers manually and configure them in your house, connect to your ISP, do it all yourself. This is the era of cloud computing. Now, when hosting your website, you mainly have 2 options:

Opt for managed hosting servers like HostGator or GoDaddy.
Opt for cloud hosting providers like GCP, AWS or DigitalOcean.

What is the difference between the two? In both cases, the servers are owned and operated by the respective Web application development company. But the main difference is that the managed accommodation is more friendly to the GUI, it has a wide set of tools to see the file system, monitor usage, manage emails from your official domain, upload / download files from your server, etc. It is basically a configuration for people with less technical skills.

For that reason, I don't recommend managed sites like HostGator or GoDaddy for experienced developers. Still, they could be a good platform to make mistakes and learn, mainly because they generally have prepaid plans for it. You'll also have a good user interface to manage things, allowing you not to accidentally trigger your bills.

But when you start to gain speed, I recommend that you switch to a cloud provider. This removes all the good cPanel tools you used to manage files and folders on servers. But at the same time, it will challenge you to level up your skills a lot.

Today, many cloud providers also offer a decent free trial, so you can test their platform before you fully enter. I host my developer website at DigitalOcean and find that it has a sweet balance of complexity and site features.

Anyway, you can choose any cloud provider. So it is important to learn how to manage the server using only the command line by ssh entering it.

More information about version control systems
There are other solutions besides Git like VCS (Version Control System). But Git is the most used and the simplest to understand.

As an individual, you may not appreciate it immediately. But you will understand why it is so important the moment you start teamwork in various functions simultaneously in your project.

Git allows you to manage your workflow using confirmations and branches. Confirmations are like control points in your base code, which you can always go back to if you make a mistake.

Branches ( branches ) are as alternative realities from your project, where something completely different could happen. These alternative realities can be created from any moment and can be merged again at any time.

If those realities can be merged with compatibility, then that's fine. But if there is a conflict ( as if you were alive in one reality and dead in another ), then you have to make a choice manually. Other changes can be automatically merged.

Git is super interesting, and once you master it, you'll want to use it on every project. You can maintain a history of your work efficiently ( git compresses and stores only the difference between confirmations)

It also allows you to create online git repositories on sites like GitHub, which acts as a central source of information for your website. Sites like GitHub can be configured with special webhooks that can really update your website every time you add a new control point (a new confirmation) without the need to go manually to the server and update it yourself.

Go to recommended skills
I am a great believer in learning by doing. And the best way to do something arises from need or interest. Once you consider yourself good enough with the minimum requirements, it's time to acquire the recommended skills. This includes all the tools like Docker and NGiNX mentioned above.

DevOps It is also something that fits very well with back-end developers. You can try and explore TraviscI or CircleCI for automated build implementations. Continuous integration and implementation (CI / CD) is a topic that could be occupied by another full blog post, so I won't go into that.

Then come the databases, which I placed on recommended skills. But you are going to need databases for practically any application that involves some kind of persistence of user-generated data.

Databases are usually easy to get started, but more difficult to maintain and adjust properly. The best way to start working on a back-end technology stack is to have everything together on one server: your application code, reverse proxy servers, the database, etc. Then, as you become more competent in everything, you can decouple it from existing business logic.

By doing this, you are enabling architecture that can be scaled a lot. An intensive database operation application could have a database optimized solution. And a busy site must have a good CDN mechanism to download static assets, etc.

Conclusion

There is a lot to learn, but everything can be accomplished if you don't give up. Let me know what you think about this post through my accounts from Twitter e Instagram . ¡It will mean a lot to me if we connect there!
Let's connect with us: web application development company

Top comments (0)