Research is increasingly digital. Experimentation and theory have been joined by the third and fourth paradigms of science – numerical simulation and information-intensive research. These new approaches are both built on a common foundation – computer software.
Yet despite this increasing reliance on software in research, software created in research institutions often exhibits a number of characteristic flaws. Computational research tools are often fragile, generally not sustainable or usable beyond the lifetime of a given project, and frequently hard for other researchers to read and understand. Institutions miss out on opportunities to increase the impact of their research by producing robust software deliverables that could be used and cited by their peers.
Computational work must mirror the committed attitude of the best experimentalists, who care about precise, professional, repeatable, meticulous work. Software engineering professionals are trained in best practices, and follow a disciplined approach to the design, construction, testing and maintenance of software systems. Attempts to leverage these skills within academia by employing contract programmers, however, typically fail, due to otherwise talented programmers lacking sufficient research experience and a necessary appreciation of the significant cultural differences between business and academia.
Universities, therefore, need to provide a capacity for research software development, serviced by experts who combine professional software development skills with the ability to rapidly and deeply assimilate academic literature and address in software design, construction and maintenance the requirements of research at the frontiers of knowledge.
University College London is leading this charge with the creation of a Research Software Development Team, and I am delighted to be the founding leader of this team. Our goal is to work with researchers who create code across college to enhance UCL’s capacity to produce the highest quality scientific software, from the simplest scripts managing scientific data to complex simulations running on state of the art computational platforms.
The team is part of the Research IT Services Department within UCL Information Services Division (ISD). We will work closely with departmental colleagues in Research Computing Platform Services and Research Data Services to facilitate researchers’ use of UCL’s extensive and growing capabilities for computation and information management.
Our work will include:
- Active, sustained development and maintenance of UCL-authored scientific software in collaboration with researchers.
- Advice and consultation on software engineering and software architectural considerations for computationally based research, including support for grant applications.
- Targeted development support facilitating deployment of UCL-developed scientific software to both UCL-owned and e-Infrastructure South Centre for Innovation (CfI) high-performance computational resources.
- Consultation and training on best practice for research software development.
- Provision of shared infrastructure for software development such as version control, issue tracking and continuous integration.
As we recruit the remainder of the new team and prepare to launch these services, we will be seeking to engage with researchers to discuss their software development activities, to ensure our services are targeted to most closely match the needs of the UCL research community. We will be reaching out to, and welcome approaches from, research groups across college, to learn about existing software development practices and understand the needs of research groups who maintain and develop software.
Dr James Hetherington,
Research Software Development
Research Computing and Facilitating Services
University College London
3rd October 2012