The difference in productivity from knowing basic python and mastering advanced techniques can be staggering. Investing the time to learn these techniques can be a real edge in your skill set
This unique workshop is designed to build deep understanding in a wide array of advanced techniques and applications. The workshop uses extensive in-class practice to retain and refine this understanding, and is geared towards developers who want to take their pythons capabilities to the next level
Write safer, more readable pythonic code
Once your codebase reaches tens of thousands of lines of code, and several engineers work on it, deeper and faster understanding of the code becomes the key to maintaining developer productivity. Mastering this skill set will amaze your coworkers with how clear and concise your code is.
- Type-safe python with mypy - learn how to write and generate type-annotations for your code, and statically test them with mypy. Dropbox with its’ 4m lines of python, and Guido van Rossum BFDL both swear by it!
- Eliminate loops and indexes - Learn every trick in the book to write less loop and indexing code, replacing them with succinct list comprehensions, reduce functions, tuple unpacking, zip, enumerate, slicing, generators and cofunctions. Beautiful is better than ugly!
- Reduce boilerplate code with @decorators - Learn how to decorators can increase your productivity and readability. Understand how decorators work under the hood, use the key decorators in the standard library and write your own.
Write and maintain succinct developer tests and deployments
Today’s software changes so fast that writing developer tests has become key to move faster without breaking things. Mastering this skillset will allow you to spend less time debugging and worrying, and help you launch better products more often.
- Pytest - learn how to write short, expressive and succinct tests with high coverage and minimal effort
- Unitest.mocks - learn how to test your logic and nothing else, using mock objects to test in a controlled environment and remove complexities such external systems or services
- Hypothesis - learn how to automatically generate sample data, fuzz test your code for key invariants, and easily create regression tests
- Manage package dependencies with pipenv - learn how virtualenv can make sure you have consistent run-time environments, and how pipenv neatly solves streamlines common virtualenv workflows and avoids dependency pitfalls.
Are your classes making life easier or harder for you?
Python is one of the most OO languages in use today. But surprisingly writing code as classes can often be unnecessary or counter-productive. On the other hand, when classes CAN in fact be useful, python has an incredibly rich and flexible set of tools that many developers might not be familiar with. Mastering this skill set will let you write incredibly powerful OO APIs and modules
- Containers, iterables, indexing - Learn how to write new container classes that can take complicated access patterns and make them as easy to access as a list or a dict
- Magic methods galore - Learn how to make your objects sortable, hashable, persistent, printable, and how to interface with other python objects in the most delightful way
- Demystifying inheritance and polymorphism - Learn how inheritance works in python and when to use or avoid it, what protocols are and how to use and enforce them, how polymorphism works and how you don’t need inheritance for it to work.
Thinking in functional terms
Functional programming concepts such as map, reduce, lambda, closures and higher order functions are no longer just toys for academia, but are now key tools in everything from BigData, Cloud computing, Data Science and Machine Learning. Mastering this skillset is key to writing scalable, testable and concise code that works well in the modern compute-heavy worlds of cloud, bigdata and machine learning.
- Connect the dots - learn how why functional language idioms made their way into mainstream languages such as python, C#, java, scala and are becoming so important. What problems they solve, and how they relate to key BigData concepts such as MapReduce.
- Lazy lists and generators - Learn how to work with lists, files or workloads that are too large to fit into memory . understand how map and filter relate to list comprehensions, and how to write generator expressions
- Closures and lambdas - Learn how functions are objects and how objects can be functions, how to increase reusability by factoring your code into access algorithms and logic, implement common design patterns with a simple function