Mario Rodriguez Senior Program Manager Team Foundation Server
Lessons Learned Through Dogfooding
Slide 2
Opening the Kimono How not to screw up like we did
Slide 3
Slide 4
Possible Agenda 1. How we use Visual Studio and Team Foundation
Server to build Visual Studio and Team Foundation Server. How much
dogfood are we talking about? 2. Lessons weve learned along the
way. How did it taste? What have we learned?
Slide 5
Dogfood? Really?
Slide 6
TFS at Microsoft 42 instances 19,700 unique users 6,154 team
projects 7.9 million work items 95% of the data is version
control
Slide 7
Team Foundation Server - How big is big? 1,032,045,223 files
2,024,223 checkins 911,432 work items 3,612 unique users 17.3 TB of
data Largest table: 3.1TB; 4.3 billion rows
Slide 8
Experience 116 scenarios 1,562 experiences 7,902 user
stories
Slide 9
11,962 areas and iterations 2 million check-ins 1 billion
files
Slide 10
Slide 11
Lessons we learned 1 5 3 4 6 7 8 9 10 2
Slide 12
We started too aggressive
Slide 13
Phase your rollouts and react/learn along the way 10
Slide 14
We bite more than we can chew
Slide 15
Slide 16
Its impossible to ship everything in the box 9
Slide 17
We did not practice Agile
Slide 18
Slide 19
8 FebruaryJanuar y March TFS 2008 TFS 2010 Dev11 3 weeks 6
weeks 10 12 weeks
Slide 20
Execution Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6
STABILIZATION Milestone Y 3-week sprints Milestone X
Slide 21
Sprint Done List Sprint 1 Sprint 2 Sprint 3
Slide 22
8
Slide 23
8
Slide 24
We introduced too much process
Slide 25
56 visible fields!
Slide 26
96 visible fields!
Slide 27
Autonomy, Mastery, Purpose It requires resisting the temptation
to control people, and instead doing everything we can to reawaken
their deep-seated sense of autonomy. Daniel Pink, Drive Autonomy
The urge to direct our own lives Mastery The desire to get better
and better at something that matters Purpose The yearning to do
something that we do in the service of something larger than
ourselves.
Slide 28
Slide 29
Autonomous Teams, Central Reporting Visual Studio Business
Applications Feature Crews VS Pro Waterfall VS Ultimate Scrum Team
Test Scrum TFS Scrum P&P XP&SCRUM
Slide 30
7
Slide 31
We tried to do everything in Visual Studio
Slide 32
6
Slide 33
Slide 34
Slide 35
6
Slide 36
We made some bad calls on reporting
Slide 37
Slide 38
5
Slide 39
We went fast really fast
Slide 40
Slide 41
Managing Debt ZBB Exit Criteria Bug jail
Slide 42
4
Slide 43
We were not serious about upgrade
Slide 44
Slide 45
Slide 46
Slide 47
3
Slide 48
Powerful but Simple What?
Slide 49
Powerful Powerful and Simple
Slide 50
Slide 51
Slide 52
BUT it also applies to Your process Your work item form Your
branch hierarchy Your security model Your build lab Your testing
tools Your 2
Slide 53
2
Slide 54
We setup our own server EARLY
Slide 55
Activities of Daily Coding (ADC) Such as: checking in code,
viewing project metrics, assigning work, merging changes, code
reviews, measuring progress 1
Slide 56
Wouldnt it be great if you could SORT ON TREES!!!!!
Slide 57
1
Slide 58
Summary 1. If it still tastes like dogfood its not done 2.
Balance power and simplicity 3. Upgrade, upgrade, upgrade! 4. Debt
kills 5. Reporting must be easy 6. Visual Studio is NOT a project
management tool 7. Autonomy is both difficult and necessary 8.
Agile development leads to better decision making 9. Its impossible
to ship everything in the box 10. Plan your rollout
2011 Microsoft Corporation. All rights reserved. Microsoft,
Windows, Windows Vista and other product names are or may be
registered trademarks and/or trademarks in the U.S. and/or other
countries. The information herein is for informational purposes
only and represents the current view of Microsoft Corporation as of
the date of this presentation. Because Microsoft must respond to
changing market conditions, it should not be interpreted to be a
commitment on the part of Microsoft, and Microsoft cannot guarantee
the accuracy of any information provided after the date of this
presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR
STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Slide 62
TFS on Windows Azure
http://channel9.msdn.com/Events/PDC/PDC10/FT07
http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-
windows-azure-at-the-pdc.aspx
Slide 63
TFS 2008 Architecture Version Control Work Items BuildsBuilds
IntegrationIntegration WarehouseWarehouse
Porting to SQL Azure Unsupported features Full Text Search
OPENXML System Messages Non Clustered Tables SELECT INTO SQL
Profiler Compression New Failure modes Maximum Size Limit High
Latencies from our Office
Slide 67
OPENXML to TVP CREATE PROC prc_QueryJobs(@xml NVARCHAR(MAX)) []
INSERT @jobs (JobId) SELECT i FROM OPENXML(@docHandle, N'/jobs/j')
WITH (i UNIQUEIDENTIFIER) => CREATE PROC prc_QueryJobs(@jobs
typ_JobTable) SELECT JobId FROM @jobs
Slide 68
OPEN XML to TVP metaData = new SqlMetaData("Id",
System.Data.SqlDbType.UniqueIdentifier) public IEnumerator
GetEnumerator() { foreach (Guid jobId in m_updates) {
m_record.SetGuid(0, jobId); yield return m_record; }
Slide 69
SELECT INTO to INSERT SELECT JobId FROM @Jobs INTO
#JobsToDelete => CREATE TABLE #JobsToDelete (JobId
UNIQUEIDENTIFIER) CREATE CLUSTERED INDEX idx ON
#JobsToDelete(JobId) INSERT #JobsToDelete SELECT JobId FROM
@Jobs
Slide 70
System Messages RAISERROR (500002, 16, -1, @procedureName)
=> RAISETFSERROR(500002, 16, -1, @procedureName) Which expands
to: SET @errorMsg = dbo.func_GetMessage(500002);
RAISERROR(@errorMsg, 16, -1, @procedureName)
Slide 71
New Failure modes The session has been terminated because of
excessive memory usage. Try modifying your query to process fewer
rows. The service is currently busy. Retry the request after 10
seconds. The service has encountered an error processing your
request. Please try again.
Slide 72
Extending Beyond Windows Identities App-Level Identity Central
directory of users Account owns user identities Who wants another
username+password? Additional identity management scenarios
Third-Party Identity Everybody has one Web-only login Users are
unknown until first login Identities are typically personal
Irrevocable vs.
Slide 73
Identity Management Groups are managed in TFS Authentication
outsourced to ACS User Token is replaced by a set of claims User is
identified by his primary email address
Slide 74
AppFabric Access Control Services WS* ADFS WS* ADFS Service
Identities Windows LiveID Google Yahoo! OpenID Google Yahoo! OpenID
Web or Rich Application Web or Rich Application Claims Core
Multi-tenant Data Store Identity Federation Service Facebook
Connect