Fighting The Curse of Knowledge

Insights on Mentoring Young Pythonists

Yotam Manor (GitHub, Facebook, Twitter, Email, YouTube)

PyWeb-IL, June 2017. Follow @ http://bit.ly/pyCurse

Mentoring is Important!

For Mentees - Crucial

For Mentors - Educative

Why Don't We Mentor More?

 

1. We don't prioritize it

 

 

2. We don't know how to

Yotam Manor

 

MassChallenge: Software Engineer

Hasadna:

 - Project Lead (kikar.org)

 - Udi Oron's TA (Hackita02)

The Curse of Knowledge

The Case of UI Buttons

The Curse of Knowledge Manifests In:

 

Interface Design

 Teaching/Mentoring

 

(Among Other things)

An Exemplary Example

"Execute foo.py"

  • Open a command-line interface
  • [type: sudo su]
  • type: “python foo.py”, press Enter/Return

 

  • This is interpreted as 
    /path/to/executable/python* ../current_dir/foo.py
    
    ​*As is set in PATH env var

 

  • Python's CLI knows what to do with a path as the first argument.
  • Implicit vs. Explicit

  • The Code Execution Interface

  • Setup is Hard for Beginners

    • Installation, Configuration, Versioning (Py2<>Py3, 32bit<>64bit), 3rd Party, OS*

Example Demonstrates Curse's Effect:

 

Writing Code

Good Habits (They Lack)

  • Basic logic

  • Thinking like a computer scientist

Bad Habits (They Picked)

  • Re-inventing the wheel / WET code
  • No version control

  • No testing

  • Incomprehensible variable names

Non-Idiomatic Habits 

Workflow

We Can Help!

Git

If that doesn't fix it, git.txt contains the phone number of a friend of mine who understands git.

 

Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything.

https://xkcd.com/1597/

IDE Leap of Faith

Debugging Habits

Mentality

It’s Not Intuitive To Know What’s Intuitive

This Causes New Developers:

 

  • To ask obvious questions

  • To chase their tails, instead of asking for help

Frustration and Self-Doubt.

What Can We Do?

Be Verbose

More Verbose

Even More

Explicit is better than implicit!

Don't Assume They Know What They're Asking For.

Always* ask "Why do you want to do that?"

Don’t Assume They Know When To Ask For Help.

Offer it in advance.

Share Your Process.

What did you google in order to find the answer?

Don’t Make Them Feel Stupid.

Last Words

The Curse of Knowledge and the Future of Python

Thanks!

Would love to hear your thoughts!

yotammanor@gmail.com

Made with Slides.com