Skip to main content

Software Configuration Management for Developers

Coming out of my post on locking down merges, Tim Wingfield provided the following intriguing inquiry (paraphrased):

First, most of our clients don't delve into what our dev practices are, what source control we use, how we use it, or any of the specifics below feature/deliverable level. Am I being sheltered from a bigger problem out there?


Secondly, how can we as developers alleviate that issue? Source control, like the language something is written in, really shouldn't matter beyond that of a maintenance issue. A competent dev team is going to make use of all tools available. Removing merging from that list is like telling us to develop in Notepad!

These are great questions. First off, if your team is developing a product or a deliverable but not source, I feel the process and tools your team is using shouldn't be of much concern to the client. We should be leveraging 100% of our best practices and the optimal tools to deliver high quality software in the most efficient method possible. You should be leveraging tools for parallel development such as branching, merging, Test Driven Development (TDD), test plans, automated Continuous Integration (CI) builds, etc.

That said, this rarely happens (clients not caring about process, tools, and/or wanting source code). So, addressing Tim's second, following question, I think senior or lead developers must be well-versed in Software Configuration Management (SCM) and the software development process. Great developers should understand concepts such as:

  • Version control
  • Branching / merging
  • Test Driven Development (TDD) with test harnesses for class libraries
  • MSTest, NUnit, TestDriven.Net, Resharper, etc.
  • Continuous Integration (CI) builds
  • Automated deployment and promotion between environments
  • Automated execution and interpretation code analysis and code metrics/coverage
  • Well-versed in frameworks/methodologies: Scrum, Kanban, TDD, MDD, etc.

...and this is probably the short list. If you're an aspiring developer wanting to ascend to the next level, my advice to you: get great with SCM and the software development process. You will differentiate yourself significantly from other developers.

How about the situation where we're on site developing a solution the client will eventually maintain? As with most client situations, you're there to provide expertise and advice. If there's an existing SCM solution, certainly we should adhere to this--but seek to optimize! In an amicable and calm manner, gently make suggestions for improvement to your clients. "Hey, I've had great success and increases in quality through introducing test harnesses with continuous integration into the process. I could set up a demo in a day if you like."

System Integrators (SI), in my opinion, aren't hired to provide amazing development expertise. They're hired to solve problems. Typically, development shops have business problems but they also perpetuate software development issues due to shortcomings in SCM technique. You, as that trusted advisor, need to evangelize and lobby for optimal and proven processes and tools which increase the likelihood of quality and success in software development.

Go forth and optimize with SCM! To this end, here is my list of resources to aid your journey with SCM.

Comments

Popular posts from this blog

Configuring a Development Sandbox for the Azure CTP

I'm getting up to speed on Azure and the other cloud SDKs and need to configure an environment for development, demos and learning. My experiences... First off, if you've read my blog, you know I haven't installed non-productivity software on my core OS for years . Further, I don't get the warm and fuzzies installing CTP software on my core OS. I also love the recoverability and start-over-from-a-checkpoint features of virtualization. Virtual PC (VPC) houses all my development, demo and learning sandbox instances. So, let's start off with a VPC instance. For this to work well, ideally, you need a good 4GB of memory. Further to the ideal, you're running x64 so as to have access to the full 4GB of memory. ACQUIRE AN AZURE SERVICES DEVELOPER KEY To develop against Azure and/or .Net Services and SQL Services, you need an invitation code. Oooh, very exclusive. Pretty people to the front of the line! You can start the process here . If you run into problems, che

SOA Primer

Service-oriented architecture (Wikipedia) Service Orientation and Its Role in Your Connected Systems Strategy Understanding Service-Oriented Architecture Architecting Disconnected Mobile Applications Using a Service Oriented Architecture Service-Oriented Architecture: Considerations for Agile Systems Service-Oriented Architecture: Implementation Challenges SOA Challenges: Entity Aggregation New to SOA and Web Services Service-Oriented, Distributed, High-Performance Computing Service-Oriented Integration Developing Service-Oriented Architectures Messaging Patterns in Service-Oriented Architecture, Part 1 Messaging Patterns in Service Oriented Architecture, Part 2 Implementing Service-Oriented Integration with BizTalk Server 2004 Legacy and Business Partner Integration: Using Service-Oriented Architecture for Integration Service Gateway Pattern Service Orientation in Enterprise Computing Secure, Reliable, Transacted Web Services: Architecture and Composition Application

Get Your Team Foundation Server Hate On!

[Google ranking skyrockets... ;-)] I'm a big fan of TFS/VSTS. However, there are a good pocket of folks who take issue with the way TFS handles or implements a certain feature. Well this is your chance to vent! I'm planning a presentation around the "Top 10 TFS/VSTS Hates and How to Alleviate Them"...or something along those lines. But I need your help. Post a comment below detailing your dislike. If it's legitimate, I'll highlight it in the presentation and [hopefully] provide an alternative, resolution, or work-around. Thanks in advance! Update 7/19/2008: Version Control and Microsoft