Inspired by robert8138's post on Plateau of Productivity, in which he emphasizes on the need for deliberate practice. I took up the challenge and this is my resolute.
I have a pretty good working knowledge of the python language and need not say that there is obviously a lot more things that I need to learn.
My major appeal of Python falls on Data Analysis capabilities within the whole integrated technology stack.
Knowing Python is likely to make me a better end-to-end Data Scientist and better Software Engineer.
Learn by doing is the loudest advice I've heard so far and am going to hone my Python skills through Deliberate Practice:
-
Identify the Top Performers: I think I know a few people who can be my role model.
- I'll need to understand what they've been through to get to where they are today.
- What is their mental representation that I do not have about Python.
-
Build Practice Plans: Ideally, based on the rough understanding of that mental representation:
- Define clear goals and select learning materials
- Create deadline and milestones for the project
- Estimate time required and come up weekly schedules
Augment these insights with my current level of mental representation of Python to improve my understanding.
-
Targeted Practice: Force myself to work
- Maximize my time practicing Python for Data Analysis,
- Data visualization, Modeling, or contribute Python Data Analysis packages. 😜
-
Immediate Feedbacks: Create a culture of code reviews. 👓
- Find constant opportunities to get feedback as much as possible.
- [Immediate] Learn to write pythonic code
- [Shorter term, easiest to practice] Write re-usable, modular, tested code for my data work and knowledge posts
- [Medium term, harder to practice] Achieve efficiency and feature parity on Data Analysis using Python
- [Longer term, hardest to practice] Write tools. Be able to work on projects that span the entire data stack using Python while applying good software engineering principles to these projects
-
Outcome: I want to take on one Python project (ML, Data Viz ...etc). by July 2018
-
Curriculum: I want do everything that I can to go through all the basic materials in Pandas/Matplotlib.
- Expose myself to functional programming,
- OOP,
- testing in Python.
-
Timeframe:
- Efficiency in python programming by June 2018.
- One ongoing big project touching different stacks in Python by the end of October 2018.
-
Learning Python & Best Practices
-
Writing Pythonic Code
- Guidelines For Writing Pythonic Code
- Function: Use *args and **kwargs to accept arbitrary arguments in function definition
- Tuples: effective unpacking, use _ for placeholder, swap values without tmp variables
- List/Dict/Set: list comprehension, dict comprehension. dict.get, set comprehension
- Strings: use .format, use .join
- Classes: use __ __ in function and variable name to mark private variables
- Generator: use generator to lazily load a infinite sequence
- Modules: writing modules for encapsulation
- Formatting: pep8 standards
- Executable script: name = main
- Import: The right way to do imports
- Writing Idiomatic Python - Jeff Knupp
- Stanford CS 41: Idiomatic Python
- Another Tutorial On How To Write Pythonic Code
- Guidelines For Writing Pythonic Code
-
iPython Notebook
-
Data Analysis
- Introduction to Numpy
- Introduction to Pandas
-
Data Visualization
- Intro to Matplotlib
- Seaborn
- Bokeh: Interactive, web browser base data visualization
- A Dramatic Tour through Python’s Data Visualization Landscape (including ggplot and Altair)
-
Writing Object Oriented Programming Python Code
-
Writing Functional Programming Python Code
-
Machine Learning In Python
-
Testing In Python
- Python Tutor Visualizer
- Python For Data Analysis
- Stanford CS 41: Python
- Berkeley CS 88: Python Data Structure
- Harvard CS 109: Data Science
- Berkeley BIDS Python bootcamp
- Josh Bloom's Python Computing For Data Science
- Writing Idiomatic Python - Jeff Knupp
- Another Tutorial On How To Write Pythonic Code
- Pandas Cookbook
- Udemy course
- In-depth Matplotlib