Can I become a full-stack Python developer?
Tags: webdev, python, beginners, codenewbie
Published: 2022-03-18 00:00:58

Want to be a full-stack engineer who uses Python? Great! There are many benefits to using the Python programming language for web development. Python is most popularly used for back-end development. While Python can also be used for front-end development, languages such as HTML are a more common choice. Whether you stick purely to Python or use other programming languages, we'll cover all you need to know in this article.

Today we’ll discuss why **Python is a great tool to take with you on your journey to become a full-stack developer**, and what you’ll need to learn along the way.

**We’ll cover**:
* [What does a full-stack developer do?](#full-stack)
* [Full-stack development with Python](#full-stack-python)
* [What you’ll need to learn to become a Python full-stack developer](#what-to-learn)
* [Tips for becoming a Python full-stack developer](#tips)
* [Wrapping up and next steps](#next-steps)


<br>
<a name="full-stack"></a>

## What does a full-stack developer do? 
Being a full-stack engineer means you’re able to work both ends of web app development: The front-end *and* the back-end. Front-end development concerns how the application appears to the user. In other words, **front-end development involves programming the browser**, or the client-end. On the other hand, back-end development concerns the logic that governs the application. **Back-end development involves programming the remote server** and communicating with one or more database(s).

The concepts of back-end and front-end are illustrated in the following figure:

![front end vs back end](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0apec2s4qwllqd0zcx1l.png)

In theory, a full-stack developer can take an application from the design stage all the way through to deployment. However, in application, this is only feasible for very small projects. While a specialized back-end developer might have a deeper knowledge of back-end development, such as database design, a full-stack developer has more of a generalized knowledge. **On a large real-world project, full-stack engineers are generalists who help bridge the gap between two highly specialized forces: Front-end and back-end developers**. 

<a name="full-stack-python"></a>
## Full-stack development with Python
There are many benefits to using the Python programming language for web development, including a relatively fast development time. However, the **best part about using Python as a full-stack engineer might be the career opportunities it can open up for you**. There remains a demand for full-stack and back-end Python engineers. Because Python is commonly used in data science and machine learning, you can add these to your back-end skillset as you advance as a full-stack engineer.
 
 
### Back-end development using Python
There are numerous Python back-end frameworks include Flask, Django, Turbogears, CherryPy, Pyramid, Bottle, and Falcon. However, we'll discuss the most popular frameworks: Django and Flask.

**Django**

Django is a free and open-source project with a large developer community. As such, it sees frequent enhancements in its features of security, user and roles management, and database migration management. Django also has a REST framework that fully supports RESTful Web APIs.

**Flask**

Flask is another popular Python web framework. More lightweight than Django, it's known as a micro-framework. Flask is commonly used to develop the back-end of APIs. You'll find many pluggable features available in the Flask community.
 
### Front-end development using Python
Unlike back-end development, **front-end development in Python is still in its infancy.** For this reason, HTML, JavaScript, and CSS are typically used at the front-end. However, a few front-end Python frameworks have been developed recently, such as Skulpt, Brython, and Anvil.
 
Since it’s relatively more mature, let's discuss Anvil.  Anvil is a **full-stack framework** that can be used for both front-end and back-end development. We can use Anvil to develop a web page’s UI components through drag-and-drop components on Anvil's graphical interface. We can also modify the properties of UI components, and associate those components with events (Python functions). Anvil helps with back-end functionalities such as database manipulation, file management, and user authentication. 

<br>
<a name="what-to-learn"></a>

## What you’ll need to learn to become a Python full-stack developer
What you need to learn depends on your past experience. Here’s an overview of what you’ll need to know.

### Programming in Python 
If you don’t already know Python, you’ll want to learn Python well. You’ll be programming servers with it, after all. But before you start doing that, make sure you’re comfortable with Python fundamentals, from algorithms and data structures, to object-oriented programming (OOP) with Python. While the latter isn’t absolutely necessary, you might consider learning OOP techniques as it can reduce your development time in the long run.

On that note, here are some tips for learning Python as a beginner developer.

### Web development fundamentals
If you’re an absolute beginner to web development, you’ve got two sides to acquaint yourself with.

**Front-end development**

Here’s a minimal list covering what you’ll need to know to get started with front-end development:
* Web fundamentals of HTML, JavaScript, and CSS
* A front-end JavaScript framework like AngularJS, ReactJS, VueJS
* A JavaScript library like jQuery
* Optionally, a CSS framework like Bootstrap


**Back-end development**

Here’s a minimal list covering what you’ll need to know to get started with back-end development:
* Designing and building Application Programming Interfaces (APIs), including REST APIs
* CRUD operations 
* A database like MySQL, MongoDB, PostgreSQL, or SQLite
* Python back-end frameworks such as Django or Flask
* Git for source code management and version control 


> **Tip**: There are various web frameworks to choose from. To narrow down your choices, consider the factors that are a priority for you. For instance, you might want to opt for a tool that has decent community support and good documentation.

<a name="tips"></a>
## Tips for becoming a Python full-stack developer 

Here’s some guidance for your journey as a full-stack Python developer:
* **Think of this as a long-term journey**: If you’re starting from scratch, you may have a long road ahead of you – and that’s exciting! If you get impatient with your progress, remember that the time you spend learning and practicing now is going to minimize your knowledge gap, which will only help strengthen the foundation for your future growth.
* **Aim for generalist knowledge first, then go deeper**: Since your range of knowledge is covering several topics, you don’t need to have the same depth of knowledge as a specialist would. Start with the minimum that you need to know, and practice that until you’re great at it. You’ll gain a greater depth of knowledge with work experience over time. 
* **Plan your progress with small, achievable goals**: Your learning curve might take a while simply because full-stack engineering involves various languages, frameworks, and techniques. If you have a lot of new concepts to learn, it helps to structure a plan that decomposes your final goal into several small goals with realistic deadlines.
* **Focus on one tech stack at a time**: Master one stack first. You can (and should) pick up additional technologies later on.
* **Learn with peers**: You can do this in any way that suits you. Find a fellow Python learner, take classes, do a bootcamp or join a Python Discord server.


<a name="next-steps"></a>
## Wrapping up and next steps
No matter where you are in your journey as a developer, Python is a great programming language to support you in full-stack development. Learning the skills to carry a web application from design to deployment will not only be a fascinating learning process, but an excellent move for your career as well. 

To help you learn the essentials of full-stack development, we’ve created the [**Quick Start Full Stack Web Development**](https://www.educative.io/collection/10370001/4969399737384960?eid=5082902844932096) course. With several tutorials and quizzes to assess your progress, you’ll get hands-on experience with each step of web application development. Throughout the course, you’ll learn how to develop a client page with React, create an API with Flask, work with databases with SQLAlchemy, and deploy your application on Heroku. 

*Happy learning!*
 
### Continue learning more about web development on Educative
* [The Web Developer FAQ](https://www.educative.io/blog/web-developer-faq?eid=5082902844932096)
* [An introduction to full-stack JavaScript development](https://www.educative.io/blog/fullstack-javascript-introduction?eid=5082902844932096) 

* [Roadmap to full-stack: How to become a full-stack developer](https://www.educative.io/blog/the-journey-to-become-a-full-stack-js-developer-starts-here?eid=5082902844932096)

### Start a discussion
What's your approach to learning full-stack? Was this article helpful to you? Let us know in the comments below!