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

Fast and Reliable Home Internet: Your Livelihood Depends on It

You're on yet another Zoom call and...wait what did she say? Dang it...Internet glitching again! You quickly mute your audio and video. "Kids! Get off YouTube...I'm on a call!" With everyone working and schooling from home, your Internet can't keep up. The cable company keeps claiming you're on their "super-fast Internet" but everything keeps lagging. It's all so frustrating and you just want to get your work done.  It may not be the cable company's fault. Use this approach to ensure your household enjoys a super-fast, reliable Internet! Start with the Source Run a speed test. Google "speed test" . Run that test a few times on a given day. If you're not getting at least 50Mbps download and 10Mbps upload speeds, keep reading.  Check with your Provider and do your Homework Reach out to your Internet provider. This may be your cable company or telephone provider. Understand your current plan: What package are you currently on? Wha...

Consulting Exodus Trend?

Is it just me or have a significant number of 'A' players left our consulting firms? People come and people go. Ours is certainly not an industry of "lifers". However, within the past year or so, I've witnessed several of my consulting peers -- the folks I really look up to -- leave the consulting arena for [predominately] full-time technology product firms. A smaller number have left for full-time positions at businesses while an even smaller number left to start their own business|firm|freelance|etc. Their departure struck me as odd because these were the type of folks who [I thought] would eventually become owner / partners at their respective firms. Certainly, the firms will carry on and continue to perform well but the departure of these folks would result in nothing less than a severe case of the hiccups and quite possibly a minor cardiac event. You know who you are. Please comment. Do we [the consulting industry] have a brain drain issue? Is this a norm...

Rollback a Ooops in TFS with TFPT Rollback

Rhut roe, Raggie. You just checked in a merge operation affecting 100's of files in TFS against the wrong branch. Ooops. Well, you can simply roll it back, right? Select the folder in Source Control Explorer and...hey, where's the Rollback? Rollback isn't supported in TFS natively. However, it is supported within the Power Tools leveraging the command-line TFPT.exe utility. It's fairly straightforward to revert back to a previous version--with one caveot. First, download and install the Team Foundation Power Tools 2008 on your workstation. Before proceeding, let's create a workspace dedicated to the rollback. To "true up" the workspace, the rollback operation will peform a Get Latest for every file in your current workspace. This can consume hours (and many GB) with a broad workspace mapping. To work around this, I create a temporary workspace targeted at just the area of source I need to roll back. So let's drill down on our scenario... I'm worki...