Thoughts on version control: Collaboration

If you are working in the software industry, I'm sure you use a remote version control system to keep your code as well as the history of the changes made to them. One of the best uses I've discovered over the years of using one (it has been Git on some flavour of Github for the most part except for very early on in my career) has been to use the system for team collaboration, not just to upload the code so that everyone can get the latest changes from each other and also drive a continuous integration system. I'll list out some of the whats and hows of this.

  • Early feedback: Using a branch to develop some early proof of concept or prototype for a feature or refactor really helps with getting very early feedback from the rest of your peers to understand any design flaws, missed spots etc which can be addressed right away without introducing avoidable technical debt. If the feature branch can generate a working prototype, that enables feedback from a usability perspective too much before reaching a user acceptance stage.
  • Documenting decisions: This is made possible with the use of repositories that contain ADRs (Architecture Decision Records) that strive to eliminate the concept of local knowledge which is passed on by word of mouth. A good side effect of this is that you can go back in time to see the evolution of your team's thought process at various points in time and the decisions that helped overcome the newer constraints.
  • Asynchronous and persisted discussions: At a time when real time messaging is a real distraction at the workplace taking us out of focus mode, a code review system helps you be intentional and think through from different angles before writing down your thoughts. These are persisted for quite a long time which helps refer back to discussions and decisions within a specific changeset's context. What's more, modern IDEs can also highlight each line with the associated commit, so you have an instant reference to how the line fits into the bigger picture. Even outside of code reviews, soliciting feedback through documents like RFCs in a repository helps with persisting the thoughts around an idea and enrich it to become a reality on the product.
  • (Bonus benefit) Nostalgia: You can look back fondly on the simpler times in your team, the growth you've had over the years in practices, culture, tooling maturity etc.

I think you’ll like looking through this - always been a good source of inspiration for me - a company using their own product (GitLab) for collaboration for more than just code but a full Company Handbook - https://about.gitlab.com/handbook/#engineering

Hi Vivek Yes , you are right . These days they are not mere VCS Now a days Github , Gitlab are more focussing on coding with collaboration without users leaving there apps

To view or add a comment, sign in

More articles by Vivek Krishna

Others also viewed

Explore content categories