Teaching

PythoN to

Non-Coders

Fabrizio Romano
@gianchub
EuroPython 2014 - Berlin, July 2014

slides



A little about me


  • Hold a Master's Degree in
    Computer Science Engineering
    from the University of Padova

  • Live and work in London
    (Senior Python Developer) for TBG
  • In love with Python since 2009

Why this Part of the presentatioN?


Short answer
They asked us when we submitted the abstract.

Shorter answer
We hope it's interesting!

What are we going to talk about?


A few guidelines about training
  • What a Trainee should do
  • What a Trainer should do

How the training was
delivered to our Manila team
  • Tools used
  • What can be delivered in ~12 hours

The manila team (Amazing peeps)


What a Trainee should do


  • Listen - With a capital L
  • Work hard

What a trainer should do



Achieve excellence
in the following...

Above all, smile and be patient


Because if you don't, they will
get defensive and feel uncomfortable,
and you won't achieve much.

Never take anything for granted


Give them

the Concepts
the Lingo
the Ideas
the Reasons

Use the gps technique™


They need to connect the dots from A to B.

If they can't follow you...

Recalculate the route!

Ask what isn't clear
Choose different words
Provide other examples

Set Goals


  • Should be reachable
  • Start gently, gradually increase difficulty
  • Skip the boring/trivial stuff (if possible)

Deliver outstanding quality Material


  • You have to enjoy it as well
  • Only what they need to know
    If they want more see if you have time. If not, give them pointers
  • Focus on their needs
    Not on what you like to show/explain
  • Refer to the real world, something easy to relate to
    I.e. did you know that a file object is not so different from a fridge?

Adapt


Every group is different,
adapt speed and difficulty
according to the audience.

Have extra materials ready
&
Know what you can cut.

Entertain Them


  • Communicate your passion
  • Make them laugh and have a good time
  • Don't be too strict!
    Use mistakes and errors as a tool
    to explain things again, maybe better

The next one is...


Only for the brave!

Flush your ego down the toilet!


You're doing it for them, not for yourself.

Don't worry!
In the end you will be enriched
more than anyone else.

tools that were used


  • Ubuntu
  • Bash shell
  • IPython Console & Notebook
  • Libraries
    (custom analytical interface, pandas, numpy, etc.)
  • MyPaint, with a cheap graphic tablet
    ("a picture is better than a thousand words")
  • When remote: Skype or Google Hangouts

The material


Delivered in ~12 hours

  • 1 Introduction session
  • 4 Python/IPython Notebook sessions
  • 3 Data oriented sessions
  • 1 Q/A session at the end

Introduction Session


Overview on main concepts, data structures, looping, branching, functions, classes, namespaces, etc.

These are the dots that will be used to go from A to B

  • High level
  • Important because 
it provides context

Python/Ipython sessions


The basics, with pointers to what
couldn't fit in due to time constraints.

  • code reuse and functions
  • looping and branching
  • handling files
  • Python data structures (dict, list, tuple, etc.)
  • main builtin functions

Extra material


Each in their own dedicated notebooks

  • Advanced dictionaries
  • Function arguments
  • List comprehensions
  • Slicing
  • Broader introduction to builtins

Data oriented sessions


One example divided in three sessions

  1. Fetching data until you have it
    ready in a DataFrame
  2. Data cleaning and mangling
  3. Output: stats, pivot tables, histograms, plots ... 

Extra materials


For the data oriented sessions

  • JSON
  • Regular Expressions
  • String manipulation
  • Datetime objects

That's it!


I hope you enjoyed it as much as we did.
Please don't hesitate to contact us:

Maciej Sobczak - maciej.sobczak@tbgdigital.com
Fabrizio Romano - @gianchub

But!
Before we open for questions...

Teaching Python to Non-Coders

By Fabrizio Romano

Teaching Python to Non-Coders

Educational part for the Python Driven Company project.

  • 2,112