I recently joined a tiny nonprofit whose flagship product is based on a decades-old C codebase, and I've been brainstorming with a senior developer about things I can do to help make working with all the legacy code easier.
Here's the complication: this nonprofit has no resources to hire full-time developers (it's just me and the senior guy), and so a lot of our work is done by short-term volunteers. Unpaid interns, professional developers who give us some of their free time, people at hackathon type events, etc. Many summers there's a ratio of something like 1 full time developer to 5 interns.
Based on books and my experiences in more typical companies, so far I've come up with ideas like:
- better and more thorough testing
- IDE tooling like intellisense-type things
- moving away from more obscure frameworks and languages
- CI tooling like a continuous build
- well defined processes for things like Git workflow
- more thorough and accessible documentation, especially for the initial codebase orientation stuff
...but all of this is based on my knowledge/experience from places that have full-time, long-term developers that can actually get fully onboarded and comfortable with all the processes. My nonprofit's challenge is not so much "what tools should we give this full time developer so they can be as productive as possible?" - it's "how do we onboard a volunteer to this gnarly codebase and all the associated tooling/processes as fast as possible, so they can actually get something done in their <= 3 month tenure?"
So my question is: what unique architecture/DevOps considerations should I be thinking about when I'm dealing with so many short-term contributors? What strategies should I be using here?