SlideShare a Scribd company logo
Git Makes Me Angry Inside
@emmajanehw
http://drupalize.me
http://developerworkflow.com/
room password: psav1755
Does Git make you angry inside? In this workshop you will get a gentle introduction to
working efficiently as a Web developer in small teams, or as a solo developer. We'll focus on
real world examples you can actually use to make your work faster and more efficient.
Windows? OSX? Linux? No problem, we'll get you up and running with Git, no matter what
your system. Yes, this is an introductory session. This is for people who feel shame that they
don't know how to "clone my github project", wish they too could "get the gist", and get mad
when people say "just diff me a patch" as if it's something as easy as making a mai thai even
though you have no rum. No, you don't have to have git installed to attend. You don't even
need to know where the command line is on your computer.
“I’ve Tried, And I Can’t Learn This Stuff”
It’s not your fault. Honest.
The way we teach web stuff isn’t the way that you probably need to be exposed to the
information in order to learn it.
Blame the teachers, not yourself.
Or maybe not blame but, be persistent when working to solve important and sticky problems.
How we typically teach people how to tech has
nothing to do with adult education best practices.
RTFM: read the manual
Here are all the commands, here are all the options. Memorize everything, and figure out
later how to apply the knowledge.
Self-taught learning involves a lot of Googling,
guessing, and teeth gnashing.
Guess at what the problem is.
Search on the internet.
Find someone else’s description of how they solved, what you hope is a similar problem.
Adults learn best when they can be selfish.
Andragogy assumes the following about the design of learning:
Adults have the need to know why they are learning something.
Adults learn through doing.
Adults are problem-solvers.
Adults learn best when the subject is of immediate use.
This is not your problem:
My client wants me to memorize all the parameters
for using Git at the command line.
Your problem might sound like: My client keeps changing his mind, and but they don’t want
to pay me to redo the work.
Your problem doesn’t sound like: My client wants me to memorize all the parameters for
using Git at the command line.
Solve. Real. Problems.
Define your real problem clearly.
Learn how to use a tool to get your problem solved.
Try solving the problem. Take notes about how smooth it was to solve your problem. Write
recommendations to your future self on how you’d solve the problem in the future now that
you know what you know.
Agenda
• Work flow and branch management
• Disaster mitigation
• Q&A / therapy session
Your problems are 90% social.
What’s your role?
What are your tasks?
download
work
create
snapshot
share
work
What’s your workflow?
How do we make Git do that?
Set the stage!
Before we can set our workflow we need to know who we’re dealing with and
what they’re supposed to be doing.
Who’s 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
Time: 5 minutes
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.
Time: 1 minute
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”
What’s your workflow?
With the team members identified, it’s time to sketch out how these people
(ideally) work together.
Solo developer workflow
Partner workflow with no central server
Centralized workflow with no local commits
Decentralized with human gatekeeper
Decentralized with automated gatekeeper
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: 10 minutes
Branch management
• http://nvie.com/posts/a-
successful-git-branching-model
• http://scottchacon.com/
2011/08/31/github-flow.html
Disaster mitigation
• What Version of the File Is On My
Server?
• What Was I Thinking When I Wrote
This?
• *&^! That’s Wrong
• Untested Code (Eventually) Breaks
Stuff
• My Client Changed Their Mind ...
Again
• I Changed Something, And Stuff
Broke
• My Computer Died ... Now What?
• Two Clients Want Something
Similar...Leverage Your Work
• My [Collaborator] Overwrote My
Work
• http://developerworkflow.com
Problem:
What version of the file is on my server?
• “diff” -- what's the difference?
• never edit directly on the server, always “pull” from another location
• install only code which has a version associated with it (e.g. module.info)
Problem:
What Was I Thinking When I Wrote This?
• add in-code documentation
• use frequent commit messages, but only share (or “push”) relatively stable
code
• put radically different, or unrelated, ideas into different branches
• put related ideas, which are allowed to evolve, into the same branch, but add
tags to show milestones
• for very significant milestones, you may want to have different (numbered)
branches
Problem:
Untested Code (Eventually) Breaks Stuff
• create a development environment on another machine.
• copy your data down (backup and migrate)
• keep everything versioned (have a central repository that is web-accessible
which you can “pull” changes from for both your local env + dev server)
• upload your tested configuration changes.
Problem:
My Client Changed Their Mind ... Again
• You need a giant undo button to be able to roll back your code to a previous
state.
• build all three designs (get basics right, then modify only bits but tag between
each)
• add lots of “milestones” to your code so that you can see easily where things
changed
Problem:
I Changed Something, And Stuff Broke.
• Make only very small changes before making commits.
• Commits in distributed version control systems are like an “undo” button you
can apply after restarting your computer.
• Make only related changes within one commit. e.g. only font changes; vs.
only colour changes
Problem:
My Computer Died...Now What?
• having your configuration files saved (and perhaps versioned) means you can
quickly recover an entire system
Problem:
Two Clients Want Something Similar...
• one central repo
• create branches for each client
• where it makes sense, merge common functionality back into the main
branch / trunk
Problem:
My [Collaborator] Overwrote My Work.
• You’re working with a very tiny team and you think you don’t need a whole
source control system.
• Except you keep overwriting each others’ work.
• Create a centralized repository that you both check your work into and push
from that centralized server to the “live” site.
• On a regular basis “pull” your partner’s work from the centralized repo.
Homework
Write a list of all the problems you'd like to solve. Make sure your “problem”
includes:
• A description of all the people involved.
• A description of what makes the problem “bad”.
• A description of what the situation would look like once “fixed”.
Q&A + Git Therapy Session
You can make Git do what you want...now that you
know what you want.
@emmajanehw
http://drupalize.me
http://developerworkflow.com/

