Senior Research Software Engineer @ University of Southampton
Managing Academic Software Development
Dr Sam Mangham
Who Am I
- Senior RSE @ University of Southampton
- Trustee @ Society of Research Software Engineering
- RSE @ Software Sustainability Institute
- Generalist, interdisciplinary RSE, training, community
- PhD in Astrophysics
- HPC monte carlo radiation transfer code for supermassive black holes
- Neutronics @ Culham Centre for Fusion Energy
- HPC monte carlo radiation transfer code for fusion
- Both large legacy HPC codes!
- Often large teams
- Formal training
- Formal project management frameworks & staff
- Software is the product
- Small/single teams
- Large numbers of loose collaborators
- Limited training
- Ad-hoc management (by other researchers) or self-management
- Papers are the product
- Somewhere in-between
- Vary with scale, focus, discipline
- Break a project into components
- Subdivide as you go!
- Track progress publicly
"Programmers tend to start coding right away.
Sometimes this works." - Eric Larsen, 2018
- Document process on tasks
- GitHub/GitLab etc. let you turn issues into lab books
- BUS FACTOR
- Future You is a collaborator
- Knowledge decays quickly
- Time estimates
- Consider and revise!
- Won'ts aren't forever
- Typical won'ts
- Future research avenues
- Features you don't need right now
- Bugs that don't stop work
- Acknowledge them publicly
- Help others plan around you
- Leave time for testing & documentation!
- Protection against disaster
- Test and verify changes are intended
- Avoid having to rerun entire papers' worth of analysis to avoid version mismatches
- New branches for new features
- Link branches to tasks
- Easy to parallelise work
- Easy to switch to working on another feature
- Regularly merge branches back to development!
- Otherwise each developer ends up with a divergent version
- Review pull requests
Write Sustainable Code
- Proactively avoid technical debt
- Share and collaborate more easily
- No code worth writing is disposable!
- Write for collaborators and community
- Can't reproduce results if the code isn't sustainable
Write Readable Code
Write Readable Code
Document Your Code
- Continuous Integration
- Many more detailed talks on this!
- Easy onboarding
- Quick reference for yourself
- Online documentation platforms
- ReadTheDocs again
- GitHub Pages
- GitHub wikis
- Facilitate problem solving
- Searchable if possible!
- Own up to the code's limitations
- Benefits far outweigh embarassment!
- Issues are a dialogue with your users
- Even non-issues!
- Structure it with issue templates
Release Your Software
- Majority of research relies on software
- Much is paperware
- Public release is required for reproducibility!
2022-11-09-HPC-BP Managing Academic Software Development
By Sam Mangham