I recently started a new job as a Software Engineering Manager for Compassion International's Innovation team. My first task is to build a software development team that I'm calling the Foundation Team. There are a few buzzwords here so lets break them apart.
Compassion International has been around for a long time and is one of the largest nonprofits in the United States. Their mission statement is: "Releasing children from poverty in Jesus' name". That's a pretty loaded statement, what do we mean by it? I'll do a long post on Compassion's current mission but that's not for now. The simplest explanation is this: Compassion International works to release children from poverty by working through local churches to provide food, education, healthcare, and spiritual development. A Side note here is that they do not require children be Christian or convert to receive aid. Compassion funds this program through 1-1 sponsor to child relationships. If you have ever seen an ad to Sponsor a Child or something similar that is the model Compassion uses. One person pays for the needs of one child, they also get to have a correspondent relationship with that child through letters that can be sent back and forth between them. The letters are actually pretty interesting so I'll come back to them another day.
So what is the innovation team? The innovation team isn't really an innovation team. Innovation is a pretty big buzzword and that is initially where the team started, but here is the deal with innovation: Everyone innovates and calling a team innovative doesn't make it true. We call ourselves the Compassion of Tomorrow because that better reflects our purpose. Our goal is to go from the 2 million children currently in our program to a 10x or 100x factor of growth. In order to do that we have to find new ways to solve child poverty and new ways to connect people to the mission of solving child poverty. Our team is tasked with working to find those new ways.
So where does the foundation team fit into all of this? The foundation team is the team responsible for building, you guessed it, the foundation upon which all of our new ideas will be built and tested. They will be starting from scratch and the core platform we build will not rely on any existing solutions at Compassion but rather is all greenfield development. While there are a few things we know the foundation team will build; the key to this team is that it will be focused on exploring which technologies to use and then it will work on creating a core platform of capabilities. The capabilities we need will be determined as other members of the team do research and analysis on specific groups they have been assigned.
We have made a few technological decisions already. Our core API platform is AWS focusing primarily on serverless technologies such as Lambda. We think we will go with react.js as our front end framework but that is not yet set in stone. The thinking behind using AWS Lambda is that we want to focus on working on the things that make us unique and not worry about the parts of development that don't like server administration or container management. We know that we will have a pretty wide variety of ideas we need to support, so the technology needs to let us prototype as quickly and reliably as possible. These prototypes need to be in a position to go into production without rewriting them as well.
My title is Engineering Manager, but for most of my career I have been a software developer of one level or another. I still expect to spend roughly 50% of my time working in development while using the other half to manage the team, provide mentoring, and work with other groups to better understand the needs our team will need to meet. That may seem like a lot for one person to do but I strongly believe in empowering individuals to be their best, make independent decisions, and for the most part manage themselves. The things I tend to focus on with people I manage is making sure that they understand what is expected of them, feel equipped to meet those expectations, and are growing/improving. As a team we will focus on best practices, coding standards, and the way we work. I certainly plan on having a significant voice in those things but I plan on letting the team as a whole develop those to best enable them to get their work done.
Being a member of the innovation team is both an honor and a challenge. We are challenged with solving one of the worlds greatest problems. We don't yet know what our first few projects are, but the prospect of getting to do work that truly matters is very exciting. The responsibility that comes with it, humbling.