by Michael D. Johnson

How I made my first million dollars (in pro bono code)


I gaze down at the Potomac River from a glass-walled conference room.

It’s my third week of interviews with the same firm. I’m moments away from securing the kind of prestigious consulting gig that most fresh grads from New England dream of.

Business casual. Room to grow. They’ll even throw in an extra week of paid leave every year for volunteer work.

The commencement speeches are still fresh in my memory — the speakers always reminding us to “give back” and to “change the world.”

My wife and dog moved down to D.C. with me so I could do just that. Give back. Change the world.

And now all that stands in my way is a panel of type-A personalities in suits.

But they’re running late, and I drank way too much coffee to just sit here staring at the river. So I open up Reddit on my phone and start scrolling. An article catches my eye. I click through and start reading it.

I won’t realize this until later, but that final interview I’m waiting on? It won’t even matter.

Instead of spending one week a year doing volunteer work, I’ll soon spend 52 weeks a year doing it.

I’ll lead a program that will go on to ship more than a million dollars worth of pro bono code in its first 18 months.


I’m on the phone with Quincy Larson, talking with him about his article. His central idea is that new developers can get real world experience by building projects for nonprofits.

Quincy tells me that so far his theory about volunteers helping nonprofits with pro bono code is just that — a theory.

And it’s a theory with a lot of detractors.

He’s spoken with countless companies who coordinate volunteerism for nonprofits, and they all tell him the same thing — it will never work.

Sure, they say, pair programming and agile software development are proven ways to ship code. But to do it with volunteers? And to do it remotely?

“There are a million moving parts that could fail,” they tell him. “Without a budget and financial incentives, that initial burst of good intention just isn’t sustainable.”

As I talk with Quincy — pacing around my newly-rented studio apartment just miles from the White House — my mind races with ideas.

Just one successful project.

One proof of concept.

That’s all this would take.

There are probably a thousand nonprofits in my neighborhood alone. They all want to be situated as close to the federal cash cow as possible. I can reach out to them. Convince them to take a chance on our idea.

“I can help you,” I tell Quincy.

I’ll find the nonprofits and manage the projects. He’ll leave the details to me.


The sun rises over the National Mall.

On the other side of the country, Quincy is winding down a pair programming session with a developer in Korea. He sends me “cheers” through our chat room system, then stumbles off to bed.

I take a sip from my steaming coffee and open Free Code Camp’s shared inbox. We’ve got an email from a nonprofit roller derby league in Portland.

The stakeholder wrote that their league has been using volunteer management software, but that it lacks reporting and multi-user access. And it doesn’t offer the flexibility they need so they can track their skaters as they move throughout the system.

“We heard about you on Twitter,” she says. “We‘re hoping you might be able to help.”

I don’t know the first thing about roller derbies. But I do know that we can build an app with the functionality she described. And it would be a great project for a couple of new developers to add to their portfolios.

I set up a time later in the day to speak with her. My plan is to get more details about their workflow and learn all the failings of the software they currently use.

On the phone, I reassure her, “I understand your concerns. I know this all seems hard to believe. We’re really not going to charge you a dime. I’m telling you the truth. That’s not how we make money.”

What I don’t tell her is that we don’t make money at all, yet. The entire operation is being run on Quincy’s savings.

Still, she’s skeptical. It’s much harder to convince her than I thought it would be. What we’re offering sounds too good to be true.

But she goes ahead and tells me more about her organization, and what they need their volunteer management system to do. I’m able to convince her that we aren’t pulling some sort of bait and switch.

She draws a heavy breath. “All right,” she says. She pauses for what feels like an eternity. “Let’s do this.”

There’s no time to celebrate after we hang up. I need to decide which developers in our open source community are the best fit to tackle our first project.

At this point, Free Code Camp’s curriculum consists of a mere 200 hours of tasks, such as “Complete Stanford’s Computer Science 101 course” and “Solve all the algorithm challenges on CoderByte.” This is a far cry from the 1,200 hours of in-house coding challenges that we’ll ultimately require before developers can start our nonprofit projects.

I open up my database and find two people who’ve completed the 200 hour curriculum, live in similar timezones, and are available for the same number of hours each week. I send them both emails to schedule a time to talk.

I explain the project to them over the phone, and how all of this is going to work.

Of course, I’m not actually sure how all of this is going to work. It’s not like there’s some standard-issue instruction manual for running fully pro bono projects, remotely, with volunteers who are new to software development.

But I keep my anxieties to myself. And we start the following day.


I open up my calendar, then immediately apologize to my wife. She won’t be seeing much of me today.

I’m serving as the agile project manager for 13 ongoing projects, and hosting five sprint meetings today.

