SlideShare a Scribd company logo
Work Flow for
Solo Developers and Small Teams




  @emmajanedotnet
  emma@emmajane.net
Today
1. Developer’s Environment
   (The Command Line)
2. Version Control Basics
3. Developer Tools for Larger Teams
A Developer’s Environment
Together, Yet Separate
The command line is used in many free,
online resources.
GUIs reveal complexity in different ways.


                                  SourceTree, OSX




SmartGit, cross-platform
$_
In the Beginning,
Was the Command Line
A command-line interface (CLI) is a means of
interaction with a computer program where the user
(or client) issues commands to a program in the form
of successive lines of text (command lines).
The command-line interface evolved from a form of
dialog once conducted by humans over teleprinter
machines, in which human operators remotely
exchanged information, usually one line of text at a
time.
http://en.wikipedia.org/wiki/Command-line_interface
Commands Affect Your Environment




http://en.wikipedia.org/wiki/Logo_(programming_language)
Commands Affect Your Environment




              http://www.youtube.com/watch?v=LRhbcDzbGSU
Command Line Interface




   http://en.wikipedia.org/wiki/Command_Prompt
define:prompt
a transitive verb meaning To move to action.


? forward 90
> open mailbox


At the command line, you are constantly being
asked by the computer, “What action would you like
to take next?”
Commands
(verb)
●   One-word actions:
    –   sing
    –   jump
    –   look
●   One-word commands:
    –   help
    –   exit
    –   history
Commands With Parameters
(verb noun)
●   An action, and a direct object:
    –   take book
    –   read pamphlet
    –   open window
●   Commands with parameters:
    –   cd /var/www
    –   man <command_name>
    –   mv file_current_name.jpg file_new_name.jpg
Commands With Modifiers + Parameters
(verb adjective noun)
●   Refining the request:
    –   go down stairs
    –   take blue pill
    –   open left door
●   Adding a flag/switch/modifier:
    –   mkdir -p parent_directory/sub-directory
    –   tar xvf file_to_extract.tar.gz
    –   ls -lh
Ten Commands I Use All the Time
ls      list files
cd      change the current directory
mv      move a file to a new location (and/or rename)
cp      copy a file
pwd     print working directory (answers: where am I?)
rm      remove file
clear   refresh the screen
man     read the manual page for a specific command
tar     work with packages of files
chmod   change the “mode” (aka permissions) of a file or directory
“All” The Commands
http://www.commandlinefu.com/commands/browse
This site includes a “rating” function.
Learning the CLI tools
makes your knowledge portable.
●   OSX and Linux both use the same flavour of
    command line environment (“the shell”).
●   Not all Web server applications have a graphical
    administrative interface, so learning to use the
    command line allows you to run server
    applications in your local developer environment.
●   Sequences of commands can be captured as
    scripts, which you can run on any compatible
    machine without having to point-and-click.
Version Control Basics
Benefits of Version Control
●   Backup and restore
●
    Syncronization across multiple systems
●
    Short-term undo to test implications
●   Long-term undo to reverse bugs
●   Track changes to see why/how software evolved
●   Track ownership to give ‘credit’ to change makers
●   Sandboxing our code to test changes without
    affecting others
There is no excuse
for not having version control.

The cheapest way to get version control is to use an
automated backup system, like Dropbox, for your
code.
Terminology
●
    Repository. The database of changes to your files.
●
    Server. The computer storing the repository.
●
    Client. The computer connecting to the repository.
●
    Working copy. Your local copy, where changes are
    made.
●
    Trunk (or “main”). The current, primary source for
    unchanged code.
●
    Head. The latest revision in the repository.
Basic Actions
●
    Add. Put a file into the repo.
●
    Revision. Checks what version a file is on.
●
    Check out. Download files from the main repository.
●
    Check in. Upload changed files to the main repository.
●
    Changelog. A list of changes made to a file since it was
    created.
●
    Update/sync. Synchronize your files with the ones from
    the main repository.
●
    Revert. Throw away your local changes and reload the
    latest version from the repository.
Workflow: The Solo Developer



Create project   Add files   Do your work   Upload files




                             Do more work
define:work
Basic Check-ins



                       Main Trunk



 Milk         Milk          Milk    Milk
              Eggs          Eggs    Eggs
                            Juice   Soup



    r1            r2           r3     r4
