Skip to content

How FreeCodeCamp Nonprofit Projects work

Arsen Melikyan edited this page · 6 revisions
Clone this wiki locally

Building nonprofit projects is the main way that our campers learn full stack JavaScript and agile software development. Once you've earned both your Front End Development Certification and your Full Stack Development Certification, you'll begin this process.

Starting with the end in mind

Our goal at Free Code Camp is to help you land a job as a junior software developer (or, if you prefer, a 'pivot job' that leads your current career in a more technical direction).

You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have four nonprofit projects. We estimate that the 800 hours of nonprofit projects you're going to complete, in addition to the 800 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.

Choosing your first Nonprofit Project

We've categorized all the nonprofit projects by estimated time investment per camper: 100 hours, 200 hours, and 300 hours. These are only rough estimates.

Example: if you and the camper you're paired up with (your pair) each stated you could work 20 hours per week. If the project is a 100 hour per camper project, you should be able to complete it in about 5 weeks. Our Nonprofit Project team will match you and your pair based on:

  • Your estimated time commitment (10, 20 or 40 hours per week)
  • Your time zone
  • The nonprofit projects you've chosen
  • Prior coding experience (we'd like both campers to be able to contribute equally)

We won't take age or gender into account. This will provide you with valuable experience in meshing with diverse teams, which is a reality of the contemporary workplace.

You'll only work on one project at a time. Once you start a nonprofit project, we'll remove you from all other nonprofit project you've expressed interest in. There's a good chance those projects will no longer be available when you finish your current project, anyway. Don't worry, though - we get new nonprofit project requests every day, so there will be plenty more projects for you to consider after you finish your current one.

Finalizing the Project

Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:

  • We'll wait until there are two campers who have chosen the same project and look like they're a good match for one another based on the factors mentioned above.
  • We'll call the stakeholder to confirm once again that he or she agrees with our terms and has signed our Nonprofit Project Stakeholder Pledge.
  • We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder.
  • If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project.

This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.

Nonprofit Stakeholders

Each nonprofit project was submitted by a nonprofit. A representative from this nonprofit has agreed to serve as a "stakeholder" - an authorative person who understands the organization and its needs for this particular project.

Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.

When you and your pair partner first speak with your nonprofit stakeholder, you'll:

  • talk at length to better understand their needs.
  • create a new Trello board and use it to prioritize what needs to be built.
  • and establish deadlines based on your weekly time commitment, and how long you think each task will take.

It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.

You'll continue to meet with your stakeholder at least twice a month in your project's Gitter channel. You should also ask questions in your project's Gitter channel as they come up throughout the week, and your stakeholder can answer them asynchronously.

Getting "blocked" on a task can take away your sense of forward momentum, so be sure to proactively seek answers to any ambiguities you encounter.

Ultimately, the project will be considered complete once both the stakeholder's needs have been met, and you and your pair are happy with the project. Then you can add it to your portfolio!

Working with your Pair

You and your pair will pair program (code together on the same computer virtually) about half of the time, and work independently the other half of the time.

Here are our recommended ways of collaborating:

  • Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email.
  • Trello is great for managing projects. Work with your stakeholder to create Trello cards, and update these cards regularly as you make progress on them.
  • Screen Hero or Team Viewer - These are the ideal way to pair program. Tools like TMUX are good, but difficult to use. We discourage you from using screen sharing tools where only one person has control of the keyboard and mouse - that isn't real pair programming.
  • Write clear and readable code, commit messages, branch names, and pull request messages.

Hosting Apps

Unless your stakeholder has an existing modern host (AWS, Digital Ocean), you'll need to transition them over to a new platform. We believe Heroku is the best choice for a vast majority of web projects. It's free, easy to use, and has both browser and command line interfaces. It's owned by Salesforce and used by a ton of companies, so it's accountable and unlikely to go away.

If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.

Maintaining Apps

Once you complete a nonprofit project, your obligation to its stakeholder is finished. Your goal is to leave behind a well documented solution that can be easily maintained by a contract JavaScript developer (or even a less-technical "super user").

While you will no longer need to help with feature development, we encourage you to consider helping your stakeholder with occasional patches down the road. After all, this project will be an important piece of your portfolio, and you'll want it to remain in good shape for curious future employers.

Pledging to finish the project

Your nonprofit stakeholder, your pair partner, and our volunteer team are all counting on you to finish your nonprofit project. If you walk away from an unfinished nonprofit project, you'll become ineligible to ever be assigned another one.

To confirm that you understand the seriousness of this commitment, we require that all campers sign this pledge before starting on their nonprofit projects.

There will likely be times of confusion or frustration. This is normal in software development. The most important thing is that you do not give up and instead persevere through these setbacks. As Steve Jobs famously said, "Real artists ship." And you are going to ship one successful nonprofit project after another until you feel ready to take the next step in your promising career.

Something went wrong with that request. Please try again.