- Center of Excellence
- Code Management
Understanding Effort and Impact
Depending on where your team is on existing processes, beginning the initiative to incorporate source code control will require effort in learning and in defining process. It may also require building out a few proof-of-concepts along the way. However, the impact is significant. The ability to roll back to a previous version of code, to be able to return to code deployed years ago, to minimizing time lost to an hour or so as opposed to days or weeks is invaluable. Every team developing anything beyond simple applications, must make the plunge at some time.
Begin at www.ni.com/labviewcoe >> Engineer Good Software >> Code Management. You may or may not have a lot to learn before embarking on this project. Here is a list of topics to consider. As the team lead, you may be tasked with making decisions or you may be empowered to host several user group and learning sessions as your team learns about the tools and process. Consider these topics
- Centralized Source Code Control vs Distributed Version Control Systems
- Structure of SCC components: repositories, command-line interface, clients, cloud hosting
- Evaluate some popular solutions and supporting tools: Git, Hg, SVN
- Understand how tools do and do not integrate directly into LabVIEW (do not need to integrate into the IDE to have a successful code management strategy)
- Understand how to integrate merge and diff
- Understand how to write good modular code which simplifies code management
You may choose to execute a proof of concept on a project or two. Also consider consulting with a partner who can assist in providing valuable feedback and experience as you move forward. Again, your code management solution must work for your team and each group has unique code frameworks, deliverables, and skillsets.
You will need to build alignment on your team. Here are some things to consider:
- Do you have an owner for each library or template such that the owner makes the edits and submits to SCC?
- Do you have a modular architecture defined that will support team development as needed?
- How do you plan to organize the repository?
- What to you plan to include: documentation, executables, etc?
- What is the commit cadence and process for your team?
- How do you plan to train your team on the process?