Slide 1

Slide 1 text

Teaching People Git Emma Jane Hogbin Westby // @emmajanehw // emmajane www.gitforteams.com

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

“I’ve tried! I can’t learn this stuff.” A typical student in one of my workshops.

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

It is hard to learn. It is harder to learn Git.

Slide 6

Slide 6 text

Git supports our work. For most of us: git is not our work. It is merely a “stupid content tracker”.

Slide 7

Slide 7 text

It’s hard to “hello world” complicated processes. Git is typically used on real work where the stakes are high. Git is typically taught as a series of commands to memorise.

Slide 8

Slide 8 text

The “Hello World” for Git Workshops $ git init $ touch file $ git add . $ git commit -m “First!”

Slide 9

Slide 9 text

Bloom’s Taxonomy Source: http://lb.cm/bt Knowledge Work Foundation Skills

Slide 10

Slide 10 text

Motivating Adult Learners to Learn • Need to know: Adults need to know the reason for learning something. • Foundation: Trial and error provides the basis for learning activities. • Self-concept: Adults need to be responsible for their decisions on education; involvement in the planning and evaluation of their instruction. • Readiness: Adults are most interested in learning subjects having immediate relevance to their work and/or personal lives. • Orientation: Adult learning is problem-centered rather than content-oriented. • Motivation: Adults respond better to internal versus external motivators. http://en.wikipedia.org/wiki/Andragogy

Slide 11

Slide 11 text

Constructivism Piaget, Papert, Montessori http://en.wikipedia.org/wiki/Constructivism_%28philosophy_of_education%29

Slide 12

Slide 12 text

Source: http://bit.ly/1CU1gYJ

Slide 13

Slide 13 text

Source: http://bit.ly/1Cn5vsg

Slide 14

Slide 14 text

I’ve tried! I can’t learn this stuff.

Slide 15

Slide 15 text

“Please memorise all Git commands and use only rebasing when merging your work.” ~ No client ever

Slide 16

Slide 16 text

Start with the whole to solve real problems.

Slide 17

Slide 17 text

Your problems are 90% social.

Slide 18

Slide 18 text

Teach teamwork first. Git Shell, cross- platform

Slide 19

Slide 19 text

Put the commands in context.

Slide 20

Slide 20 text

What’s your role?

Slide 21

Slide 21 text

Who else is on your code team? Write down a list of all of the people on your code team. This list may include: • developers • designers • project managers • clients

Slide 22

Slide 22 text

What are your tasks? download work create snapshot share work

Slide 23

Slide 23 text

Where do you fit in? Maybe you do everything. Maybe you only do some things. Write a list of all the tasks you are actually responsible for. This might include: • Writing code. • Reviewing code. • Pushing tested code to the server. • Fixing broken code.

Slide 24

Slide 24 text

What are your tools and restraints? Often there are other things we need to fit into our workflow. Create a third list of any tools and restraints you are aware of. This list might include: • Version control software (we’ll always assume Git) • Code hosting system (Bitbucket, GitHub, self-hosted) • Server ecosystem (dev / staging / live) • Code editors & integrated developer environments (vim, Dreamweaver, Sublime, PHPstorm) • Automated testing systems or review “gates”

Slide 25

Slide 25 text

I tricked you. Now you’ve got a cheat sheet of topics to put into
 your diagrams and your documentation.

Slide 26

Slide 26 text

Sketch out your workflow • Identify the roles on your team. • Identify the relationships between the team members. • Draw arrows to show how code flows between team members. • Time: 5 minutes

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Pedagogy of the Oppressed Paulo Freire http://en.wikipedia.org/wiki/Pedagogy_of_the_Oppressed

Slide 29

Slide 29 text

Sketch out your branch management strategy • Identify the roles on your team. • Identify the relationships between the team members. • Draw arrows to show how code flows between team members. • Time: 5 minutes

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Co-Create Resources

Slide 33

Slide 33 text

Recommendations for Teaching Git • Put the learner first. • Have learners “build” their knowledge by applying their own expert knowledge about their team to a diagram. • Once you know the learner’s context, teach relevant workflows. • Co-create visual maps and documentation to help the learner build their own understanding of Git. • Teach people to talk to one-another about their work flow.

Slide 34

Slide 34 text

Anti-patterns for Teaching Git • “It’s easy!” • “It’s just a directed acyclic graph!” • “You should use rebasing. It’s really important.” • “Don’t ____. It’s really dangerous.”

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Recommendations for Git • Reduce the barrier to entry. • Reclaim the word “git” and make it a friendly place to spend time. • Modernise the language in Git to remove the rough edges. • Make the help experience more consistent. • Create a centralised repository for learning which is vendor-agnostic.

Slide 37

Slide 37 text

Teaching People Git Emma Jane Hogbin Westby // @emmajanehw // emmajane www.gitforteams.com