# 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