forked from Squatconf/Talks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.5 KiB
Markdown
165 lines
5.5 KiB
Markdown
9 years ago
|
#Get better at helping people with programming
|
||
|
|
||
|
Marina Kukso
|
||
|
|
||
|
@marinakukso
|
||
|
|
||
|
---
|
||
|
|
||
|
#things i didn't know when i was a beginner
|
||
|
|
||
|
* the big boy voice is bullshit
|
||
|
* i am not dumb if i don't understand what you're telling me
|
||
|
* it's not strange if i don't know x - i just don't know it.
|
||
|
* "the DOM"
|
||
|
* relationship b/w hardware and software
|
||
|
* how to use sample code & install instructions
|
||
|
* prog is a skill that you can learn like other skills.
|
||
|
* why programming books start with data types
|
||
|
* there are crystals inside computers
|
||
|
* what exactly a bit is
|
||
|
|
||
|
---
|
||
|
|
||
|
#experiences i had already had when i was a beginner
|
||
|
|
||
|
* geocities, html
|
||
|
* CS1 in college (java, eclipse)
|
||
|
* fetishization of programming
|
||
|
* "what it's like to be a woman at a bitcoin meetup"
|
||
|
* bad outcomes when i asked questions
|
||
|
|
||
|
---
|
||
|
|
||
|
#things that didn't work for me
|
||
|
|
||
|
* "ok, type console.log"
|
||
|
* "install firebug. you'll need it."
|
||
|
* online code schools & other non-interoperable things
|
||
|
* "just learn python"
|
||
|
* intro to github
|
||
|
* skeleton css framework
|
||
|
|
||
|
---
|
||
|
|
||
|
#things that worked for me - laying the groundwork
|
||
|
|
||
|
* html, geocities
|
||
|
* taking a computer apart
|
||
|
* bits & how computers store info
|
||
|
* pen and paper registry, data structures, pseudocode
|
||
|
* computer/programming "ask me anything" sessions
|
||
|
* being around nice hackerpeople
|
||
|
|
||
|
---
|
||
|
|
||
|
#things that worked for me - programming
|
||
|
|
||
|
* figured out that i needed to learn linux before a prog language
|
||
|
* bash - sit with tutee & do things via command line
|
||
|
* analogies and examples
|
||
|
* writing programs from scratch
|
||
|
* working with node (most people will be happy to make a website)
|
||
|
* concrete projects: neocities, studio.substack.net, voxel.js, hardware, scripts
|
||
|
* amazing mentors, ongoing mentorship
|
||
|
* mentors pushed me to ask questions until i understood
|
||
|
* computerphile - "how would you make a computer do x"
|
||
|
|
||
|
---
|
||
|
|
||
|
#general tips
|
||
|
|
||
|
* empathy!
|
||
|
* assume as little as possible about the learner - ask q's
|
||
|
* constant feedback loop between you and the learner
|
||
|
* reassurance (personal stories) can be helpful
|
||
|
* examples, analogies, demonstrate on your comp
|
||
|
* history of computing - give the context! (eg origin of text-based interfaces.)
|
||
|
* help them set up an environment that will allow them to keep learning on their own
|
||
|
* person who sees self as beginner may not feel empowered to ask q's
|
||
|
* silence is not "i understand." check in at every step.
|
||
|
* ask q's until you understand what they're confused about
|
||
|
* read between the lines. xy problem. beginners often don't
|
||
|
use the right words to describe a problem.
|
||
|
* be aware of power you may hold in a situation
|
||
|
* you don't have to help all the time. "i'm busy right now", man pages
|
||
|
* jargon: focus on relevance/function; explain any jargon
|
||
|
in your explanation; if you are giving a very accurate, specific
|
||
|
explanation, explain why these seemingly minor
|
||
|
distinctions matter.
|
||
|
|
||
|
---
|
||
|
|
||
|
#specific tips
|
||
|
|
||
|
* don't touch learner's keyboard
|
||
|
* no, please: "it's easy"/"just do..."
|
||
|
* "are you familiar with?"
|
||
|
* "does that make sense?"
|
||
|
* "are you stuck on anything?"
|
||
|
* "do you know what to do next?"
|
||
|
* man pages, googling, reading errors
|
||
|
* don't say "guy" for "person"
|
||
|
* be aware of how you present to others - big boy voice, don't stare!
|
||
|
* as a mentor, you are responsible for the tenor of the
|
||
|
learning environment - ya gotta enforce!
|
||
|
* "do you have any ideas for what to work on?" if not, share
|
||
|
ideas that would be within reach of that person
|
||
|
* many want to learn prog for "practical" reasons, but not all!
|
||
|
* if a noob seems to be using a bad/weird tool, ask about it
|
||
|
& chat. (don't be dismissive or just suggest another tool
|
||
|
w/no explanation. give context.)
|
||
|
|
||
|
---
|
||
|
|
||
|
#secrets you should tell learners
|
||
|
|
||
|
* programmers use linux
|
||
|
* "which distro?" - k/l/ubuntu is well-supported
|
||
|
* "which language?" = "i'm not sure what to learn first".
|
||
|
start with bash!
|
||
|
* how programmers use IRC
|
||
|
* don't get taken in by those who use the big boy voice
|
||
|
* you don't have to take hazing/trolling/dickishness
|
||
|
* much of programming is not writing difficult algorithms
|
||
|
* much of programming is not hot shit. boring, useless, not wizardry.
|
||
|
* you don't have to memorize all the commands in the book
|
||
|
* linux commands are programs
|
||
|
* what built-in methods are
|
||
|
* don't update linux
|
||
|
* shell tips: .. , tab complete, history
|
||
|
* dev environment: text editors, git & github
|
||
|
* how "professional websites" get built: dev vs production, bug trackers, etc.
|
||
|
* what is localhost and how to run a dev version of your thing
|
||
|
* everyone googles all the time
|
||
|
* pros don't just have all errors & solutions memorized.
|
||
|
they've just learned through suffering through many errors.
|
||
|
one day this will be you! :D
|
||
|
* no: "i'm stuck on x but it's supposed to be easy!" it's
|
||
|
frustrating, but the more time you spend, the faster
|
||
|
you'll get. you will learn through pain :P
|
||
|
* there are common patterns in programming.
|
||
|
* if you don't get it, it doesn't make you dumb.
|
||
|
* you don't always have to know every detail of a thing to use it
|
||
|
* server program vs server computer
|
||
|
* different ways that the word "API" is used
|
||
|
* package manager as "free app store"
|
||
|
* solving problems w/a bag of command line apps vs giant gui program
|
||
|
* common command line apps - mplayer, imagemagick, youtube-dl, etc.
|
||
|
* large software & bags of utilities (frameworks, d3, etc.) vs small libraries
|
||
|
* types of work that's out there (front end, back end, sys admins)
|
||
|
* existing controversies & hierarchies in the field
|
||
|
* command line seems hard, but is easy. programming seems easy, but is hard.
|
||
|
|
||
|
---
|
||
|
|
||
|
#running a collaborative learning group
|
||
|
|
||
|
* space
|
||
|
* mentors
|
||
|
* learners
|
||
|
* calendar
|
||
|
* noise
|
||
|
* surprise treats are great
|
||
|
* encourage co-learning
|