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.
5.5 KiB
5.5 KiB
#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