Dr Maria Grazia Pia (Universita e INFN (IT)) Peter Steinbach (MPI-CBG) Stefan Kluth (Max-Planck-Institut fuer Physik (Werner-Heisenberg-Institut) (D) Dr Thomas Schoerner-Sadenius (DESY) Thomas Velz (Universitaet Bonn (DE))
The ability to judge, use and develop code efficiently and successfully is a key ingredient in modern particle physics. Software design plays a fundamental role in the software development process and is instrumental to many critical aspects in the life-cycle of an experiment: the transparency of software design enables the validation of physics results, contributes to the effective use of human and computational resources, facilitates the evolution and the maintainability of the software over the lifetime of an experiment. However, despite the wide consensus on this appraisal in the HEP community, many concepts and techniques that are essential to working effectively in a HEP experiment are not covered during university studies, and limited opportunities are available to students to learn them after that. We report the experience of a training program, identified as "Advanced Programming Concepts", that introduces software concepts, methods and techniques to work effectively on a daily basis in a HEP experiment or other programming intensive fields. The program is targeted at students and young researchers involved in physics analysis and detector development, not only at core software developers of relevant scientific code bases. The presented workshop introduces basic and advanced programming techniques (principles of object-oriented design, design patterns, meta-template programming etc.), as well as elements of the software development process and project management skills. Emphasis is given to methods to work effectively with existing code and to improve it as well as to building a basis for further self-improvement in the field. This presentation illustrates the principles and methods that shape the "Advanced Computing Concepts" training program, the knowledge base that it conveys, an analysis of the feedback received so far, and the integration of these concepts in the software development process of the experiments as well as its applicability to a wider audience. It intends to promote a discussion in the software-oriented particle physics community on the responsibility of better preparing our young people for their work in the experiments, and on how the experiments could profit from a wider knowledge of advanced software methods and techniques.