This repository documents my personal development as a software engineer and Python programmer. It includes:
- Projects I've proposed to hone my skills
- Topics I've identified as important to study and practice
- Courses I plan to take
- Books I intend to read
- Certifications I gain as I work through my plan
- Best practices and useful commands/information I've found along the way (e.g. commit message formats or ideal package structures)
- Questions I currently have
Together, these form a plan and a measure of my progress; as such, this repository will be added to, changed and improved over time.
| Project | Location | Status |
|---|---|---|
| Automate my finances | finances-automation | Active |
| Easy rental search | easy-rental-search | Active |
| Raspberry Pi home security system | pi-security | Active |
| Renewable energy dashboard | renewable-energy-dashboard | Not started |
| Voice coding package | voice-coding | Not started |
| Hack my Dyson air purifier | hack-dyson-purifier | Not started |
| Scraped lyric generator using Markov chain | scraped-lyric-generator | On hold; requires refactor/restructure |
| Scrape engineering job listings | scrape-job-listings | Not started |
Other projects:
- Set up a VPN server on a cloud-based virtual machine
- Create an inventory system keeping track of when products need to be rotated and notifying the owner when this is the case
- Scrape interest rates of various financial products over time and plot them on a live dashboard
- Traverse the network of dependencies in a python package and produce a graph illustrating their linking structure (e.g. for visual inspection for circular imports)
This is the list of topics I have identified for further study and investigation.
| Topic | Details | Status |
|---|---|---|
Advanced use of git (rebasing, squashing, tagging, hooks etc.) |
Here | Completed |
| Virtual environments | Here | Completed |
| Regex (theory and practical use) | Here | Completed |
| Bash and shell control in depth | Here | Completed |
Creating CLIs in python with argparse |
Here | Completed |
Web scraping with requests and beautifulsoup4 |
Here | Active |
| PostgreSQL; creating, hosting and interacting with databases | Here | Active |
| Docker | Here | Active |
| Clean code and architecture | Here | Active |
| Compression and archiving | Here | Active |
Python multiprocessing library |
Here | Active |
| Context managers | Here | Active |
Generators and yield |
Here | Active |
| Interacting with and building RESTful APIs | Here | Active |
| Python packaging in depth | Here | |
Testing and mocking with pytest in depth |
Here | |
| Use of PyCharm in depth | Here | |
| Python decorators | Here | |
| Linux command line utilities | Here | |
| HTTP conventions | Here | |
| Memory architectures | Here | |
| Digital Ocean and Terraform | Here | |
Setting up a gittea mirror |
||
| Lambda functions | ||
| Ansible | ||
| Daemons | ||
| RabbitMQ and Celery | ||
File I/O including binary files and streams (including text wrappers and the python io libary) |
||
Python classes in depth (including @classmethod and @staticmethod) |
||
| Abstract base classes | ||
| Principles of Test Driven Development (TDD) | ||
| Error handling in Python | ||
os and sys python libraries |
||
| Python set operations | ||
matplotlib and seaborn |
||
| Markdown vs reStructuredText | ||
| Sphinx documentation | ||
| Encoding | ||
Storage formats e.g. csv vs parquet vs pickle |
||
| Google cloud platform in depth | ||
| Continuous integration and deployment | ||
| Mapping | ||
| Hashes | ||
| Machine learning libraries | ||
| The basics of Go | ||
| Use of vim in depth | ||
| Static-typing in Python | ||
| Hexagonal architecture | ||
| Python GUIs and graphics | ||
| Hosting webservers using e.g. Nginx | ||
pandas.groupby objects further in depth |
||
| NoSQL databases; mongoDB | ||
| Cybersecurity basics for engineers | ||
| HypothesisWorks tests | ||
| Kubernetes | ||
| Spark and Hadoop | ||
| ElasticSearch | ||
| Airflow | ||
| Scala | ||
| Kafka | ||
| Blockchain basics |
These are generally shorter and lower cost courses.
| Course | Provider | Cost | Certified | Completed |
|---|---|---|---|---|
| How to use Git and GitHub | Udacity | Free | No | 2018-08-09 |
| GCP Essentials Quest | Qwiklabs | Subscription | Yes | 2018-08-17 |
| Learn SQL | Codecademy | Subscription | No | 2018-08-25 |
| SQL: Analyzing Business Metrics | Codecademy | Subscription | No | 2018-08-25 |
| SQL: Table Transformation | Codecademy | Subscription | No | 2018-08-26 |
| Intro to Relational Databases | Udacity | Free | No | |
| Computer Science Fundamentals | Brilliant | Subscription | No | |
| Computer Science Algorithms | Brilliant | Subscription | No | |
| Computer Memory | Brilliant | Subscription | No | |
| Intro to Computer Science | Udacity | Free | No | |
| Software Development Process | Udacity | Free | No | |
| GCP - Infrastructure and DevOps | QwikLabs | PAYG | Yes | |
| GCP - Big Data | QwikLabs | PAYG | Yes | |
| GCP - Security, Backup & Recovery | QwikLabs | PAYG | Yes | |
| GCP - Websites & App Dev | QwikLabs | PAYG | Yes | |
| GCP - Machine Learning | QwikLabs | PAYG | Yes | |
| Intro to Machine Learning | Udacity | Free | No | |
| Artificial Neural Networks | Brilliant | Subscription | No | |
| Machine Learning | Brilliant | Subscription | No | |
| Practical Deep Learning For Coders (Parts 1 and 2) | fast.ai | Free | No |
These are generally deeper and higher cost courses.
| Course | Provider | Cost | Certified | Started | Completed |
|---|---|---|---|---|---|
| Programming for Data Science | Udacity nanodegree | £349 | Yes | ||
| Become a Professional Full Stack Developer | Udacity nanodegree | £799 | Yes | ||
| Become a Machine Learning Engineer | Udacity nanodegree | £799 | Yes | ||
| Machine Learning for Data Scientists | Udacity nanodegree | £1598 | Yes |
| Book | Author | Area |
|---|---|---|
| 'Fluent Python: Clear, Concise, and Effective Programming' | Luciano Ramalho | Python |
| 'Computer Science: An Overview' | J. Glenn Brookshear | Computer science |
| 'Code Complete 2: A Practical Handbook of Software Construction' | Steve McConnell | Software engineering |
| 'Pro Git (v2)' | Scott Chacon and Ben Straub | Version control (git) |
| 'Python Machine Learning (Second edition) | Sebastian Raschka & Vahid Mirjalili | Python, machine learning |
| 'The DevOps Handbook:: How to Create World-Class Agility, Reliability, and Security in Technology Organizations' | Gene Kim, Patrick Debois, John Willis | DevOps |
| 'Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations' | Gene Kim, Nicole Forsgren, Jez Humble | DevOps |