Versioning (1)



As software engineers we should be aware of the costs of dealing with versioning and tracking compatibility breaking changes.

And we should be able, in every software product, team and organization, to see where and when versioning is really needed, and so use it properly.

By a practical point of view, as is very effective in security to start with all permissions disabled and then enable only the really needed permissions case by case, in versioning I've noticed that is very effective  to start with no versioning and begin to use versioning only when a real need emerges (e.g. through inspect-adapt loops).


A common misunderstanding that we software engineers have about versioning, is to believe that versioning help us to prevent mistakes in the code-build-test environment. So sometime we tend to use versioning to build walls, silos, that slow down developments and changes and require uneccessary efforts and never happens to be useful.

Instead versioning is useful in the deploy-production environment.
In my experience I've found versioning useful especially:
  • when an application require an upgrade to the db schema to work properly, the application and the db must be versioned properly

  • when a server application change the client-server communication protocol, the client and servers applications must be versioned properly

  • when a module (= assembly = dll)  are shrink-wrapped software provided by an external third party.
And not useful for modules developed by the same organizations or teams working for the organizations (e.g. off/near-shore, partners).  In this case other approaches worked far better.



Do you agree?
Where/When have you found versioning useful ?



Print | posted @ Thursday, June 17, 2010 2:09 PM

Comments on this entry:

Gravatar # re: Versioning (1)
by fabrzizio at 6/18/2010 8:13 AM

I agree. Versioning is useful in the deployment process. But also in "modules developed by the same organizations".
In my case we have a multi stage deployment environment: DEV, TEST, PRE-PRODUCTION and PRODUCTION. At the same time I could have more than 2 or 3 different app versions running in different stages. DEV: 2.4 TEST 2.3 PRE 2.1 PROD 2.1

So I must change version number evertime a release a new compiled. (I increment version number also in other circumstance).

my 2 cents

fabrizio
Gravatar # re: Versioning (1)
by fabrzizio at 6/18/2010 9:49 AM

The real environment is more complex. The "app" is not a single application but a mix of sub-apps: web-apps, services, web-services, clients. So I can have different versions of a sub-app in different stages.
More: some modules (dll) are shared between different sub-apps.
Comments have been closed on this topic.