More Related Content

PDF
Drupal Flyover, CMS Expo
PDF
Learning PHP for Drupal Theming, DC Chicago 2009
PDF
Managing a Project the Drupal Way - Drupal Open Days Ireland
PDF
Getting a CLUE at the Command Line
PDF
Intro to Theming Drupal, FOSSLC Summer Camp 2010
PDF
Design to Theme @ CMSExpo
PDF
Drupal Front End PHP
PDF
Forensic Theming - DrupalCon London
Drupal Flyover, CMS Expo
Learning PHP for Drupal Theming, DC Chicago 2009
Managing a Project the Drupal Way - Drupal Open Days Ireland
Getting a CLUE at the Command Line
Intro to Theming Drupal, FOSSLC Summer Camp 2010
Design to Theme @ CMSExpo
Drupal Front End PHP
Forensic Theming - DrupalCon London

What's hot (19)

PDF
Absolute Beginners Guide to Drupal
ODP
Drupal Theme Development - DrupalCon Chicago 2011
PDF
Building mobile applications with DrupalGap
PDF
Frontend Engineer Toolbox
KEY
Grok Drupal (7) Theming (presented at DrupalCon San Francisco)
PDF
Grok Drupal (7) Theming
KEY
Hello Drupal
PDF
Drupal 8 theming deep dive
PPTX
Ready. Set. Drupal! An Intro to Drupal 8, Part 2
PPT
jQuery For Beginners - jQuery Conference 2009
PDF
Drupal Presentation for CapitalCamp 2011: Features Driven Development
PDF
Building a Custom Theme in Drupal 8
PPTX
Future proofing design work with Web components
PPT
WordCamp Miami 09 - WP Framework
PDF
Grok Drupal (7) Theming - 2011 Feb update
PDF
HTML5, just another presentation :)
PDF
Introduction to Drupal (7) Theming
PDF
Twig for Drupal 8 and PHP | Presented at OC Drupal
PDF
There's a Module for That, MIMA Summit 2010
Absolute Beginners Guide to Drupal
Drupal Theme Development - DrupalCon Chicago 2011
Building mobile applications with DrupalGap
Frontend Engineer Toolbox
Grok Drupal (7) Theming (presented at DrupalCon San Francisco)
Grok Drupal (7) Theming
Hello Drupal
Drupal 8 theming deep dive
Ready. Set. Drupal! An Intro to Drupal 8, Part 2
jQuery For Beginners - jQuery Conference 2009
Drupal Presentation for CapitalCamp 2011: Features Driven Development
Building a Custom Theme in Drupal 8
Future proofing design work with Web components
WordCamp Miami 09 - WP Framework
Grok Drupal (7) Theming - 2011 Feb update
HTML5, just another presentation :)
Introduction to Drupal (7) Theming
Twig for Drupal 8 and PHP | Presented at OC Drupal
There's a Module for That, MIMA Summit 2010
Ad

Similar to Git Makes Me Angry Inside (20)

PDF
A Git MVP Workflow
PPTX
Azure DevOps Realtime Work Item Sync: the good, the bad, the ugly!
PPTX
Introducing Systems Analysis Design Development
PPTX
Introducing systems analysis, design & development Concepts
PDF
Programming Sessions KU Leuven - Session 01
PDF
Usable Software Design
PPTX
Engage 2018 adm04 - The lazy admin wins
PDF
Engage 2018 adm04 The lazy admin wins
PPTX
Autotools, Design Patterns and more
PPTX
A modern architecturereview–usingcodereviewtools-ver-3.5
 
