Speaker
Description
HEP software is built by huge teams. How can this be done effectively, while still giving people satisfying tasks to perform? Large systems are a hard problem, and this lecture focuses on the current techniques for dealing with it. Use of central source control has become routine, so we build on that understanding to discuss distributed systems like Git. We then discuss the larger area of release & distributing via a package versioning system vs. a distributed build system (e.g. Git and CMake). Now that we've covered both individual and group work, we go back to the software engineering topics of the first lecture to see how these fit together. How does our individual work affect the ability of the entire project to proceed? What are tools and techniques that will improve both our individual work, and out contributions to the whole? We close with a summary of observations.