synchronized development for distributed teams
DESCRIPTION
Presentation by Claudio Lassala and George Mauer.OriginallyTRANSCRIPT
CODE TrainingAn EPS Companycodemag.com/training
SYNCHRONIZED DEVELOPMENT FOR DISTRIBUTED TEAMS
George Mauer / Claudio Lassala
About the Presenters
Claudio LassalaClaudioLassala.wordpress.comtwitter.com/ClaudioLassala
• C# MVP• Virtual Brown Bag host• International Speaker and
Writer• Software Developer at
EPS Software Corp
George MauerGeorgeMauer.net/blogtwitter.com/togakangaroo
• .NET New Orleans UG Leader• Speaker• Software Developer at
EPS Software Corp
VirtualBrownBag.com• C#• Patterns• WPF• StructureMap• IronRuby• Silverlight• TDD• VS Tips and Tricks• CodeRush• Resharper• Extension Methods• Lambdas
• Learning Tests• Cool iPhone apps• Irony (parser)• Tips for newbies• Ndepend• xUnit• VS 2010 Tips and
Tricks• C# 4 Dynamic
Features• Action/Func• Android
• DSL• Technical Debt• Reactive Extensions• Clean Code• AutoMapper• Evernote• Markup Extensions• Refactoring• Silverlight• And more…
About CODE & EPS Software Corp.
• Custom Software, Training, and Consulting– .NET, SQL Server, SharePoint,…– Specialists in converting to .NET– Object and Service Oriented Development– Database Development– User Interface/ Web• ASP.NET, WinForms, WPF, Silverlight, iPhone
Agenda
• Distributed Pitfalls• Techniques – Branching
• Tools• Q&A
DISTRIBUTED TEAMS
Concerns
• Staying Informed• Personality Issues• Toe Stepping• Getting Feedback• Integrating Work• Dispersing Knowledge
Staying Informed
• TODO’s and Tasks on a Whiteboard• Teleconferencing, Screen-Sharing, Online
Team Room • Daily Scrums• Pairing / Code Review
Personality Issues
• Consciously limiting ego• Team room for private bitching (things
employers might not like being public)• Team buy in• Occasional get-together’s
Toe Stepping
• Design by Contract• Pairing• Branch by Feature• Daily Scrum• Design discussions / ad-hoc design sessions• Availability
Getting Feedback
• Pairing• Design discussion / code reviews• Automated Testing (unit/integration)• Demos
Integrating Work
• Branching• Pairing / ad-hoc design• Automated Tests• Pairing during integration• Frequent build meetings
Dispersing Knowledge
• Pairing• Avoiding over-specialization• Standardized on patterns to be used• Code walk-throughs• Wiki documentation
TECHNIQUES
Techniques
• Branch per Feature• BDD / TDD• Design by Contract• Kanban Board• Dependency Injection and good IoC Container• Scrum (Retrospective, Iterations, Planning, daily standup,
estimating, user stories)• Pair programming• Event Aggregation• MVVM• Composition
Kanban Board
DI, IOC, MVVM, Composition…
TimeTracker
Adding new features• Validation• Alerts• Advanced
Search
User Stories
As a userI want to verify that the date for a new work item doesn't overlap with the date from any previous work itemsSo that I do not accidentally enter mis-enter the date
As a managerI want to use complex filters So that I can see how much my employees are working on particular projects or time periods
As a userI want to see alerts based on hours workedSo that I don't overbill the client
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
Branch per Feature
TOOLS
Tools
Summary
• Distributed teams:– There are pitfalls, but they are manageable
• Pick the right tools to support the techniques– …not the other way around
[email protected] @togakangaroo
Questions?
www.virtualbrownbag.com