Agile Development Practices: Coding & Productivity Alex Moore, HMB
Nov 30, 2014
Agile Development Practices:Coding & ProductivityAlex Moore, HMB
Traditional Big ‘A’ Agile
Individuals and interactions over processes and toolsWorking software over comprehensive documentation
Customer collaboration over contract negotiationResponding to change over following a plan
That is, while there is value in the items onthe right, we value the items on the left more.
Traditional Big ‘A’ Agile Agile Modeling Agile Unified Process (AUP) Dynamic Systems Development Method (DSDM) Essential Unified Process (EssUP) Extreme Programming (XP) Feature Driven Development (FDD) Open Unified Process (OpenUP) Scrum Velocity tracking
Little ‘a’ agile
Little ‘a’ agile1. Can you react immediately and without
panic if external constraints on your project change?
2. Do you review your process frequently and regularly to make sure the answer to the first question is always yes?
How can we do this in waterfall or constrained environments?
Subterfuge!
Agile Coding
SOLID Coding Single Responsibility Principle Open/closed Principle Liskov substitution principle Interface segregation principle Dependency inversion principle
Clean Coding PIE Baby steps KISS YAGNI DRY Boy Scout Rule Good Neighbor Rule
Using GIT for Great Good!
What Git is about1. Use CVS as an example of what NOT to
do.2. Support a distributed workflow3. Strong safeguards against corruption,
PEBKAC or malicious4. High Performance
Branching, Merging
Branching, Merging git branch NewBranch git checkout NewBranch
<do work> git commit –a –m ‘bug fix’
git checkout master git merge NewBranch
Decentralized Goodness
Git-tfs Treats TFS as a remote repository
1. Setup TFS “remote repository”2. <do work>3. Fetch latest4. Merge5. Use Checkintool.
Other Productivity Tips
Keep you hands where I can see them!
Application Launchers
Visual StudioShortcuts
ReSharper
Beyond Compare
Notepad++
Resources
domo [email protected]