Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Work Flow for Solo Developers and Small Teams


Published on

Is your theme folder filled with files like this: page.old.2.bak.php? Does Git make you angry inside? Do you resent that everyone except you regularly visits the magical place referred to as "The Command Line"? Are you afraid of the vagrant who stole your puppet? In this workshop you will get a step-by-step introduction to working efficiently as a Drupal 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.

Full workshop available at:

Published in: Technology

Work Flow for Solo Developers and Small Teams

  1. Work Flow forSolo Developers and Small Teams @emmajanedotnet
  2. Today1. Developer’s Environment (The Command Line)2. Version Control Basics3. Developer Tools for Larger Teams
  3. A Developer’s Environment
  4. Together, Yet Separate
  5. The command line is used in many free,online resources.
  6. GUIs reveal complexity in different ways. SourceTree, OSXSmartGit, cross-platform
  7. $_
  8. In the Beginning,Was the Command LineA command-line interface (CLI) is a means ofinteraction with a computer program where the user(or client) issues commands to a program in the formof successive lines of text (command lines).The command-line interface evolved from a form ofdialog once conducted by humans over teleprintermachines, in which human operators remotelyexchanged information, usually one line of text at atime.
  9. Commands Affect Your Environment
  10. Commands Affect Your Environment
  11. Command Line Interface
  12. define:prompta transitive verb meaning To move to action.? forward 90> open mailboxAt the command line, you are constantly beingasked by the computer, “What action would you liketo 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 Timels list filescd change the current directorymv move a file to a new location (and/or rename)cp copy a filepwd print working directory (answers: where am I?)rm remove fileclear refresh the screenman read the manual page for a specific commandtar work with packages of fileschmod change the “mode” (aka permissions) of a file or directory
  17. “All” The Commands site includes a “rating” function.
  18. Learning the CLI toolsmakes 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.
  19. Version Control Basics
  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 excusefor not having version control.The cheapest way to get version control is to use anautomated backup system, like Dropbox, for yourcode.
  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 DeveloperCreate project Add files Do your work Upload files Do more work
  25. define:workBasic Check-ins Main Trunk Milk Milk Milk Milk Eggs Eggs Eggs Juice Soup r1 r2 r3 r4
  26. Diffs Show the DifferenceBetween Two Versions of a Project Main TrunkMilk Milk Milk Milk Eggs Eggs - Juice Eggs + Eggs + Juice Juice + Soup Soup r1 r2 r3 r4
  27. define:workTaggingJames’s Final Emma’s GroceriesGrocery List Additions Purchased Main Trunk Milk Milk Milk Eggs Eggs Eggs Soup Soup Soup Bread Bread M&Ms r4 r7 r9
  28. define:work MilkBranching 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: Partner1. 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 MilkEggs Eggs Eggs + Bread + M&MsSoup 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 MilkEggs + Bread Eggs Eggs + M&MsSoup - Soup Bread Bread + Bread M&Ms
  34. Sample Project
  35. Workflow: Centralizedno 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. DevOpsDevelopers + 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●● @emmajanedotnet
  48. Credits● Type face: – Neutra Text by House Industries.● Icons: – “Gartoon” icon theme pack for GNOME from –● Diagram ideas: – –