SlideShare a Scribd company logo
Source Control
Abominations
The Bad, The Ugly, The Inconceivable
Donald Belcham
@dbelcham
VSS
Yes, we’re going there.
Please map Z: to
servershare1 to begin
development work
Open Z:OurApp.sln
in Visual Studio
Ctrl-Alt-B
“The file OurApp.exe is in use
by another process”
“Some files changed outside
of the IDE. Would you like to
refresh them?”
It’s okay,
I’ll just work offline
1. Copy Z: contents to C:
2. flip the file level
Read-Only flag to be off
4. Make all kinds of changes
and save those files
5. Go back to the office at
some point down the road
6. Copy your C: files overtop
of those files on Z:
7. Win
How can you ever trust the
source code?
Developers blamed servers
Source code needs to be
written in isolation
There are many different
ways to get isolation
CVS
Quantum leaps are made over VSS and we will be saved!
Whaddya mean we don’t have
exclusive file locks by
default?
This isn’t how branching
worked in VSS!
All development
is done on trunk
All releases
are made from trunk
Get me the source
for a past release please
Production hot fix time
rolls around…
Pffft.
The businesses
doesn’t want those
We do services packs!
(which really are the next full release)
Don’t ship that feature!
Understand the capabilities
of your tools
Use them to do
better at your job
SVN
Things will be different this time…I promise
Branches are cool.
Let’s use them.
You get a Branch!
You get a Branch!
Everyone gets a Branch!
Don’t you *dare*
kill my branch
Day 1…
This release is going to go
so much better than the last one
Day 20…
I’m making pretty good progress
Day 40…
I wonder how other people
are making out with their tasks?
Day 90…
Finished!
Just in time to merge my stuff to trunk
before tomorrow’s release.
Day 91…
Dammit.
My last commit just got overwritten
by that other devs merge
Day 100…
Okay. That was the last merge.
Isolation doesn’t mean
ignoring integration
Merges really aren’t that hard
If you use the tool properly
TFS
Don’t worry, it’ll take care of everything
We’re using feature branches
We integrate often
We isolate our releases
Release 1.5 is out the door!
(insert party music here)
Let’s get going on v1.6!
1. Select folder in Windows
Explorer
2. Ctrl-C
3. Ctrl-V
4. Rename new folder
to v1.6
5. Setup new working
directory and start coding
v1.6 FTW!
v1.5 needs a hot fix
1. Make changes in v1.5
folder
2. Test, test, test.
3. Create a release package
(victory over the bugs!)
4. Manually port the fix
changes to the v1.6 folder
5. Reconcile bug fix changes
with v1.6 code changes
6. Test, test, test
7. Wait until the next release
to find out if you ported
successfully!
Every release we
forget about the past
You can’t trace the reason
for changes in history
Manual processes are
prone to error
git
The saviour has arrived!
Isolation gets taken
one step further
Instead of forcing changes
we can take those we want
Tools are built
to help us with our workflow
But every time
github goes down
twitter lights up
because “we can’t work”
Let’s commit binaries!
The tool is
capable of so much more
But we don’t learn it
because its too hard
To wrap it all up…
We can do better
Learn your tools capabilities
Practice with your tools
capabilities
Learn from other systems
Full control over VCS
is paramount to protect
the businesses assets
Make your VCS skills
as important
as your coding skills
Thank you…

More Related Content

Viewers also liked (6)

Is There Room for Craftsmanship in Software Development
Is There Room for Craftsmanship in Software DevelopmentIs There Room for Craftsmanship in Software Development
Is There Room for Craftsmanship in Software Development
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Reducing External Risk
Reducing External RiskReducing External Risk
Reducing External Risk
 
AOP & Patterns
AOP & PatternsAOP & Patterns
AOP & Patterns
 
Microservices: The Nitty Gritty
Microservices: The Nitty GrittyMicroservices: The Nitty Gritty
Microservices: The Nitty Gritty
 
Microservices: A Gentle Introduction
Microservices: A Gentle IntroductionMicroservices: A Gentle Introduction
Microservices: A Gentle Introduction
 

Similar to Source Control Abominations

Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docxPart 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
karlhennesey
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
tutorialsruby
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
tutorialsruby
 

Similar to Source Control Abominations (20)

An introduction to SVN
An introduction to SVNAn introduction to SVN
An introduction to SVN
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
 
Batch file programming
Batch file programmingBatch file programming
Batch file programming
 
Batch file-programming
Batch file-programmingBatch file-programming
Batch file-programming
 
svn
svnsvn
svn
 
Install guide
Install guideInstall guide
Install guide
 
Install guide
Install guideInstall guide
Install guide
 
Totalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By GopiTotalsvn Usage And Administration By Gopi
Totalsvn Usage And Administration By Gopi
 
Git in Continuous Deployment
Git in Continuous DeploymentGit in Continuous Deployment
Git in Continuous Deployment
 
OS/161 Overview
OS/161 OverviewOS/161 Overview
OS/161 Overview
 
