This work is licensed under a Creative Commons Attribution 4.0 International License.
This handbook is for when something is different. So you know the basics of programming! This handbook is for RSE, PI, grad students who write research software.
What size project?
- Just you - see chapter X
- You and your PI - these
- You and your group - more
- 5-Person team - more
Project stage:
- joining project
- starting project
- fixing project
A typology of software teams/projects as an index:
- If you are a beginner, do this stuff
- If you are a PI, read this stuff
- If you are…..etc
- Different kinds of software that suggest different levels of formalization
Note: claimed chapter are denoted with @USERNAME/#ISSUE_NUMBER. Please add yourself to claim some of these:)
Getting started: DON'T PANIC!
- Version Control (@mikecrouher/#11)
- Licenses (@mikecrouher/#20)
- Request for citation (@mikecrouher/#12)
- Getting feedback (@mikecrouher/#13)
- Show your code to someone else
- Find your local support people
- Get used to developing in public
- Don't Reinvent the Wheel (@mikecrouher/#14)
- Finding and evaluating upstream projects
- Documentation (@mikecroucher/#16)
- Requirements gathering 101 (@katerena/#17)
"I want to code better."
- Testing Verification and Validation
- Unit / integration (Jeff Carver)
- Test Driven Development (@hainesr/#5)
- Behaviour Driven Development
- Code Quality
- Metrics (@hainesr/#8)
- Code review (Jeff Carver)
- Pair Programming?
- Continuous integration (@dedal18/#3)
- Issue tracking and bug reports (@katerena/#18)
- Release management
- Documentation ++ (@RvanNieuwpoort/#6)
"I want better code"
- Modularity / code design (@JeffCarver/#19)
- Performance, Parallelizing (@mikecroucher/#1)
- Coding conventions (@JeffCarver/#22)
- Writing reusable code
- Writing testable code (@JeffCarver/#23)
- Design Patters? (Andrei Chis)
- Technologies/environments/libraries (@mikecroucher/#2)
- Technologies/environments/libraries
- Python (Mike Croucher)
- R (Mike Croucher)
- OpenMP (Mike Croucher)
- Fortran (Mike Croucher)
- CUDA (Mike Croucher)
- MATLAB (Mike Croucher)
- Mathematica (Mike Croucher)
"You have a team of developers now, how to cope with the new challenges?"
- Formal requirements gathering (@JeffCarver/#24)
- Version control ++ (@hainesr/#7)
- Management process (???)
- Group maintenance / morale / interpersonal interaction
- Maintaining momentum
- Hiring developers
- Onboarding
- Communications processes and tools (@katerena/#21)
- Team based development
- Collective ownership of the code (@hainesr/#9)
- Technical debt (@hainesr/#10)
- Project Management (@JeffCarver/#25)
"You have your first pull request, and a beginning of a community. What now?"
- Lifecycle
- Sustainability
- Community management
- Release management
- Governance, code of conduct
- Rethinking Licensing, Contributor Licensing Agreements
- Outline for each of the technical chapters: "Here is what it is," followed by "Here is why it matters"
- Every chapter is in a section organized by an audience with a need. Consider this audience and need during writing.
- Default choice if you don't care and just want to do something Other choices with positives/negatives and questions you should ask to make a decision
- No tutorials! Find existing materials and link to them. This is a more meta reference for navigating those existing resources.
- Create an issue for working on your chapter and link it from the TOC; also link from the TOC to the work-in-progress .md file for your chapter
- Copyright your writing! Write "copyright your_name year" at the top of your files, please!