2023-10-17
Python Expertise Level - Self-Assessment
Sometimes you need to assess your own or candidate's level of expertise in Python programming. I have created some statements that roughly corresponds to the various level of expertise. Note that knowing programming language techniques contributes to expertise but does not make a great programmer automatically. Knowledge of algorithms and data structures, programming patterns, and software architectures are some other important factors - to mention a few.
Having that said, I still find useful this simple classification of Python programmers into three categories: beginners, advanced, and experts.
Beginners
- Familiar with basic Python syntax and data types (strings, integers, lists, dictionaries).
- Can write simple functions and use control flow statements (if, for, while).
- Understands the concept of variables and variable scope.
- Can use basic Python libraries like
math
andrandom
. - Knows how to handle errors and exceptions using try/except blocks.
- Can read from and write to files.
- Understands the basics of object-oriented programming: classes, objects, methods.
- Can use basic string and list methods for manipulation.
- Knows how to use basic Python data structures like lists, tuples, and dictionaries.
- Can write simple Python scripts to automate tasks.
Advanced
- Understands and uses generators and decorators.
- Can write complex functions and classes with multiple methods and attributes.
- Understands and uses list comprehensions and lambda functions.
- Can use regular expressions for pattern matching in strings (note: more regex skill that python)
- Understands and uses context managers for resource management.
- Can use advanced Python data structures like sets and frozensets.
- Understands and uses Python's memory management and optimization techniques.
- Can use Python's built-in functions like
map()
,filter()
,reduce()
. - Understands and uses Python's module and package system.
Experts
- Understands and uses metaclasses and descriptors.
- Can write and understand asynchronous code using
asyncio
. - Understands and uses Python's concurrency and parallelism features.
- Can use Python's C API to extend Python with C/C++ code.
- Understands and uses Python's dynamic typing system to its full extent.
- Can write and understand complex decorators and context managers.
- Proficient in Python's debugging and profiling, using tools like
pdb
for debugging andcProfile
for profiling to optimize their code. - Have a deep understanding of Python's Global Interpreter Lock (GIL) and how it affects multithreaded programs.
There is HN discussion on this note.
Edits:
- 2023-10-30: Remove from Experts: 7. Understands and uses Python's garbage collection system.
- 2023-10-30: Remove from Experts: Have a good understanding of Python's internals, such as bytecode, the Python interpreter's execution model, and how Python's data types are implemented at the C level.
- 2023-10-30: Remove from Advanced: Can use advanced Python libraries like
numpy
,pandas
,matplotlib
not a python std lib.