The importance of Version Control

Through the years Microsoft Dynamics NAV has evolved to a comprehensive solution with  many different objects. Each object only has one version. From this perspective it is obvious Microsoft Dynamics NAV would have been provided with an advanced version control system.  The tools we have are a bit different: we have Object properties, like Modified, Date and Time and Version List. In addition you can place comments in the Documentation trigger of the Object and tag your code changes. Since version 2009 R2 we have the lock / unlock features (which I never used). For sure: the Object properties are useful but the  question is: are these tools good enough to handle the job properly?

In general as a developer one has the following questions in mind?

  • How do we ensure that we keep history of all changes?
  • How do we know that we are overwriting changes?
  • How can we give the developer an isolated development environment in which he can make changes without disturbing other developers?
  • What if a piece of code is not yet finished at the end of the day but we want to put some other parts live?
  • How do we know which features are included in a certain release, etc. It might be good to think about the goal we try to achieve here.

For me The Goal is:  making state-of-the art solutions which is shipped on the promised delivery date without bugs and add value to the customers process. With this goal in mind it is important to think about the long-term instead of focusing on the time aspect only.

It would be a good idea to include upgrade projects in the certification process for Microsoft Dynamics professionals: you should have done some migrations of customized databases to the latest NAV release before may call your self Dynamics NAV professional. In many upgrade projects you’ll find all sorts of changes which were made in the past but no one remembers why it was implemented. Because there is no history it often ends up in just deleting the change or puzzling out based on the code what the initial idea was. If these aspects are taken into account on beforehand the upgrade process will be much easier. There is much to say about this topic. I think the guys of Partner Ready Software have good ideas about this. Since this blog is all about agile and Microsoft Dynamics NAV I would like to focus more on the process side and version control in special.

What are the most important capabilities of Version Control?

  • Reversibility: the ability to back up to a previous state if you discover that some modification you did was a mistake or a bad idea.
  • Concurrency: the ability to have many people modifying the same collection of files knowing that conflicting modifications can be detected and resolved.
  • History: the ability to attach historical data to your data, such as explanatory comments about the intention behind each change to it. Even for a programmer working solo, change histories are an important aid to memory; for a multi-person project, they are a vitally important form of communication among developers.

Are these capabilities applicable for Microsoft Dynamics NAV or are they only valid for other programming languages? In the following posts I’d like to zoom in on each capability.

Context Menu of Visual Studio with Source Control Operations with Microsft Dynamics NAV plugin

Context Menu of Visual Studio with Source Control Operations of Microsoft Dynamics NAV plugin

This entry was posted in Agile Software Development and tagged , on by .

About ronvdw

Solution Architect for Microsoft Dynamics NAV solutions with more than 15 years of experience in the ERP domain. Specialized in integrations with Microsoft Dynamics NAV and other MIcrosoft products. Architect of the the Team Foundation Server / Dynamics NAV integration which enables true agile software development for Microsoft Dynamics NAV, including version control, automated builds and testing. I have been closely involved by the implementation of scrum in our development team.

One thought on “The importance of Version Control

  1. Pingback: The importance of Version Control |

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s