PPT
First app
PPTX
Que nos espera a los ALM Dudes para el 2013?
KEY
Driving application development through behavior driven development
PPTX
Alm with tfs 2013
PDF
Full stack conference talk slides
PPTX
2015 msu-code-review
PPTX
Git for work groups ironhack talk
PPT
Introduction to the intermediate Python - v1.1
PDF
Easy joget v3 for the absolute beginner
A Git MVP Workflow
Azure DevOps Realtime Work Item Sync: the good, the bad, the ugly!
Introducing Systems Analysis Design Development
Introducing systems analysis, design & development Concepts
Programming Sessions KU Leuven - Session 01
Usable Software Design
Engage 2018 adm04 - The lazy admin wins
Engage 2018 adm04 The lazy admin wins
Autotools, Design Patterns and more
A modern architecturereview–usingcodereviewtools-ver-3.5
 
First app
Que nos espera a los ALM Dudes para el 2013?
Driving application development through behavior driven development
Alm with tfs 2013
Full stack conference talk slides
2015 msu-code-review
Git for work groups ironhack talk
Introduction to the intermediate Python - v1.1
Easy joget v3 for the absolute beginner
Ad

More from Emma Jane Hogbin Westby (20)

PDF
Was it something I said?
PDF
PDF
Lessons From an Unlikely Superhero
PDF
PSD to Theme: The SMACSS Way
PDF
Git Makes Me Angry Inside - DrupalCon Prague
PDF
Git Makes Me Angry Inside
PDF
Was It Something I Said? The Art of Giving (and getting) A Critique
PDF
Beyond the Bikeshed
PDF
Gamestorming Meets Quiet
PDF
Work Flow for Solo Developers and Small Teams
PDF
Evaluating Base Themes
PDF
Speaker Check-in - 3 - Munich
PDF
Responsive Web Design for Drupal, CMS Expo
PDF
Selling Hopes and Dreams - DrupalCamp Toronto
PDF
Forensic Theming for Drupal
PDF
Advanced Layout Techniques @ CMSExpo
PDF
Drupal Help System
PDF
Lessons from Life Coaching for Linux
PDF
Beautiful In Print
PDF
We Economy - Drupalsouth
Was it something I said?
Lessons From an Unlikely Superhero
PSD to Theme: The SMACSS Way
Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside
Was It Something I Said? The Art of Giving (and getting) A Critique
Beyond the Bikeshed
Gamestorming Meets Quiet
Work Flow for Solo Developers and Small Teams
Evaluating Base Themes
Speaker Check-in - 3 - Munich
Responsive Web Design for Drupal, CMS Expo
Selling Hopes and Dreams - DrupalCamp Toronto
Forensic Theming for Drupal
Advanced Layout Techniques @ CMSExpo
Drupal Help System
Lessons from Life Coaching for Linux
Beautiful In Print
We Economy - Drupalsouth

Recently uploaded (20)

PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Modernizing your data center with Dell and AMD
PDF
KodekX | Application Modernization Development
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Big Data Technologies - Introduction.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Diabetes mellitus diagnosis method based random forest with bat algorithm
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Modernizing your data center with Dell and AMD
KodekX | Application Modernization Development
Building Integrated photovoltaic BIPV_UPV.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Weekly Chronicles - August'25 Week I
“AI and Expert System Decision Support & Business Intelligence Systems”
Big Data Technologies - Introduction.pptx
A Presentation on Artificial Intelligence
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Git Makes Me Angry Inside

  • 1. Git Makes Me Angry Inside @emmajanehw http://drupalize.me http://developerworkflow.com/ room password: psav1755 Does Git make you angry inside? In this workshop you will get a gentle introduction to working efficiently as a Web developer in small teams, or as a solo developer. We'll focus on real world examples you can actually use to make your work faster and more efficient. Windows? OSX? Linux? No problem, we'll get you up and running with Git, no matter what your system. Yes, this is an introductory session. This is for people who feel shame that they don't know how to "clone my github project", wish they too could "get the gist", and get mad when people say "just diff me a patch" as if it's something as easy as making a mai thai even though you have no rum. No, you don't have to have git installed to attend. You don't even need to know where the command line is on your computer.
  • 2. “I’ve Tried, And I Can’t Learn This Stuff” It’s not your fault. Honest. The way we teach web stuff isn’t the way that you probably need to be exposed to the information in order to learn it. Blame the teachers, not yourself. Or maybe not blame but, be persistent when working to solve important and sticky problems.
  • 3. How we typically teach people how to tech has nothing to do with adult education best practices. RTFM: read the manual Here are all the commands, here are all the options. Memorize everything, and figure out later how to apply the knowledge.
  • 4. Self-taught learning involves a lot of Googling, guessing, and teeth gnashing. Guess at what the problem is. Search on the internet. Find someone else’s description of how they solved, what you hope is a similar problem.
  • 5. Adults learn best when they can be selfish. Andragogy assumes the following about the design of learning: Adults have the need to know why they are learning something. Adults learn through doing. Adults are problem-solvers. Adults learn best when the subject is of immediate use.
  • 6. This is not your problem: My client wants me to memorize all the parameters for using Git at the command line. Your problem might sound like: My client keeps changing his mind, and but they don’t want to pay me to redo the work. Your problem doesn’t sound like: My client wants me to memorize all the parameters for using Git at the command line.
  • 7. Solve. Real. Problems. Define your real problem clearly. Learn how to use a tool to get your problem solved. Try solving the problem. Take notes about how smooth it was to solve your problem. Write recommendations to your future self on how you’d solve the problem in the future now that you know what you know.
  • 8. Agenda • Work flow and branch management • Disaster mitigation • Q&A / therapy session
  • 9. Your problems are 90% social.
  • 11. What are your tasks? download work create snapshot share work
  • 13. How do we make Git do that?
  • 14. Set the stage! Before we can set our workflow we need to know who we’re dealing with and what they’re supposed to be doing.
  • 15. Who’s 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 Time: 5 minutes
  • 16. 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. Time: 1 minute
  • 17. 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”
  • 18. What’s your workflow? With the team members identified, it’s time to sketch out how these people (ideally) work together.
  • 20. Partner workflow with no central server
  • 21. Centralized workflow with no local commits
  • 24. 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: 10 minutes
  • 25. Branch management • http://nvie.com/posts/a- successful-git-branching-model • http://scottchacon.com/ 2011/08/31/github-flow.html
  • 26. Disaster mitigation • What Version of the File Is On My Server? • What Was I Thinking When I Wrote This? • *&^! That’s Wrong • Untested Code (Eventually) Breaks Stuff • My Client Changed Their Mind ... Again • I Changed Something, And Stuff Broke • My Computer Died ... Now What? • Two Clients Want Something Similar...Leverage Your Work • My [Collaborator] Overwrote My Work • http://developerworkflow.com
  • 27. Problem: What version of the file is on my server? • “diff” -- what's the difference? • never edit directly on the server, always “pull” from another location • install only code which has a version associated with it (e.g. module.info)
  • 28. Problem: What Was I Thinking When I Wrote This? • add in-code documentation • use frequent commit messages, but only share (or “push”) relatively stable code • put radically different, or unrelated, ideas into different branches • put related ideas, which are allowed to evolve, into the same branch, but add tags to show milestones • for very significant milestones, you may want to have different (numbered) branches
  • 29. Problem: Untested Code (Eventually) Breaks Stuff • create a development environment on another machine. • copy your data down (backup and migrate) • keep everything versioned (have a central repository that is web-accessible which you can “pull” changes from for both your local env + dev server) • upload your tested configuration changes.
  • 30. Problem: My Client Changed Their Mind ... Again • You need a giant undo button to be able to roll back your code to a previous state. • build all three designs (get basics right, then modify only bits but tag between each) • add lots of “milestones” to your code so that you can see easily where things changed
  • 31. Problem: I Changed Something, And Stuff Broke. • Make only very small changes before making commits. • Commits in distributed version control systems are like an “undo” button you can apply after restarting your computer. • Make only related changes within one commit. e.g. only font changes; vs. only colour changes
  • 32. Problem: My Computer Died...Now What? • having your configuration files saved (and perhaps versioned) means you can quickly recover an entire system
  • 33. Problem: Two Clients Want Something Similar... • one central repo • create branches for each client • where it makes sense, merge common functionality back into the main branch / trunk
  • 34. Problem: My [Collaborator] Overwrote My Work. • You’re working with a very tiny team and you think you don’t need a whole source control system. • Except you keep overwriting each others’ work. • Create a centralized repository that you both check your work into and push from that centralized server to the “live” site. • On a regular basis “pull” your partner’s work from the centralized repo.
  • 35. Homework Write a list of all the problems you'd like to solve. Make sure your “problem” includes: • A description of all the people involved. • A description of what makes the problem “bad”. • A description of what the situation would look like once “fixed”.
  • 36. Q&A + Git Therapy Session
  • 37. You can make Git do what you want...now that you know what you want. @emmajanehw http://drupalize.me http://developerworkflow.com/