Tom's Roadmap for Software Wizards
!!! WARNING: Work in progress
## Learning notes
- start with backend - history and first principles (code)
- then continue with basic backend skills (CLI/linux/python/sql/version control)
- cover web fundamentals (internet, www, html/css/js)
- touch on devops basics (classic hosting, vps, web server)
- dive deeper into backend again
- databases, APIs, testing, caching, message brokers, queues and workers
- design and arhihecture
- dive deeper into devops again
- ci/cd, containerzation, virtualization, instrumentation, monitoring, telemetry
- SRE concepts
## Other
```
Whats celery (python) and when do we use it? ๐ถ
When should we use nosql database (and what are the most commonly used ones) ๐ถ
What are task queues and when do we use them? ๐ถ๐ถ
Whats the difference between VPC and VPS? ๐ถ
Describe, explain as well as note why and when we use CI/CD. ๐ถ
What are duck typing and monkey patching? When do we use them and when are they harmful? ๐ถ๐ถ๐ถ
Whats the difference between On Prem, IaaS, PaaS and SaaS ๐ถ
What are entry points in python? Most common ones? https://amir.rachum.com/blog/2017/07/28/python-entry-points/ ๐ถ๐ถ๐ถ
When to use ORM and when plain sql ๐ถ๐ถ
Whats the difference between docker, docker compose and docker swarm? ๐ถ๐ถ
Whats python project configuration and how do we configure python (esp. flask) projects? ๐ถ๐ถ
Whats logging and how do we log in python? https://docs.python.org/3/howto/logging.html ๐ถ
Whats configuration management and why do we use it? What are the most common CM tools?๐ถ๐ถ๐ถ
When should we use column-oriented database (and what are the most commonly used ones) ๐ถ
Whats Sentry and what do we use it for? ๐ถ
What are package managers (in context of python) and whats the difference between pip, pipenv, poetry and conda? ๐ถ๐ถ
When do we use reverse proxy (and what are the most commonly used ones) ๐ถ๐ถ
What are redis and rabbitmq (in context of task queues)? when to use which? ๐ถ๐ถ
When to use sqlite and when to use postgresql ๐ถ
What are pytest and coverage.py? ๐ถ
What are jinja2 and mako and when to use them ๐ถ
Whats gerrit, what are its main features? ๐ถ
When to use flask and when django ๐ถ
Whats jenkins, what are its main features? ๐ถ๐ถ
In context of code testing whats mocking? ๐ถ๐ถ
Whats vagrant and what do we use it for? ๐ถ
```
https://hackersandslackers.com/series/data-analysis-pandas/
Lookup varios deployment strategies
https://harness.io/blog/continuous-verification/blue-green-canary-deployment-strategies/
Web Authentication Methods Compared https://testdriven.io/blog/web-authentication-methods/
Get tiny bit more autistic by reading how [https works](https://howhttps.works/episodes/).
Describe and explain: git flow, github flow, trunk based development, then compare them and note when to use which and why ๐ถ๐ถ๐ถ
- https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- https://docs.github.com/en/get-started/quickstart/github-flow
- https://trunkbaseddevelopment.com/
SPA vs MPA?
- https://asperbrothers.com/blog/spa-vs-mpa/
- https://yojji.io/blog/spa-vs-mpa
- https://news.ycombinator.com/item?id=18335007
Lookup methods for documenting python projects and python code
- https://docs.python-guide.org/writing/documentation/
- https://realpython.com/documenting-python-code/
Effective python second release (book)
Scrape Structured Data with Python and Extruct - [url](https://hackersandslackers.com/scrape-metadata-json-ld/)
### Scraping Data on the Web with BeautifulSoup - [url](https://hackersandslackers.com/scraping-urls-with-beautifulsoup/)
Things to pay attention to:
- what are python requests? Why use them?
- what are CSS Selectors
- HTML: what are elements and what are attributes
### Types
Pick one skim others:
- [Basic Data Types in Python](https://realpython.com/python-data-types/)
- [Python Type Checking (Guide)](https://realpython.com/python-type-checking/)
- [Python Data Types](https://www.programiz.com/python-programming/variables-datatypes)
Extra sauce:
- [Built-in Types](https://docs.python.org/3/library/stdtypes.html)
- [PEP 483 -- The Theory of Type Hints](https://www.python.org/dev/peps/pep-0483/)
- [PEP 484 -- Type Hints](https://www.python.org/dev/peps/pep-0484/)
### FastAPI
- [Types refresher](https://fastapi.tiangolo.com/python-types/)
- [Official tutorial](https://fastapi.tiangolo.com/tutorial/)
- [Developing and Testing an Asynchronous API with FastAPI and Pytest](https://testdriven.io/blog/fastapi-crud/)
- [Dockerizing FastAPI with Postgres, Uvicorn, and Traefik](https://testdriven.io/blog/fastapi-docker-traefik/)
- [Deploying and Hosting a Machine Learning Model with FastAPI and Heroku](https://testdriven.io/blog/fastapi-machine-learning/)
### Multiprocessing vs threading vs asyncio (in python)
- [Check what GIL is](https://en.wikipedia.org/wiki/Global_interpreter_lock)
- [Check what green threads are](https://en.wikipedia.org/wiki/Green_threads)
- [SO1](https://stackoverflow.com/questions/3044580/multiprocessing-vs-threading-python)
- [SO2](https://stackoverflow.com/questions/18114285/what-are-the-differences-between-the-threading-and-multiprocessing-modules/18114882#18114882)
- [Multiprocessing VS Threading VS AsyncIO in Python](https://leimao.github.io/blog/Python-Concurrency-High-Level/)
- [Async Python: The Different Forms of Concurrency](http://masnun.rocks/2016/10/06/async-python-the-different-forms-of-concurrency/)
### asyncio
Read multiple times if needed:
- [stackoverflow](https://stackoverflow.com/questions/50757497/simplest-async-await-example-possible-in-python)
- [A Hitchhikers Guide to Asynchronous Programming](https://github.com/crazyguitar/pysheeet/blob/master/docs/appendix/python-concurrent.rst#a-hitchhikers-guide-to-asynchronous-programming)
Skim:
- [Getting Started With Async Features in Python](https://realpython.com/python-async-features/)
- [Coroutines and Tasks](https://docs.python.org/3/library/asyncio-task.html#coroutines-and-tasks)
- [Developing with asyncio](https://docs.python.org/3/library/asyncio-dev.html#developing-with-asyncio)
- [Async IO in Python: A Complete Walkthrough](https://realpython.com/async-io-python/)
Extra sauce:
- [PEP 492 -- Coroutines with async and await syntax](https://www.python.org/dev/peps/pep-0492/)
imho best approach je podjeliti ucenje na tri djela, 1. opcenito citanje o sto vise stackova i tehnologija da znas sto postoji, 2. hardskills (ovo gore, pocevsi od Effective python knjige, i to samo prva polovica je dosta) i 3. code tasks (hackerrank i sl)
60 30 10 % efforta
----
### Learning Soft eng
- This could be a great content for personal blog/page
- blog could be based on tbx to be a forum in the background
- ceretain blog posts could be propagated to work manual pages
- i could have different blogs on different sections of the page
- this could be represented by different subforums?
- sell minibooks - condensed versions of full books and affiliate links to full versions?
- read all miguel wrote
python
- https://python-patterns.guide/
- effective py
- https://martinheinz.dev/blog/64
- https://martinheinz.dev/tag/python/
(distributed) systems (design)
- https://github.com/donnemartin/system-design-primer
- Art of Scalability 9780134031408
- https://github.com/jepsen-io/maelstrom
- https://github.com/aphyr/distsys-class
- https://aosabook.org/en/v2/zeromq.html
- [System Design Interview: An Insiderโs Guide](file:///media/frain/storage/files/books/System%20Design%20Interview%20An%20Insider%E2%80%99s%20Guide%20by%20Alex%20Xu%20(z-lib.org).pdf)
algos
- Algorithhms 4th Edition
- The Algorithm Design Manual
data science ml applied - detecting rocks
- https://www.sciencedirect.com/science/article/pii/S1674987120302486
- https://arxiv.org/pdf/1903.11436.pdf
- https://github.com/maxfrei750/DeepParticleNet
other & low priority
- DEBUG https://virtual.entrio.hr/event/lobby/11001
- how to handle logging https://news.ycombinator.com/item?id=20818106
- more on logging https://news.ycombinator.com/item?id=24006697
- https://www.infoq.com/minibooks/domain-driven-design-quickly/
- https://github.com/upgundecha/howtheysre
- learn airflow https://airflow.apache.org/
- learn about kafka https://kafka.apache.org/uses
### system design & distributed
- DDIA ยง
- watch https://www.youtube.com/watch?v=-W9F__D3oY4&list=PLmhRNZyYVpDmLpaVQm3mK5PY5KB_4hLjE&index=11
- https://github.com/karanpratapsingh/system-design
- https://github.com/donnemartin/system-design-primer
- https://github.com/aphyr/distsys-class
### Learning Systems Engineering
- https://en.wikipedia.org/wiki/Systems_engineering
- SEBoK https://sebokwiki.org/wiki/Guide_to_the_Systems_Engineering_Body_of_Knowledge_(SEBoK)
### programing (be/fe)
- book: ALGS4 ยง
- book: Practical SQL, 2nd Edition ยง
- https://docs.python.org/3/tutorial ยง
- book: effective py 2d ed ยง
### interview prep
- https://gist.github.com/tykurtz/3548a31f673588c05c89f9ca42067bc4)
- https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU
- https://seanprashad.com/leetcode-patterns/
- https://github.com/yangshun/tech-interview-handbook
- https://github.com/twowaits/SDE-Interview-Questions
- https://github.com/donnemartin/interactive-coding-challenges
- https://www.frontendinterviewhandbook.com/
- https://labuladong.gitbook.io/algo-en/
- [cracking the code interview](file:///media/frain/storage/files/books/Gayle%20Laakmann%20McDowell%20-%20Cracking%20the%20Coding%20Interview_%20189%20Programming%20Questions%20and%20Solutions-CareerCup%20(2015).pdf)
- https://blog.pragmaticengineer.com/preparing-for-the-systems-design-and-coding-interviews/
- https://leetcode.com/explore/interview/card/leapai/
- https://www.freecodecamp.org/learn/coding-interview-prep/
- my notes [here](https://github.com/frainfreeze/archive/tree/master/2018-2021/speedrun)
- https://github.com/jwasham/coding-interview-university
### Ml/ai
- https://github.com/khangich/machine-learning-interview
- book: https://arxiv.org/ftp/arxiv/papers/2201/2201.00650.pdf
- https://tom.kucar.org/workmanual/#_data_science
### security
- https://www.garyruddell.com/articles/how-to-pass-the-oscp-first-time
- https://www.willchatham.com/tech/oscp-achieved-offensive-security-certified-professional/
- https://www.reddit.com/r/oscp/comments/bbf7q7/passed_oscp_484642/
### other/general
- book: the SRE books trio
- https://github.com/jwasham/coding-interview-university
- https://github.com/zmcddn/coding-interview-guide
- https://github.com/kamranahmedse/developer-roadmap
- https://www.techinterviewhandbook.org/
- book: cracking the coding interview
## Python 2024-05-17
If you have 3-months - https://pythonmorsels.com has been a godsend for me when drilling on the fundamentals
of the python language. I guarantee that if you are relatively new to the language, that you won't run out of
(A) Interesting exercises, (B) Fundamental language concepts in less than 30-45 days, even spending 2-3 hours/day.
Just knock off 1 or 2 a day, and then come back a couple days later, and, without checking into the hints/guidance,
try and recall how you solved the exercise the first time - with zero checking into SO/exercise hints.
I got 10x more out of the second solve, doing it from only my knowledge. If you can keep that cadence up for even
a month - you will have at least the language fundamentals down really, really solid - then you can pivot to
various algorithmic solves in the language, or, if there is a particular front-end/back-end/etc.. framework that
you need to know - drilling into the characteristics of that.
Trey Hunner is one of the more gifted speakers - and he's really laid out a great exercise and test-coverage plan.
The best thing I can say about pythonmorsels is that, every 15-20 exercises, I look back and realize how little
I actually knew. Going through all the exercises is easily the equivalent of a full-semester "Introduction to language"
course at a college (minus the algorithmic elements - this is a "language concepts" site)
- https://www.pythonmorsels.com/dashboard/
- https://news.ycombinator.com/item?id=34570169
- https://news.ycombinator.com/item?id=34570315
- https://nostarch.com/python-crash-course-3rd-edition
- https://docs.python.org/3/tutorial/
- https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/
- http://www.dabeaz.com/python-distilled/
- https://effectivepython.com/
- https://nostarch.com/seriouspython
- https://www.fullstackpython.com/
- https://www.deploypython.com/full-stack-python.html
- https://twitter.com/ThePSF