The final meeting — which starts at midnight — is with a nonprofit based out of Indonesia. If all goes well, this meeting will conclude with us shipping our first finished project.

The organization, Kopernik, distributes devices to rural villages, such as water filters, stoves, and solar-charged lamps. Women in these villages making a living by selling these devices. In a subsidized form of entrepreneurship, this “Wonder Women program” stimulates local economies and speeds up the spread of life-changing technologies.

Kopernik uses an old, paper-and-pencil-based receipt system in the field. They lose a lot of data this way, but at least it still works when villages lose their internet connection — which they often do for weeks at a time.

Over the course of 10 one-week development sprints, we’ve built a Chrome extension that records sales data locally, then bulk uploads it as soon as the device has access to the internet. Thanks to this app, Kopernik will have better data to show their efficacy next time they apply for additional grant funding for their Wonder Women program.

As the meeting ends, the stakeholder from Kopernik surprises us with a short thank you video. She says they made it for us, as a small token of their appreciation.

It’s all the payment we need. A short time later, we deliver the roller derby management system. No thank you video this time, but an incredibly grateful nonprofit nonetheless.

It becomes clear to me that we’re onto something big.

And this is just the beginning.

There are thousands of nonprofits who could ultimately benefit from the sort of internal tools that we’re building at no cost.

But there’s no way we can help them all if it’s still just me setting up these projects and running these meetings.

To reach that level of scale, I’ll need help.


I’m on hold with the Project Management Institute. I’ve been reading the experience requirements for their new Agile Certified Practitioner (PMI-ACP) certifications.

If my understanding is correct, leading our agile nonprofit projects will count toward the 2,000 hours of agile experience required of project managers.

And if these hours count, we should have no problem recruiting volunteer agile project managers to help us code for a cause. After all, they’ll stand to gain the same real world experience as our developers.

The hold music cuts out, and the man hops back on the line. He tells me that yes, these nonprofit projects will count toward the PMI-ACP.

Boom! I can’t help but slap my hand down on my desk. I thank him and end the call.

I immediately start pounding the digital pavement. I create a Google form, then hit up Reddit and LinkedIn, putting out a call for volunteer agile project managers.

My plan is to put together an entire team of project managers, so that we’ll be able to take on as many projects as possible.

Only five months ago, all of this was just a theory—a theory that experts had met with skepticism.

And yet I’m staring at a spreadsheet of 30 applications. And I realize that this is what it feels like to be part of an open source community that’s going places.

It’s on. We can scale this.


I’m on a call with a nonprofit based out of New York City. I glance at their application in my database. They’re spending a bunch of money on software that’s too cumbersome to use. They’ve applied for a pro bono Code Grant to replace it.

“How much are you paying for this software, again?”

“Around $12,000 per year,” she says.

“And nobody will use it?”

“It takes 25 clicks to edit a line on a client record,” she says.

I’m no UX designer, but that number makes me wince.

I ask her what other solutions they’ve tried. She tells me there are only two existing solutions for what they do. One is the program they’re using. The other is prohibitively expensive.

After asking several more qualifying questions, it becomes clear that they’ll need a custom solution.

I don’t see any red flags, so I give her the good news: we can give her organization a Code Grant for pro bono development. She’s delighted and relieved, and says she’ll share the news with her team.

I tab over to my database of volunteers. I’ve interviewed all of these applicants personally, but I probably didn’t need to. They’ve completed 1,200 hours of full stack JavaScript challenges and built 30 projects. They’re more than qualified.

Then I call Jason from our agile project management team. “I’ve got an education-focused nonprofit in NYC who needs an app with bulk data imports, the ability to edit those data, and CSV export functionality. You interested?”

He tells me he’s always interested.

I send him the contact info for two of our volunteers who requested to work on education-based nonprofits.

Jason schedules a scope conference to start the project. It’s our twenty-third.

Then he and I rush off to another app delivery conference.

That’s when I realize: when you apply a conservative hourly rate of $100 to developers and project managers for these 500-hour projects, we’ve shipped over a million dollars in pro bono code.

And that’s just what these nonprofits saved in development costs. It’s hard to estimate how much time and money we’ve saved them in increased productivity.

The solutions we’ve built for them are helping them raise money more effectively. In some cases, a two-hour process becomes a two-minute process. We’re giving them better insight into their teams and logistics. We’re helping them carry out their missions more effectively.

The meetings are done for today, and the sun is still shining. I grab a leash and take my dog down to Rock Creek for a swim.


If you liked this, click the? below so other people will see this here on Medium.

And if you’re with a nonprofit, apply for a Code Grant today.