SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
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/

Más contenido relacionado

La actualidad más candente

Future proofing design work with Web components
Future proofing design work with Web componentsFuture proofing design work with Web components
Future proofing design work with Web components
btopro
 
There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010There's a Module for That, MIMA Summit 2010
There's a Module for That, MIMA Summit 2010
Emma Jane Hogbin Westby
 

La actualidad más candente (20)

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

Similar a Git Makes Me Angry Inside

Introducing Systems Analysis Design Development
Introducing Systems Analysis Design DevelopmentIntroducing Systems Analysis Design Development
Introducing Systems Analysis Design Development
bsadd
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
Einar Ingebrigtsen
 

Similar a Git Makes Me Angry Inside (20)

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

Más de Emma Jane Hogbin Westby

Git Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon PragueGit Makes Me Angry Inside - DrupalCon Prague
Git Makes Me Angry Inside - DrupalCon Prague
Emma Jane Hogbin Westby
 
Was It Something I Said? The Art of Giving (and getting) A Critique
Was It Something I Said? The Art of Giving (and getting) A CritiqueWas It Something I Said? The Art of Giving (and getting) A Critique
Was It Something I Said? The Art of Giving (and getting) A Critique
Emma Jane Hogbin Westby
 
Responsive Web Design for Drupal, CMS Expo
Responsive Web Design for Drupal, CMS ExpoResponsive Web Design for Drupal, CMS Expo
Responsive Web Design for Drupal, CMS Expo
Emma Jane Hogbin Westby
 
Selling Hopes and Dreams - DrupalCamp Toronto
Selling Hopes and Dreams - DrupalCamp TorontoSelling Hopes and Dreams - DrupalCamp Toronto
Selling Hopes and Dreams - DrupalCamp Toronto
Emma Jane Hogbin Westby
 

Más de Emma Jane Hogbin Westby (20)

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

Último

Último (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

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/