Background: I'm a tech cofounder of a startup (unrelated). I've been talking to an international non-profit on the side as a pro bono service. We've come to the following problems.
Problems: 1) Nonprofits have lots of technical needs, things they want built, etc. But they have limited resources. 2) Developers can build things but typically have limited availability so cannot engage with longer term charity projects (about 3 months)
Observation: 1) Developers want to help. 2) Developers can offer other things than coding. 3) Who have time and want to build things? Student interns...
Solution: Pair up experienced developers with interns, to form small 2-3 person teams and dive into non-profits.
Benefits: Developer learn to take on CTO role and do good. Intern gets to solve real problems under guidance of mentor. Non-profit get to make use of technologies to solve their problems.
For any given technology solution, most of its life is spent in maintenance mode. In the simple case, say you as a developer build a new widget for the organization's website. You finish it, feel chuffed, and move on.
One month later, the organization needs something new added to it, or there's a security vulnerability in the tool you used to build it which needs to be patched, or the API the widget was connecting to got upgraded and it's stopped working.
The organization now has three options:
- Hope for another volunteer who can come along and fix the thing which was broken. Hint - this never happens. Tech volunteers almost always want to offer their skills on greenfields projects or exciting extensions to functionality, not mundane business-as-usual work.
- Pay a consulting company to make the change for them. This gets very expensive very fast, because consulting company.
- Stop using whatever you built in the first place. This often has huge business implications by this point, because having trained everyone how to use this new tech you now have to take a step backwards and stop using it. Instant resentment of the system which put this in place.
As annoying as it is as developers that we can't volunteer our services for a few weeks then disappear, that's just not how IT systems work. A system is not finished until it's been retired or replaced by something else, and if you're providing something to a non-profit which does not have an in house IT team to manage the software through the rest of its lifecycle, you're basically donating a liability.
Even if that's not the case, you're dealing with people who don't necessarily view or understand technology the way that you do. You could spend several months building what you think they need, then you come back and they say they wanted something else, or some substantial modification to what you've built. You don't have time to dedicate to it any more, they don't have what they want, and both parties go away dissatisfied.
I'm saying this as a developer who has been involved with several non-IT non profits, including my current one which I've been working with for over 6 years now. I frequently do volunteer dev work for that project, but even the most self-sustaining piece of software I ever set up for them still needs someone to go in there once a year or so and apply software patches and security fixes, and every six months or so their requirements change in some way or another and I have to dive back in to accommodate. "Three month" volunteers are almost always much less help then you would expect them to be.
My first thought was to look at websites such as http://www.volunteermatch.org/ . What I found was that the organizations typically requested website redesigns (often using wordpress as the backend) and help with social media management. The time commitment of these opportunities were as you stated above, longer term requiring a few months. The scope of work provided was often inadequate and would require you to contact the organization for details.
Solution:
Create a guide on how to assess requirements and create a proper scope of work for projects, the organization seeking volunteers would submit this as part of their application[1]. Then have a volunteer that would make an appointment to speak with the organization and refine this SOW into a workable project.
Once the project was accepted and requirements laid out; open the opportunity for contributors to offer their time and create a core team to start the project. For website redesign/management use a common codebase that could be reused for projects which would reduce the on-boarding process. This would also allow general documentation and training materials to be created so the management of the website could be transitioned to a full-time volunteer/employee of the organization.
Once the common core was developed and a repo created, issues/tasks would be created and open for contribution which would give devs willing to volunteer a few hours some opportunities to contribute.
I think a handful of well written guides for marketing, social media management, front-end/backend documentation and possibly even basic web design tutorials would go a long way towards improving organizations. A second level of this would be to have recurring roundtable meetings (google hangouts?) where more general individual problems could be addressed allowing for the main project scopes to be slimmed down.
1. Also, works as a weeding out process by requiring a deeper commitment. Organizations would have to to follow to guide, watch a video and think through their needs as opposed to posting a paragraph asking for help.
Related experienced dev/intern pairing program: A non-profit named Launch Code (http://launchcode.us/) was recently started by Jim McKelvey (co-founder of Square) that places new developers with companies for paid pair-programming internship.
I'm not totally sure what the demand is for writing other custom software for non-profits, but I'm sure there are plenty of groups who need stuff beyond websites. It would be great if some of the stuff as a result of this project ended up as open source. It would allow other people to continue building it, and would also give the interns experience with version control, and something an employer can look at in depth.
Background: I help run CoderDojo NYC and we're always looking for technical volunteers to help at our events. After speaking with a few other teach-kids-to-code organizations, we realized that they had the same problem.
Our solution: https://github.com/carlsednaoui/nycio (it's a work in progress). It will look like this: http://www.nyc.io/ Everything is open-sourced — we're also looking for more contributors if anybody wants to help.
How to get volunteers? We're partnering up with NYTM to build the tech volunteer pool and help them connect with organizations. You could imagine doing the same on your end but with different schools and organizations (happy to send intros where relevant).
Let me know what you think. If you want to chat more we can connect via email <username>@gmail...com
I think for something like this to work, you'd have to get approval for a project and the scope/timeline before anyone is on-boarded. I'm fairly fortunate where I work, but a lot of times, getting buy-in can take long and be a rather painful process.
Also, do you have a scope of what type of things can be built? It would be beneficial to work out of a common Github/etc. so that future projects can build off of previous, and updates can be rolled out this way. For example, I know an organization I used to work with wanted a simple reception app - schedule an appointment, and it sends out reminders via text and/or email on the timing, and then it can also be used to check in. This would be simple using Twilio/Tropo and could be super easy to save in a state for other orgs to plug in and start using.
Great idea by the way - excited to see where this goes :)
There are many challenges: finding mentors, finding good projects, managing the projects, etc. But I think they can be addressed.
There are some other people that would be interested in your idea at P2PU. If you'd like, share your idea on thepeople.p2pu.org
Both of them need tech talent and are struggling. Would love to discuss this with you further.
What I would look at is teaming up with universities and professors and see if you can get students to work in teams on a non-profit project for school credit (possibly as capstone projects?). It allows you to side-step the whole salary and competing with internships thing, and gives students a chance to get real world experience during the school year. Of course that creates the new problem of finding a progressive enough university to sponsor that kind of program, but it's an interesting avenue to explore.