In this guide, I am going to explore a possible path to take to become a well-seasoned Python web developer.
Python is one of the most widely used programming languages in web development worldwide.
Its popularity has caused a surge in the number of people wanting to learn it whether as complete dummies or as experienced developers in other languages.
In addition to being a powerful programming language, python is also flexible and easy to learn, thus making it a great choice as a first programming language.
Letâs start with the basics.
This tutorial is solely focused on web development with Python and therefore assumes that you have a reasonable grasp of CSS and HTML. However, it's not required to follow this tutorial.
The first place to start is to learn the programming language itself.
This, of course, seems obvious, but the most challenging thing, especially for beginners, is knowing the path to take. Like do you read a book? Do you watch YouTube videos? Or do you buy an online course?
This may be an easy question to answer if you are an experienced developer, but for newbies, it can be overwhelming.
That is why I created this tutorial to guide you.
You don't need to learn the entire programming language in order to use it to use to build web applications. However, it will serve you best to learn as much as you can.
But for a start, there are a few fundamental things that you need to grasp to make your journey faster and more straight forward.
Here is a list of things you need to learn in order to comfortably build applications using the Python language.
Of course, there is more. But this should be good enough to get you started.
The Python programming language is huge and there are thousands of learning resources online, both free and premium.
For instance, you could choose to learn Python's noteworthy features using the tutorial on Python's own website. This tutorial will give you a basic understanding of the general flow and style of the language, its most common features, and how to write your own modules and programs. After that, you can proceed to dig dipper. In fact, this is the method I would recommend to learn the Python programming language.
It will take you a few weeks to a month or two to finish the tutorial, then you will be ready to experiment with a web framework.
There are many web frameworks that can allow you to develop web applications.
If you are having doubts about whether you should use a framework or not, all I can say is put those doubts aside. A framework is just a tool that helps you perform tasks like interpreting requests, handling cookies and sessions, producing responses, storing data persistently, and so on. Without a framework, you would have to write all this functionality on your own which is not only tedious but also unproductive. You want to use that time to focus on building better functionality for your applications. Unless you are trying to build your own framework from scratch.
Like we saw earlier on, there are many web application frameworks for the Python programming language. The full list can be found on the python.org wiki.
Though a good number of them could be used to build a website, it would be better to use one that is the most convenient.
There are several frameworks that can be considered full-stack, that is, not only are they comprised of server-side technology, they also possess modules for creating the front-end of your website.
One of the most popular among these is the Django web framework.
Building with the Django framework is faster because it automatically takes care of tedious work like creating database tables.
It also automatically generates an administrator dashboard to help with common operations like creating and managing database entries, so that you can focus on building the other important parts of your application.
For instance, if you are building a blog, you will need to build a back-office (administrator dashboard) where you can create new posts and manage existing ones. With Django, this is considered tedious work that does not require much creativity. It is for this reason that Django ships with modules that automatically generate the administrator dashboard on your behalf.
As is the case with the Python programming language, the Django web framework also has a large online community and tones of learning resources.
However, there is also a tutorial for beginners on the Django website itself. The tutorial is a great place to start to get direction on how to approach development with Django.
After going through the tutorial to the end, you can try to build something on your own. It could be your own portfolio website, a blog, or something else.
In the course of your programming career, you will reach a point where you need to write large applications that will have multiple interactions between many different components.
One of the best ways to ensure you do not break your application whenever you make changes to its components is writing tests. Tests also play an instrumental role in helping you to identify and correct any problems.
Fortunately for us, the Django documentation covers testing extensively.
In the documentation, you get to learn important concepts in testing including how to write and run tests, available testing tools, and other advanced testing topics.
Embracing testing early on in your learning will go a long way to help you to write better software in the future.
Writing software is one thing, writing good software that is flexible and long-lasting is another.
After you have learned how to write basic applications, you can proceed to learn programming styles and principles that will guide you on how to build awesome software.
These are just a few of the many styles and principles to help you write better software.
To be honest, this is a huge area that is covered widely by many different people. An ideal place to start is to buy a book. However, there is one resource I would recommend reading if you want to get a high-level overview of this wide topic. That is this guide on Free Code Camp on how to Learn Software Design and Architecture.
After learning how to write your code well, you'll soon realize that this is just part of the larger process.
For instance, once you write your web applications, you will need to deploy them to an online hosting platform or share the code with clients or teammates.
Fortunately, there are numerous tools and platforms that can help you achieve many of your goals.
As a web developer, it is important that you be able to deploy applications to cloud hosting platforms. There are hundreds of different platforms where you can deploy your applications. However, it is even more important to learn how to do the actual deployment.
The Django documentation has an awesome guide on how to deploy your Django application to production using various different technologies.
Some of the most popular cloud hosting platforms include;
You are however free to use whichever hosting provider you prefer.
If you are one of those people who compresses your application into a zip archive and extract on the server, well, you want to stop that. There are better tools to help you manage your source code and keep track of changes to your code.
One of the best and widely used tools is Git. Git is a version control system that is used to turn your code into a repository that contains a complete historical record of changes to your code.
Additionally, there are several repository hosting services where you can store your code so that it can be accessed across multiple devices. This is important as it aids collaboration. These platforms are also widely used in the deployment processes of applications.
Two of the most popular repository hosting providers are;
In Software development being able to deploy and update applications quickly is a necessity.
The main concept around automation is CICD. This refers to Continuous Integration and Continuous Delivery. CICD is a set of software development practices that enable Software Engineers to deliver code changes more frequently and reliably by introducing automation into different stages of application development.
CICD is achieved through the use of automation tools such as Jenkins, Travis CI, and Circle CI. If you'd like to learn more about CICD, you might want to have a look at the following guide on Atlassian.
Containerization is the virtualization of an operating system to allow multiple applications to run in different user spaces on the same kernel. It involves the packaging of an application and all its dependencies into a standardized unit called a container. The container only has limited access to the underlying resources. This allows the application to be run on different infrastructure without the need for refactoring for each environment. The most widely used containerization technology is Docker.
Orchestration, on the other hand, is the automated configuration, management, and coordination of containers. To ensure efficiency and better performance, large applications may be deployed on several hundred to thousand servers across multiple locations. Managing all these servers manually may prove to be impossible. That is where orchestration comes in. Orchestration tools may be used to automate the management of such a large volume of servers. The most popular tool for container orchestration is Kubernetes.
Hopefully, this helped to set you on the path to becoming a better Software Engineer.