├── .gitignore └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | Python Backend Developer Roadmap.md -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Python Backend Developer Roadmap 2 | 3 | This roadmap is intended for junior software engineers in my company or newcomers in my team for onboarding purposes. Generally, this is for Python Backend Web Developer with a speciality in Instant Messager using [Matrix](https://matrix.org). 4 | 5 | ## 1. Basic Internet, Operating System and Frontend Knowledge 6 | ### 1.1 Bash/Terminal 7 | - SSH 8 | - ["Mastering Linux shell scripting a practical guide to Linux command- line, Bash scripting, and Shell programming"](https://www.goodreads.com/book/show/40615121-mastering-linux-shell-scripting) 9 | 10 | ### 1.2 Basic Internet 11 | - DNS 12 | - Domain 13 | - Hosting 14 | - Cloud service 15 | - resources 16 | - [DNS & Domain](https://pediaa.com/difference-between-domain-and-dns/) 17 | - [Cloud & Hosting](https://cloudacademy.com/blog/web-hosting-vs-cloud-hosting-whats-the-difference/) 18 | 19 | ### 1.3 Web server 20 | - Nginx, Apache, Tomcat 21 | - Reverse Proxy 22 | - Load balancer 23 | - WSGI & ASGI 24 | - Resources 25 | - [Nginx](https://www.nginx.com/resources/glossary/nginx/) 26 | - [Reverse Proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) 27 | - [Load Balancer](https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/) 28 | - [WSGI & ASGI](https://medium.com/analytics-vidhya/difference-between-wsgi-and-asgi-807158ed1d4c) 29 | 30 | ## 2. Programming language (Python) 31 | ### 2.1 Basic Data Structure & Algorithm 32 | - Resources 33 | - [Python Basic](https://books.goalkicker.com/PythonBook/) 34 | - [Data Structure with Python](https://www.geeksforgeeks.org/data-structures/) 35 | 36 | ### 2.2 Python2 vs Python3 37 | - Resource 38 | - [Python2 vs python3](https://www.guru99.com/python-2-vs-python-3.html) 39 | 40 | ### 2.3 OOP 41 | - class 42 | - Inheritance 43 | - etc.. 44 | - resources 45 | - [Python 3 Object Oriented Programming](https://www.goodreads.com/book/show/8679996-python-3-object-oriented-programming) 46 | 47 | ### 2.4 Python data type 48 | - list 49 | - queue 50 | - stack 51 | - tree 52 | - dictionary 53 | - tuple 54 | - hash map 55 | - set 56 | 57 | - Resources 58 | - [Python Basic](https://books.goalkicker.com/PythonBook/) 59 | 60 | ### 2.5 Environment & environment manager 61 | - pip 62 | - env & venv 63 | - [conda](https://docs.anaconda.com/anaconda/user-guide/getting-started/) 64 | - resources 65 | - [python environment manager](https://www.section.io/engineering-education/introduction-to-virtual-environments-and-dependency-managers/) 66 | - [env](https://docs.python.org/3/tutorial/venv.html) 67 | - [conda cheat sheet](https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf) 68 | 69 | ### 2.6 Python IDE 70 | - Visual studio Code 71 | - Pycharm 72 | - Sublime 73 | - Text Editor 74 | 75 | ### 2.7 SOLID Principe 76 | - [Solid principe with python](https://towardsdatascience.com/solid-coding-in-python-1281392a6a94) 77 | 78 | ### 2.8 Python Framework (web) 79 | - [FastAPI](https://fastapi.tiangolo.com/) 80 | - [Flask ](https://flask.palletsprojects.com/en/2.0.x/tutorial/index.html) 81 | - [Django](https://www.djangoproject.com/) 82 | 83 | ### 2.9 Unit Testing 84 | - [pytest](https://docs.pytest.org/en/6.2.x/) 85 | - Unittest 86 | 87 | ### 2.10 Important Library 88 | - numpy 89 | - requests 90 | - socket.io 91 | - psycopg2 92 | - bcrypt 93 | - aioredis 94 | - stomp.py 95 | - json 96 | - asyncio 97 | - time 98 | - logging 99 | - typing 100 | - sqlalchemy 101 | - gunicorn 102 | - urllib 103 | - matrix_client 104 | - matrix-nio 105 | - pyyaml 106 | - pandas 107 | - pytest 108 | 109 | ### 2.11 Python ASGI 110 | - [gunicorn](https://docs.gunicorn.org/en/stable/) 111 | - [uvicorn](https://www.uvicorn.org/settings/) 112 | 113 | ### 2.12 Data Model 114 | - ORM (Object Relational Mapping) 115 | - [SQLAlchemy](https://docs.sqlalchemy.org/en/14/) 116 | - Resources 117 | - [ORM](https://www.fullstackpython.com/object-relational-mappers-orms.html) 118 | 119 | ### 2.9 Advanced Concept 120 | - Decorator / Property (@) [tutorial](https://www.programiz.com/python-programming/decorator) [tutorial2](https://www.datacamp.com/community/tutorials/decorators-python) 121 | - Synchronous & Asynchronous [Asyncio Python](https://docs.python.org/3/library/asyncio.html) 122 | - Multithreading [python Multithreading](https://www.tutorialspoint.com/python/python_multithreading.htm) 123 | - python modules [modules & package](https://realpython.com/python-modules-packages/) 124 | 125 | ## 3. Version Control 126 | ### 3.1 Git/Github 127 | - resources 128 | - [Git documentation](https://git-scm.com/docs) 129 | - "Pragmatic version control using Git" 130 | 131 | ## 4. Database 132 | ### 4.1 Posgresql 133 | - Resource 134 | - [Postgresql tutorial](https://www.postgresqltutorial.com/) 135 | 136 | ### 4.2 [Databse Index](https://www.postgresql.org/docs/9.1/indexes.html) 137 | ### 4.3 SQL (Query Language) [tutorial](https://www.tutorialspoint.com/sql/index.htm) 138 | ### 4.4 [Normalization](https://www.guru99.com/database-normalization.html) 139 | ### 4.5 [ACID](https://henriquesd.medium.com/acid-properties-43e146b21e0d) 140 | ### 4.6 [ORM](https://medium.com/@haataa/orm-for-python-sqlalchemy-101-with-code-example-60868e65b0c) 141 | ### 4.7 [NoSQL](https://towardsdatascience.com/datastore-choices-sql-vs-nosql-database-ebec24d56106) 142 | - MongoDB 143 | - Elastic Search 144 | - InfluxDB 145 | - DynamoDB 146 | 147 | ## 5. [APIs](https://medium.com/@perrysetgo/what-exactly-is-an-api-69f36968a41f) 148 | ### 5.1 [Rest API](https://medium.com/edureka/what-is-rest-api-d26ea9000ee6) 149 | ### 5.2 [Json](https://restfulapi.net/introduction-to-json/) 150 | ### 5.3 [GraphQL](https://graphql.org/) 151 | 152 | ## 6. [Caching](https://aws.amazon.com/caching/) 153 | ### 6.1 In Memory caching 154 | - Redis [tutorial](https://aws.amazon.com/redis/) [Redis python](https://realpython.com/python-redis/) 155 | - [memcached](https://memcached.org/) 156 | 157 | ### 6.2 Content caching 158 | - [CDN](https://www.cloudflare.com/learning/cdn/what-is-a-cdn/) 159 | 160 | ## 7. Testing 161 | ### 7.1 [Unit testing](https://www.guru99.com/unit-testing-guide.html) 162 | ### 7.2 Tools 163 | - pytest 164 | - unittest 165 | - [Postman](https://www.postman.com/) 166 | 167 | ## 8. [CI / CD](https://medium.com/devops-dudes/what-is-ci-cd-continuous-integration-continuous-delivery-in-2020-988765f5d116) 168 | ### 8.1 Version Control 169 | ### 8.2 Github/Gitlab 170 | ### 8.3 CI/CD tools 171 | - [github action ](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) 172 | - [jenkins](https://www.jenkins.io/) 173 | - [travis](https://travis-ci.org/) 174 | 175 | ## 9. Architectural Patterns 176 | ### 9.1 [Monolithic](https://microservices.io/patterns/monolithic.html) 177 | ### 9.2 [Microservice](https://microservices.io/) 178 | ### 9.3 Patterns 179 | - [SAGA](https://microservices.io/patterns/data/saga.html) 180 | - [Circuit breaker](https://microservices.io/patterns/reliability/circuit-breaker.html) 181 | 182 | ### 9.4 Design Pattern 183 | - Singleton 184 | - Strategy 185 | - Command 186 | - Observer 187 | 188 | - Resources 189 | - [Design Pattern]https://refactoring.guru/design-patterns 190 | 191 | ## 10. [Message Broker](https://www.ibm.com/cloud/learn/message-brokers) 192 | ### 10.1 Communication concept 193 | - Producer & consumer 194 | - publisher & subscriber 195 | - topic 196 | - queue 197 | 198 | ### 10.2 Engine 199 | - [ActiveMQ](https://activemq.apache.org/) 200 | - [RabbitMQ](https://www.rabbitmq.com/) 201 | - [Kafka](https://kafka.apache.org/) 202 | 203 | ## 11. Containerization 204 | ### 11.1 [Docker](https://docs.docker.com/) 205 | ### 11.2 [Kubernetes](https://kubernetes.io/docs/home/) 206 | ## 12. Authentication 207 | ### 12.1 [JWT](https://auth0.com/blog/how-to-handle-jwt-in-python/) 208 | ### 12.2 [OAuth2](https://testdriven.io/blog/oauth-python/) 209 | ### 12.3 hash function 210 | - sha 211 | - [bcrypt](https://zetcode.com/python/bcrypt/) 212 | 213 | ## 13. Communication Protocol 214 | ### 13.1 [Websocket](https://www.html5rocks.com/en/tutorials/websockets/basics/) 215 | ### 13.2 TCP 216 | ### 13.3 [STOMP](https://jasonrbriggs.github.io/stomp.py/) 217 | ### 13.4 WEbRTC 218 | ### 13.5 Http Request 219 | ### 13.6 [gRPC](https://grpc.io/docs/languages/python/basics/) 220 | 221 | ## 14. [Monitoring](https://www.pcwdld.com/best-python-monitoring-tools) 222 | ### 14.1 Engine 223 | - [Grafana](https://grafana.com/) 224 | - [Datadog](https://www.datadoghq.com/) 225 | - [Prometheus](https://prometheus.io/) 226 | - Sentry 227 | --------------------------------------------------------------------------------