The nonprofit 'nerd' who programs for good
Daniel is an editor for Triplebyte's Compiler. He's spent years writing about software and technology and even has a few "Hello, World!" programs under his belt.
This is Code to Success, a Q & A series by Triplebyte where we invite software engineers to talk about their unique paths into programming and share insights on learning and working in the industry.
For this edition, we spoke with Darrell Owens, a data and policy analyst at California YIMBY whose fascination with public transit APIs sparked a career in programming for good.
(The chat below has been edited for clarity and brevity.)
What does it look like to work in nonprofit programming?
Right now I’m a policy analyst and data analyst at California YIMBY, which is a statewide house advocacy organization. Unlike a typical software company, it doesn’t specialize in making software. It's just a company that uses tech and software in the work it does.
I'm the guy that’s tasked with finding the impacts of a policy or project, and it's kind of this weird blend between a lot of software engineering skills, such as being pretty experienced with C programming, and then there's a lot of more data analytics, such as writing Python scripts to analyze an XML file from the Census Bureau.
I would say my interests lay almost just as much in the non-programing aspects, like the policy analytics and presenting reports to stakeholders.
Before this, I worked with an affordable housing company in Berkeley, where I did things like develop jar programs with API clients and work on GIS programming to visualize regional distribution for stakeholders.
What came first, the desire to work in community projects or the desire to work in programming?
I wanted to work in software when I was in middle school, but I feel like both interests developed pretty early.
I grew up in a pretty violent neighborhood when I was young and my parents did not want me out on the street. I remember my dad bought me a computer to keep me in. Over time, I started having a lot of fun playing around on it, but more with how the computer worked than games on it. I remember getting really into, like, the browser Inspect element.
I would say that my interest in housing and transportation have always been there since I was young, too. My dad was a sewer management worker, which meant he was always very familiar with infrastructure, and he would explain to me how things in the city work. That encouraged in me a real interest in systems and grids, one that persists to this day. When I matured a bit in my computer tinkering, I discovered that APIs were the key to getting to interact with transit systems.
The bigger focus on housing came around the time when I became a lot more conscious of displacement and gentrification affecting my neighborhood – and even my family.
How did you go from computer tinkering to actually programming?
I started learning real programming in high school. I remember playing around with Python scripts and things in classes then, but I don’t think I became a good or credible programmer until I was about 19 and in community college. Even though I’ve taught myself things – like C++, for one – class is pretty important. Fully learning Python at community college is pretty much the last brand new thing I learned, and I learned Java there before that, too. I have since taken a class at UC Berkeley in C, but that’s not that different from C++. And I’m actually currently doing more C at UC Santa Cruz.
So, yeah, it's kind of a comprehensive thing.
Oh, you learned Python later in the game. Do you recommend that? These days, it’s often the first language a new programmer picks up.
Yeah, I first learned with C++, which is a crazy and insane language in many ways, but I feel like it actually served me better. Python is all libraries and things assisting you. Learning Java and C languages after Python is a pretty big step up. With C, in particular, you're writing as close to the computer architecture as you can get short of Assembly.
So, sure it might be easier to get up and running with Python, but I would challenge folks to start with C. You'll love it, and it'll take you only a little bit more time to get it than Python.
Ok, so back to your path. How did you get that first programming job?
It was thanks to a local volunteer position I had working with a city commission. Someone on the board who also worked at the affordable housing company where I would go on to join happened to know I was a programmer. And I say “happened to know,” because the volunteer position I had at the time didn’t have anything to do with programming. But that’s how I got my foot in the door.
Is there one project you’ve worked on in the couple of jobs you’ve had as a “not-for-profit” programmer that you’re most proud of?
I think the biggest thing I ever did was work on a program to randomly select people to get affordable housing, which is really a substantial process. My role was to build a kind of lottery model to see how a real lottery would work.
First of all, I was stunned that this one housing project that only had like maybe 20 or 30 homes in it had over 11,000 people applying. I remember that alone hitting me as a sign that the housing crisis was even worse than I thought, which I saw as kind of a justification for the calling I felt to work on the problem.
Next, since part of the job was to parse out what percentage of applicants lived where, I ran into another sobering data point and a programming challenge when I realized that a high number of applicants were either living in their cars or homeless. The programming challenge part was that people would find all these creative ways to fill this info in, whether it was a PO box or a street corner. Dealing with this among a data set of 11,000 people was an introduction for me into real life programming edge cases, for sure. I remember writing all these conditions, like an address format is numerical values, whitespace, and then chars. But if you don't see that format, then they're probably homeless, but they still need to be factored in with the data they’ve entered.
I’ve studied programming for a while, so I was technically experienced with these methods, but it's another thing when it's real people's lives. So, I got to see how coding can impact folks, and you're actually writing the programs to catch these real-life edge cases that are kind of indicative of our real life failures.
I remember that was just something I worked my butt off on, and it's probably still the proudest I've been about a piece of software I've written
Do you think there’s a shortage of software engineering talent in the nonprofit and public sectors?
I think the private sector actually has a bigger shortage, because tech companies are willing to pay high salaries and they still can’t get every job filled.
But to your point, the public sector has trouble being competitive, sure. I remember the local train system here, BART, was offering a software engineering job for something very close to about $100,000 a year. That’s not a lot in the Bay Area. And the position was calling for some considerable level of experience. So I do think that hurts a lot of the public sector in terms of not always being able to bring people with the greatest coding skills. I mean, a lot of these local city websites and government websites and special district websites look like they were coded by me when I was 18. You can just break into them and they always collapse so easily.
So, yeah, I would say that being able to pay competitive wages is something that kind of dogs both the nonprofit and the public sector when it comes to tech talent.
Do you think you’ll ever make the jump to software engineering roles at for-profit tech companies? Anything out there interest you?
There definitely are some private sector technologies that I’m interested in. I've been working on a machine learning project with several folks. It’s about facial recognition and its social impact, focusing on Twitter's machine learning algorithm that organizes image previews based on which face and, seemingly, skin color it prioritizes.
So, you know, I wouldn't be surprised if something in ML draws me over. I could also see myself doing something in GIS.
Then again, I remember seeing that BART job and thinking to myself that nerds like me take those jobs. So who knows.
Triplebyte helps engineers find great jobs by assessing their abilities, not by relying on the prestige of their resume credentials. Take our 30 minute multiple-choice coding quiz to connect with your next big opportunity and join our community of 200,000+ engineers.