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
PDF
Perintah dasar linux
DOCX
PPTX
Struktur so dan basic command linux
ODP
Perintah dasar Linux
PDF
Quick Guide with Linux Command Line
PDF
Linux programming - Getting self started
PPT
Red Hat Certified engineer course
Perintah dasar linux
Struktur so dan basic command linux
Perintah dasar Linux
Quick Guide with Linux Command Line
Linux programming - Getting self started
Red Hat Certified engineer course

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

PPTX
Source Code Management Slides
PDF
A Tale of Two Workflows - ChefConf 2014
PDF
Clearly, I Have Made Some Bad Decisions
PPTX
Source Control 101
PPT
version controlling in software development
PDF
VersionEEring
KEY
Android Bootstrap
PDF
Writing Rust Command Line Applications
PDF
Enjoy privacy on Gitlab
PDF
Virtualize and automate your development environment for fun and profit
PDF
Ruby talk romania
PPT
Chef, Devops, and You
PDF
Deployment With Subversion - Lorna Mitchell
 
PDF
You Build It, But How Are You Going to Run It?
PDF
Tested and Correct, How to Make Sure Your Documentation Keeps Working
PDF
PHP Deployment With SVN
PDF
Test driven infrastructure development (2 - puppetconf 2013 edition)
PPTX
Ansible top 10 - 2018
PDF
Trying Continuous Delivery - pyconjp 2012
Source Code Management Slides
A Tale of Two Workflows - ChefConf 2014
Clearly, I Have Made Some Bad Decisions
Source Control 101
version controlling in software development
VersionEEring
Android Bootstrap
Writing Rust Command Line Applications
Enjoy privacy on Gitlab
Virtualize and automate your development environment for fun and profit
Ruby talk romania
Chef, Devops, and You
Deployment With Subversion - Lorna Mitchell
 
You Build It, But How Are You Going to Run It?
Tested and Correct, How to Make Sure Your Documentation Keeps Working
PHP Deployment With SVN
Test driven infrastructure development (2 - puppetconf 2013 edition)
Ansible top 10 - 2018
Trying Continuous Delivery - pyconjp 2012
Ad

More from Emma Jane Hogbin Westby (20)

PDF
Managing a Project the Drupal Way - Drupal Open Days Ireland
PDF
Was it something I said?
PDF
PDF
Getting a CLUE at the Command Line
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
Git Makes Me Angry Inside
PDF
Evaluating Base Themes
PDF
Speaker Check-in - 3 - Munich
PDF
Drupal Flyover, CMS Expo
PDF
Responsive Web Design for Drupal, CMS Expo
PDF
Selling Hopes and Dreams - DrupalCamp Toronto
PDF
Forensic Theming - DrupalCon London
PDF
Forensic Theming for Drupal
PDF
There's a Module for That, MIMA Summit 2010
Managing a Project the Drupal Way - Drupal Open Days Ireland
Was it something I said?
Getting a CLUE at the Command Line
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
Git Makes Me Angry Inside
Evaluating Base Themes
Speaker Check-in - 3 - Munich
Drupal Flyover, CMS Expo
Responsive Web Design for Drupal, CMS Expo
Selling Hopes and Dreams - DrupalCamp Toronto
Forensic Theming - DrupalCon London
Forensic Theming for Drupal
There's a Module for That, MIMA Summit 2010
Ad

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Approach and Philosophy of On baking technology
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Modernizing your data center with Dell and AMD
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Network Security Unit 5.pdf for BCA BBA.
PPT
Teaching material agriculture food technology
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
NewMind AI Weekly Chronicles - August'25 Week I
Approach and Philosophy of On baking technology
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
MYSQL Presentation for SQL database connectivity
Understanding_Digital_Forensics_Presentation.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Modernizing your data center with Dell and AMD
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
The AUB Centre for AI in Media Proposal.docx
Reach Out and Touch Someone: Haptics and Empathic Computing
Network Security Unit 5.pdf for BCA BBA.
Teaching material agriculture food technology
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Review of recent advances in non-invasive hemoglobin estimation
Unlocking AI with Model Context Protocol (MCP)
“AI and Expert System Decision Support & Business Intelligence Systems”

Work Flow for Solo Developers and Small Teams

  • 1. Work Flow for Solo Developers and Small Teams @emmajanedotnet emma@emmajane.net
  • 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 ● emma@designtotheme.com ● @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