# Learning Goals: PDM & Next 12 Months
*These are the areas I'm hoping to focus on in the next 3-12 months. Whether directly through the PDM program or as a part of self-study*
## Experiences
*I want to gain experience in the following areas during the PDM program or as soon as possible*
- [ ] Write an API (use Fast API & Pydantic?)
- [ ] Use Continuous Integration and Delivery (Github Actions)
- [ ] Write a test suite (Pytest?, TDD?)
- [ ] Deploy an app to the web
- [ ] Use Django in an application
- [ ] Use a container application such as Docker
- [ ] Publish something to PyPi if I write a useful and reusable module
- [ ] Web scraping
- [ ] Use Jupyter Notebook to create data analysis project
- [ ] Look into machine learning, understand what it is
- [ ] Advice on getting up to speed on a codebase quickly
## Coding / CS Skills
*These are the areas of Software Engineering and Python I'm not proficient in yet and need more practice*
### Comp Sci / Software Engineering
- [ ] Recursion - I need to try to use this if I can. I get the basic premise but have never understood how and when to use it
- [ ] Identifying time & space complexity in my code, knowing which algorithm to choose based on its run cost
- [ ] Structuring a large program
- [ ] Creating good classses
- [ ] Writing useful docstrings
- [ ] Advanced debugging skills
- [ ] Improve communication with other developers (explaining concepts, whiteboarding)
### Coding
- [ ] Decorators & Closures
- [ ] Some lesser known dunder methods
- [ ] REST
- [ ] Generators
- [ ] Typing module & type annotations
- [ ] Iterators
- [ ] Lambdas
- [ ] Multi-threading / asynchronous
### Other
- [ ] Linux command line tricks
- [ ] Debug configurations
- [ ] App security & handling secrets
## Mindset
*These are the mental barriers I want to overcome*
- [ ] Feel more confident in myself
- [ ] Persistence in the face of hard topics
- [ ] Shut down the negative mental voices
- [ ] Stop thinking I'm not good enough to do things like be a software developer, or launch my own business
- [ ] Learn to slow down and be more careful and intentional - stop rushing and pressuring myself
- [ ] Be more patient and focused when reading text
- [ ] Learn to work deeply with more focus