Dev Environments: The Next Generation
Dev Environments: The Next GenerationDev Environments: The Next Generation
Dev Environments: The Next Generation
 
Low disk space is dangerous for your pc
Low disk space is dangerous for your pcLow disk space is dangerous for your pc
Low disk space is dangerous for your pc
 
Database Management Assignment Help
Database Management Assignment Help Database Management Assignment Help
Database Management Assignment Help
 
Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docxPart 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
Part 4 Scripting and Virtualization (due Week 7)Objectives1. .docx
 
ID E's features
ID E's featuresID E's features
ID E's features
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
 
Making%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20WindowsMaking%20R%20Packages%20Under%20Windows
Making%20R%20Packages%20Under%20Windows
 
How java works
How java worksHow java works
How java works
 
How java works
How java worksHow java works
How java works
 
Reverse Engineering in Linux - The tools showcase
Reverse Engineering in Linux - The tools showcaseReverse Engineering in Linux - The tools showcase
Reverse Engineering in Linux - The tools showcase
 

More from Donald Belcham

Design patterns you didn't know about
Design patterns you didn't know aboutDesign patterns you didn't know about
Design patterns you didn't know about
Donald Belcham
 
Programming Closer to the Iron
Programming Closer to the IronProgramming Closer to the Iron
Programming Closer to the Iron
Donald Belcham
 
Taming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOPTaming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOP
Donald Belcham
 
The Dark Side of Code Metrics
The Dark Side of Code MetricsThe Dark Side of Code Metrics
The Dark Side of Code Metrics
Donald Belcham
 

More from Donald Belcham (14)

Introduction to Messaging
Introduction to MessagingIntroduction to Messaging
Introduction to Messaging
 
Advanced messaging patterns
Advanced messaging patternsAdvanced messaging patterns
Advanced messaging patterns
 
Performance Tuning in the Trenches
Performance Tuning in the TrenchesPerformance Tuning in the Trenches
Performance Tuning in the Trenches
 
Reliability and Resilience
Reliability and ResilienceReliability and Resilience
Reliability and Resilience
 
Reliability and Reslience
Reliability and ReslienceReliability and Reslience
Reliability and Reslience
 
Introduction To AOP
Introduction To AOPIntroduction To AOP
Introduction To AOP
 
Design patterns you didn't know about
Design patterns you didn't know aboutDesign patterns you didn't know about
Design patterns you didn't know about
 
Programming Closer to the Iron
Programming Closer to the IronProgramming Closer to the Iron
Programming Closer to the Iron
 
Taming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOPTaming Brownfield Codebases with AOP
Taming Brownfield Codebases with AOP
 
Domain Driven Design Primer
Domain Driven Design PrimerDomain Driven Design Primer
Domain Driven Design Primer
 
Hacking Hardware
Hacking HardwareHacking Hardware
Hacking Hardware
 
Advanced AOP
Advanced AOPAdvanced AOP
Advanced AOP
 
The Dark Side of Code Metrics
The Dark Side of Code MetricsThe Dark Side of Code Metrics
The Dark Side of Code Metrics
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 

Source Control Abominations

Editor's Notes

  1. This example is of the first place I worked out of college. Team of 4-6 developers.
  2. This example is of the first place I worked out of college. Team of 4-6 developers.
  3. Pretty normal (for many different and valid reasons) to do as part of a dev team
  4. Ummmm….okay
  5. Better yet, some other person has an exclusive check-out on a file under their user name…and you can edit that file….but you can’t check it in.
  6. At some point the friction becomes so high you decide to work offline
  7. Remember, this is saving to where copied to on C:
  8. This is the red-neck merge
  9. You’re packing the big hammer with the copy-pasta. Everybody else’s changes are knocked out by what you did.
  10. One guy took to hard rebooting the SQL server if his debugging results didn’t match what he expected
  11. Many people think of source control as a storage tool….or a backup tool. It’s a tool that enables working in isolation for many reasons. One is to be much more productive.
  12. The paradigm shift was big and many people didn’t get it. They wanted what they had before.
  13. Piss-poor terminology overloading didn’t help matters either.
  14. Aka: We don’t have a clue how we can do those
  15. So we come up with inventive word games
  16. Developers hold changes locally (copy-pasta to a unmanaged folder) as a means to keeping them out of releases.
  17. You’re hired to solve business problems. Hotfixes, new features, etc are all business problems that you need to solve and VCS is one of the tools that help enable that solution
  18. It’s starting to feel like Stockholm syndrome isn’t it?
  19. Branches become developer silos
  20. Everyone starts to merge big changes at the same time
  21. Now everyone thinks that merges are hard
  22. Short lived and merges are easier
  23. There are no surprises from each other’s code
  24. Now imagine a world where you had a v1.5 hotfix, and v1.6 and v1.7 releases.
  25. The folder copy paste in source control drops the history
  26. we decouple from the central server model
  27. gitflow
  28. Not just images….dlls…exes….the /packages folder
  29. Also learn it’s weaknesses so that you can work with or around them as needed
  30. Even if you don’t use git look at the patterns used in gitflow to see if they may help with the way you work