Diffs Show the Difference
Between Two Versions of a Project

                        Main Trunk



Milk            Milk              Milk              Milk
                Eggs              Eggs    - Juice   Eggs
       + Eggs           + Juice
                                  Juice   + Soup    Soup



  r1               r2                r3              r4
define:work
Tagging

James’s Final    Emma’s          Groceries
Grocery List    Additions        Purchased



                    Main Trunk



  Milk          Milk             Milk
  Eggs          Eggs             Eggs
  Soup          Soup             Soup
                Bread            Bread
                                 M&Ms
     r4            r7              r9
define:work                             Milk
Branching                               Eggs
                                        Soup
                                        Bread
                              St o re   M&Ms    r9
                     Ca ndy

              Main Trunk



   Milk          Milk
   Eggs          Eggs
   Soup          Soup
                 Bread


     r4             r7
Workflow: Read-only Projects
“Fork Me” on GitHub
                                         Improved

                           yF  o rk      version of
                          M               project
                                   ch)
                            (bran



       Random Project on the Internet
Workflow: Partner



1. James starts a grocery list                     2. Emma already had a grocery list started.
                                                      She asks to see James’s list.



    3. James remembers a couple more items.        4. Emma adds a few things from her list.




                        5. The grocery lists are combined and James goes shopping.
Collaborative Actions
●
    Branch. Create a separate copy of a repository for personal use.
●
    Diff/change/delta. Identifies the differences between two
    versions of a file.
●
    Merge/patch. Apply the changes from one version of a file, to
    another.
●
    Conflict. When two versions of a file have proposed changes at
    the same place.
●
    Resolve. Deciding which version of conflicting changes should
    be applied, and which should be discarded.
Merging           Milk
                  Eggs       + M&Ms      Milk
                  Soup                   Eggs
                                         Soup
                                         M&Ms




                 Main Trunk (James’s List)


Milk                Milk                        Milk
Eggs                Eggs                        Eggs
       + Bread                        + M&Ms
Soup                Soup                        Soup
                    Bread                       Bread
                                                M&Ms
Resolving Conflicts
                     Milk     + M&Ms
                                         Milk
                     Eggs
                                         Eggs
                     Soup
                                         Soup
                                         M&Ms




                 Main Trunk (James’s List)

Milk                Milk                           Milk
Eggs   + Bread      Eggs                           Eggs
                                         + M&Ms
Soup   - Soup       Bread                          Bread
                                         + Bread   M&Ms
Sample Project




     http://betterexplained.com/articles/a-visual-guide-to-version-control/
Workflow: Centralized
no local commits


                   checko
                         ut




                        it
                   comm
Workflow:
Decentralized with a shared mainline

                   clone (
                           or   ) pull
          commit




                      push




          commit
Developer Tools for Larger Teams
Complicated problems are complicated.
●   Bigger code base = more contributors ->
     formalized code review process
●   Bigger projects = more stakeholders ->
     project management
●   Bigger projects = more infrastructure ->
     devops
Formal Code Review Process
●   Code should never be released into the wild
    without having a second set of eyes on it.
●   It’s very easy to overengineer your workflow
    process.
●   Make sure you do what’s right, not what’s easy,
    for your team.
Workflow:
Decentralized with human gatekeeper

                              clone

    commit


                                          s)
                                     d ate
                             (fo r up
                        pull
                                                                 s
                                                             ng e
                                                       e cha
                                               mer g


                                                       reject changes
             request merge
    commit
Workflow:
Decentralized with automated gatekeeper

                                        clone

                   commit
            view




                                                    s)
                                                 ate
  request re




                                               d
                                       (fo r up
                                  pull

                                                            sh
                                                         pu


                            merge request
                                                           reject failed patches
                   commit
Project Management
●   software
    –   Trac, Basecamp, JIRA, (etc, etc)
●   philosophies
    –   Waterfall, Agile (XP, Scrum, Kanban)
* Driven Development
●   Test-driven development (TDD)
    Write an (initially failing) automated test case that defines a
    desired improvement or new function, then produces the minimum
    amount of code to pass that test, and finally refactors the new
    code to acceptable standards.
●   Behaviour-driven development (BDD)
    Behaviour-driven development specifies that tests of any unit of
    software should be specified in terms of the desired behaviour of
    the unit.
DevOps
Developers + Operations (System Administrators)


●
    Culture
●
    Automation
●
    Measurement
●
    Sharing
DevOps Tools
●   Deployment automation
    –   fai, kickstart, preseed, cobbler
●   Configuration management
    –   puppet, chef, cfengine, bcfg2
●   Build automation
    –   jenkins, hudson, maven, ant, cruisecontrol
Start Today, Refine Later Today.
●   Don’t try to change everything at once.
●
    Look for easy things to change and implement
    little bits at a time.
●   Sometimes you need to have short term
    inefficiencies (learning a new tool) to gain long
    term productivity.
●   Don’t let the enemy of progress be perfection.
Let’s Keep In Touch
●   emma@designtotheme.com
●
    @emmajanedotnet
Credits
●   Type face:
    –   Neutra Text by House Industries.
●   Icons:
    –   “Gartoon” icon theme pack for GNOME from
        http://art.gnome.org/themes/icon
    –   http://openclipart.org/user-detail/yyycatch
●
    Diagram ideas:
    –   http://betterexplained.com/articles/a-visual-guide-to-version-control/
    –   http://wiki.bazaar.canonical.com/Workflows

More Related Content

ODP
Sahul
sahul azzez m.i
 
PDF
Perintah dasar linux
Acep Nugraha
 
DOCX
BASIC COMMANDS OF LINUX
Mr.AKHILESH KUMAR {Computer Lab Technician}
 
PPTX
Struktur so dan basic command linux
adam diarama
 
ODP
Perintah dasar Linux
Akhmad Khanif Zyen
 
PDF
Quick Guide with Linux Command Line
Anuchit Chalothorn
 
PDF
Linux programming - Getting self started
Emertxe Information Technologies Pvt Ltd
 
PPT
Red Hat Certified engineer course
Ali Abdo
 
Perintah dasar linux
Acep Nugraha
 
Struktur so dan basic command linux
adam diarama
 
Perintah dasar Linux
Akhmad Khanif Zyen
 
Quick Guide with Linux Command Line
Anuchit Chalothorn
 
Linux programming - Getting self started
Emertxe Information Technologies Pvt Ltd
 
Red Hat Certified engineer course
Ali Abdo
 

Similar to Work Flow for Solo Developers and Small Teams (20)

PPTX
Source Code Management Slides
daschuck
 
PDF
Git Going With DVCS v1.5.2
Matthew McCullough
 
KEY
Introduction To Git
Arnaud Seilles
 
PDF
Version Control History and Git Basics
Sreedath N S
 
PDF
Groovy 1.8 et 2.0 au BreizhC@mp 2012
Guillaume Laforge
 
ZIP
Introduction to Git
Randal Schwartz
 
ODP
Introduction GIT
Septi Maulina
 
PDF
Running The Show Configuration Management With Chef Presentation
railsconf
 
PPTX
Git & GitLab
Gaurav Wable
 
PDF
Git Pocket Guide A Working Introduction 1st Edition Richard E. Silverman
fingonbinka66
 
PDF
Git Going With DVCS v1.5.1
Matthew McCullough
 
PDF
Version Control By Example 1st Edition Eric Sink
asrialiltsu
 
PDF
GitHub for Beginners - The Open-Source Gateaway
Md. Fahim Bin Amin
 
PDF
Chef in the cloud and on the ground code freeze 2012
Michael Nygard
 
PPTX
Source control
Sachithra Gayan
 
PDF
Git sourcecontrolpreso
ColdFusionConference
 
PDF
Git. Transition.
Pavel Grushetzky
 
PDF
Git Going With DVCS v1.1
Matthew McCullough
 
PPTX
Git’in Jiggy With Git
RTigger
 
PDF
GTALUG Short Talk On Mercurial
Myles Braithwaite
 
Source Code Management Slides
daschuck
 
Git Going With DVCS v1.5.2
Matthew McCullough
 
Introduction To Git
Arnaud Seilles
 
Version Control History and Git Basics
Sreedath N S
 
Groovy 1.8 et 2.0 au BreizhC@mp 2012
Guillaume Laforge
 
Introduction to Git
Randal Schwartz
 
Introduction GIT
Septi Maulina
 
Running The Show Configuration Management With Chef Presentation
railsconf
 
Git & GitLab
Gaurav Wable
 
Git Pocket Guide A Working Introduction 1st Edition Richard E. Silverman
fingonbinka66
 
Git Going With DVCS v1.5.1
Matthew McCullough
 
Version Control By Example 1st Edition Eric Sink
asrialiltsu
 
GitHub for Beginners - The Open-Source Gateaway
Md. Fahim Bin Amin
 
Chef in the cloud and on the ground code freeze 2012
Michael Nygard
 
Source control
Sachithra Gayan
 
Git sourcecontrolpreso
ColdFusionConference
 
Git. Transition.
Pavel Grushetzky
 
Git Going With DVCS v1.1
Matthew McCullough
 
Git’in Jiggy With Git
RTigger
 
GTALUG Short Talk On Mercurial
Myles Braithwaite
 
Ad

More from Emma Jane Hogbin Westby (20)

PDF
Managing a Project the Drupal Way - Drupal Open Days Ireland
Emma Jane Hogbin Westby
 
PDF
Was it something I said?
Emma Jane Hogbin Westby
 
PDF
HOWTO Empathy
Emma Jane Hogbin Westby
 
PDF
Getting a CLUE at the Command Line
Emma Jane Hogbin Westby
 
PDF
Lessons From an Unlikely Superhero
Emma Jane Hogbin Westby
 
PDF
PSD to Theme: The SMACSS Way
Emma Jane Hogbin Westby
 
PDF
Git Makes Me Angry Inside - DrupalCon Prague
Emma Jane Hogbin Westby
 
PDF
Git Makes Me Angry Inside
Emma Jane Hogbin Westby
 
PDF
Was It Something I Said? The Art of Giving (and getting) A Critique
Emma Jane Hogbin Westby
 
PDF
Beyond the Bikeshed
Emma Jane Hogbin Westby
 
PDF
Gamestorming Meets Quiet
Emma Jane Hogbin Westby
 
PDF
Git Makes Me Angry Inside
Emma Jane Hogbin Westby
 
PDF
Evaluating Base Themes
Emma Jane Hogbin Westby
 
PDF
Speaker Check-in - 3 - Munich
Emma Jane Hogbin Westby
 
PDF
Drupal Flyover, CMS Expo
Emma Jane Hogbin Westby
 
PDF
Responsive Web Design for Drupal, CMS Expo
Emma Jane Hogbin Westby
 
PDF
Selling Hopes and Dreams - DrupalCamp Toronto
Emma Jane Hogbin Westby
 
PDF
Forensic Theming - DrupalCon London
Emma Jane Hogbin Westby
 
PDF
Forensic Theming for Drupal
Emma Jane Hogbin Westby
 
PDF
There's a Module for That, MIMA Summit 2010
Emma Jane Hogbin Westby
 
Managing a Project the Drupal Way - Drupal Open Days Ireland
Emma Jane Hogbin Westby
 
Was it something I said?
Emma Jane Hogbin Westby
 
Getting a CLUE at the Command Line
Emma Jane Hogbin Westby
 
Lessons From an Unlikely Superhero
Emma Jane Hogbin Westby
 
PSD to Theme: The SMACSS Way
Emma Jane Hogbin Westby
 
Git Makes Me Angry Inside - DrupalCon Prague
Emma Jane Hogbin Westby
 
Git Makes Me Angry Inside
Emma Jane Hogbin Westby
 
Was It Something I Said? The Art of Giving (and getting) A Critique
Emma Jane Hogbin Westby
 
Beyond the Bikeshed
Emma Jane Hogbin Westby
 
Gamestorming Meets Quiet
Emma Jane Hogbin Westby
 
Git Makes Me Angry Inside
Emma Jane Hogbin Westby
 
Evaluating Base Themes
Emma Jane Hogbin Westby
 
Speaker Check-in - 3 - Munich
Emma Jane Hogbin Westby
 
Drupal Flyover, CMS Expo
Emma Jane Hogbin Westby
 
Responsive Web Design for Drupal, CMS Expo
Emma Jane Hogbin Westby
 
Selling Hopes and Dreams - DrupalCamp Toronto
Emma Jane Hogbin Westby
 
Forensic Theming - DrupalCon London
Emma Jane Hogbin Westby
 
Forensic Theming for Drupal
Emma Jane Hogbin Westby
 
There's a Module for That, MIMA Summit 2010
Emma Jane Hogbin Westby
 
Ad

Recently uploaded (20)

PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 

Work Flow for Solo Developers and Small Teams

  • 1. Work Flow for Solo Developers and Small Teams @emmajanedotnet [email protected]
  • 2. Today 1. Developer’s Environment (The Command Line) 2. Version Control Basics 3. Developer Tools for Larger Teams
  • 5. The command line is used in many free, online resources.
  • 6. GUIs reveal complexity in different ways. SourceTree, OSX SmartGit, cross-platform
  • 7. $_
  • 8. In the Beginning, Was the Command Line A command-line interface (CLI) is a means of interaction with a computer program where the user (or client) issues commands to a program in the form of successive lines of text (command lines). The command-line interface evolved from a form of dialog once conducted by humans over teleprinter machines, in which human operators remotely exchanged information, usually one line of text at a time. http://en.wikipedia.org/wiki/Command-line_interface
  • 9. Commands Affect Your Environment http://en.wikipedia.org/wiki/Logo_(programming_language)
  • 10. Commands Affect Your Environment http://www.youtube.com/watch?v=LRhbcDzbGSU
  • 11. Command Line Interface http://en.wikipedia.org/wiki/Command_Prompt
  • 12. define:prompt a transitive verb meaning To move to action. ? forward 90 > open mailbox At the command line, you are constantly being asked by the computer, “What action would you like to take next?”
  • 13. Commands (verb) ● One-word actions: – sing – jump – look ● One-word commands: – help – exit – history
  • 14. Commands With Parameters (verb noun) ● An action, and a direct object: – take book – read pamphlet – open window ● Commands with parameters: – cd /var/www – man <command_name> – mv file_current_name.jpg file_new_name.jpg
  • 15. Commands With Modifiers + Parameters (verb adjective noun) ● Refining the request: – go down stairs – take blue pill – open left door ● Adding a flag/switch/modifier: – mkdir -p parent_directory/sub-directory – tar xvf file_to_extract.tar.gz – ls -lh
  • 16. Ten Commands I Use All the Time ls list files cd change the current directory mv move a file to a new location (and/or rename) cp copy a file pwd print working directory (answers: where am I?) rm remove file clear refresh the screen man read the manual page for a specific command tar work with packages of files chmod change the “mode” (aka permissions) of a file or directory
  • 18. Learning the CLI tools makes your knowledge portable. ● OSX and Linux both use the same flavour of command line environment (“the shell”). ● Not all Web server applications have a graphical administrative interface, so learning to use the command line allows you to run server applications in your local developer environment. ● Sequences of commands can be captured as scripts, which you can run on any compatible machine without having to point-and-click.
  • 20. Benefits of Version Control ● Backup and restore ● Syncronization across multiple systems ● Short-term undo to test implications ● Long-term undo to reverse bugs ● Track changes to see why/how software evolved ● Track ownership to give ‘credit’ to change makers ● Sandboxing our code to test changes without affecting others
  • 21. There is no excuse for not having version control. The cheapest way to get version control is to use an automated backup system, like Dropbox, for your code.
  • 22. Terminology ● Repository. The database of changes to your files. ● Server. The computer storing the repository. ● Client. The computer connecting to the repository. ● Working copy. Your local copy, where changes are made. ● Trunk (or “main”). The current, primary source for unchanged code. ● Head. The latest revision in the repository.
  • 23. Basic Actions ● Add. Put a file into the repo. ● Revision. Checks what version a file is on. ● Check out. Download files from the main repository. ● Check in. Upload changed files to the main repository. ● Changelog. A list of changes made to a file since it was created. ● Update/sync. Synchronize your files with the ones from the main repository. ● Revert. Throw away your local changes and reload the latest version from the repository.
  • 24. Workflow: The Solo Developer Create project Add files Do your work Upload files Do more work
  • 25. define:work Basic Check-ins Main Trunk Milk Milk Milk Milk Eggs Eggs Eggs Juice Soup r1 r2 r3 r4
  • 26. Diffs Show the Difference Between Two Versions of a Project Main Trunk Milk Milk Milk Milk Eggs Eggs - Juice Eggs + Eggs + Juice Juice + Soup Soup r1 r2 r3 r4
  • 27. define:work Tagging James’s Final Emma’s Groceries Grocery List Additions Purchased Main Trunk Milk Milk Milk Eggs Eggs Eggs Soup Soup Soup Bread Bread M&Ms r4 r7 r9
  • 28. define:work Milk Branching Eggs Soup Bread St o re M&Ms r9 Ca ndy Main Trunk Milk Milk Eggs Eggs Soup Soup Bread r4 r7
  • 29. Workflow: Read-only Projects “Fork Me” on GitHub Improved yF o rk version of M project ch) (bran Random Project on the Internet
  • 30. Workflow: Partner 1. James starts a grocery list 2. Emma already had a grocery list started. She asks to see James’s list. 3. James remembers a couple more items. 4. Emma adds a few things from her list. 5. The grocery lists are combined and James goes shopping.
  • 31. Collaborative Actions ● Branch. Create a separate copy of a repository for personal use. ● Diff/change/delta. Identifies the differences between two versions of a file. ● Merge/patch. Apply the changes from one version of a file, to another. ● Conflict. When two versions of a file have proposed changes at the same place. ● Resolve. Deciding which version of conflicting changes should be applied, and which should be discarded.
  • 32. Merging Milk Eggs + M&Ms Milk Soup Eggs Soup M&Ms Main Trunk (James’s List) Milk Milk Milk Eggs Eggs Eggs + Bread + M&Ms Soup Soup Soup Bread Bread M&Ms
  • 33. Resolving Conflicts Milk + M&Ms Milk Eggs Eggs Soup Soup M&Ms Main Trunk (James’s List) Milk Milk Milk Eggs + Bread Eggs Eggs + M&Ms Soup - Soup Bread Bread + Bread M&Ms
  • 34. Sample Project http://betterexplained.com/articles/a-visual-guide-to-version-control/
  • 35. Workflow: Centralized no local commits checko ut it comm
  • 36. Workflow: Decentralized with a shared mainline clone ( or ) pull commit push commit
  • 37. Developer Tools for Larger Teams
  • 38. Complicated problems are complicated. ● Bigger code base = more contributors -> formalized code review process ● Bigger projects = more stakeholders -> project management ● Bigger projects = more infrastructure -> devops
  • 39. Formal Code Review Process ● Code should never be released into the wild without having a second set of eyes on it. ● It’s very easy to overengineer your workflow process. ● Make sure you do what’s right, not what’s easy, for your team.
  • 40. Workflow: Decentralized with human gatekeeper clone commit s) d ate (fo r up pull s ng e e cha mer g reject changes request merge commit
  • 41. Workflow: Decentralized with automated gatekeeper clone commit view s) ate request re d (fo r up pull sh pu merge request reject failed patches commit
  • 42. Project Management ● software – Trac, Basecamp, JIRA, (etc, etc) ● philosophies – Waterfall, Agile (XP, Scrum, Kanban)
  • 43. * Driven Development ● Test-driven development (TDD) Write an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards. ● Behaviour-driven development (BDD) Behaviour-driven development specifies that tests of any unit of software should be specified in terms of the desired behaviour of the unit.
  • 44. DevOps Developers + Operations (System Administrators) ● Culture ● Automation ● Measurement ● Sharing
  • 45. DevOps Tools ● Deployment automation – fai, kickstart, preseed, cobbler ● Configuration management – puppet, chef, cfengine, bcfg2 ● Build automation – jenkins, hudson, maven, ant, cruisecontrol
  • 46. Start Today, Refine Later Today. ● Don’t try to change everything at once. ● Look for easy things to change and implement little bits at a time. ● Sometimes you need to have short term inefficiencies (learning a new tool) to gain long term productivity. ● Don’t let the enemy of progress be perfection.
  • 47. Let’s Keep In Touch ● [email protected] ● @emmajanedotnet
  • 48. Credits ● Type face: – Neutra Text by House Industries. ● Icons: – “Gartoon” icon theme pack for GNOME from http://art.gnome.org/themes/icon – http://openclipart.org/user-detail/yyycatch ● Diagram ideas: – http://betterexplained.com/articles/a-visual-guide-to-version-control/ – http://wiki.bazaar.canonical.com/Workflows