(Agile) Work Practices &
         Tools
Contents
●   What are they?
●   Why use them?
●   Collaboration practices
●   Development practices
●   Conclusion
●   Extras
●   Questions
What are Agile methodologies?
● Buzz words
● Tons of books on them...

●   (Inspires|enForces) collaboration
●   Continuous enforcement of guidelines
●   Right tools for the right job
●   React to change / Innovation
●   Look for solutions - not using the blame tool
●   Thinking - over the "appearance of working"
Disclaimer
●   No silver bullet
●   Requires teamwork
●   Depends on the company & company size
●   Depends on the client
Why do I need agile practices?
●   More communication
●   Constant "working knowledge" exchange
●   Momentum - "see the Cake baking"
●   Sustainable development
●   Move fast and React fast.
●   Less fail, more win
Collaboration practices
●   Daily standup meetings ( +2 people )
●   Live task list - know who needs help
●   Pair programming - on delicate matters
●   Code change notifications - use them with...
●   Code reviews - assign daily periods of time
Development practices
● Testing - TDD, BDD, Headless browser
● DVCS - (not also) for international teams
  ○   Branching model
  ○   Commit early and often
  ○   Check out when possible
  ○   Check in when tests are working
● Automation
● (Continuous Integration)
  ○   Build code
  ○   Run tests
  ○   Code coverage
  ○   Generate documentation
  ○   Notify fails
More
●   SOLID principles of OOP
●   Tracer Bullet Development
●   Monolithic code is off the table
●   Explain in one sentence = success = KISS
●   DRY
●   Document your code enough
●   Refactor code - paying your technical debt
Conclusion
●   Buzz words + Guidelines = Dogma???
●   Separate what's useful from what's not
●   Might not suit a big giant Company
●   People have aversion to change
●   If nobody is on board, DIY
●   Not a substitute for experience
●   Better understanding of the big picture
●   Less bureaucracy & more transparency
Extra
Tools - DVCS
● Git, Mercurial
● GitHub for public repositories
● Bitbucket for private
Tools - Automation
●   Bash scripts
●   Perl/Python scripts
●   Cloud-init
●   parallel-ssh
●   More SSH keys, less passwords
●   Code generation
    ○   PHP Project Wizard
    ○   Yii
    ○   Module::Starter
    ○   Rails
Tools - Continuous Integration
● Hudson/Jenkins
● PHPUndercontrol
● TravisCI
Tools - Collaboration
●   Pivotal Tracker
●   JIRA
●   Redmine
●   RT
●   Trello
●   Google Docs...
Books

●   Practices of an Agile programmer
●   Ship It!
●   Pragmatic Guide to Git
●   Pragmatic Project Automation
●   Pragmatic Unit Testing w/ JUnit
Thank you!

Questions?


             @dj_jorjinho

Agile work practices and tools

  • 1.
  • 2.
    Contents ● What are they? ● Why use them? ● Collaboration practices ● Development practices ● Conclusion ● Extras ● Questions
  • 3.
    What are Agilemethodologies? ● Buzz words ● Tons of books on them... ● (Inspires|enForces) collaboration ● Continuous enforcement of guidelines ● Right tools for the right job ● React to change / Innovation ● Look for solutions - not using the blame tool ● Thinking - over the "appearance of working"
  • 4.
    Disclaimer ● No silver bullet ● Requires teamwork ● Depends on the company & company size ● Depends on the client
  • 5.
    Why do Ineed agile practices? ● More communication ● Constant "working knowledge" exchange ● Momentum - "see the Cake baking" ● Sustainable development ● Move fast and React fast. ● Less fail, more win
  • 6.
    Collaboration practices ● Daily standup meetings ( +2 people ) ● Live task list - know who needs help ● Pair programming - on delicate matters ● Code change notifications - use them with... ● Code reviews - assign daily periods of time
  • 7.
    Development practices ● Testing- TDD, BDD, Headless browser ● DVCS - (not also) for international teams ○ Branching model ○ Commit early and often ○ Check out when possible ○ Check in when tests are working ● Automation ● (Continuous Integration) ○ Build code ○ Run tests ○ Code coverage ○ Generate documentation ○ Notify fails
  • 8.
    More ● SOLID principles of OOP ● Tracer Bullet Development ● Monolithic code is off the table ● Explain in one sentence = success = KISS ● DRY ● Document your code enough ● Refactor code - paying your technical debt
  • 10.
    Conclusion ● Buzz words + Guidelines = Dogma??? ● Separate what's useful from what's not ● Might not suit a big giant Company ● People have aversion to change ● If nobody is on board, DIY ● Not a substitute for experience ● Better understanding of the big picture ● Less bureaucracy & more transparency
  • 11.
  • 12.
    Tools - DVCS ●Git, Mercurial ● GitHub for public repositories ● Bitbucket for private
  • 13.
    Tools - Automation ● Bash scripts ● Perl/Python scripts ● Cloud-init ● parallel-ssh ● More SSH keys, less passwords ● Code generation ○ PHP Project Wizard ○ Yii ○ Module::Starter ○ Rails
  • 14.
    Tools - ContinuousIntegration ● Hudson/Jenkins ● PHPUndercontrol ● TravisCI
  • 15.
    Tools - Collaboration ● Pivotal Tracker ● JIRA ● Redmine ● RT ● Trello ● Google Docs...
  • 16.
    Books ● Practices of an Agile programmer ● Ship It! ● Pragmatic Guide to Git ● Pragmatic Project Automation ● Pragmatic Unit Testing w/ JUnit
  • 17.