James Thompson explains the importance of diversity across all axes for a strong engineering culture

In his role as a Principal Software Engineer, Mavenlink’s James Thompson spends his days solving interesting technical problems — and helping members of the Engineering team grow and learn. For this story, we discussed how coaching, pairing, and diversity help the team continue to improve as the company grows.


Tell us a bit about your role at Mavenlink.

I started at Mavenlink in 2015 as the second hire in Salt Lake City. An engineering team was already established at our San Francisco office, but I was brought on to build the SLC Engineering team from scratch.

I transitioned from a team lead role to Principal Software Engineer earlier this year. As a team lead, I was primarily concerned with delivering features on time and making sure engineers had the tools they needed. Now I’ve shifted into an oversight role with a more technical focus. I’m involved in ground-level development, but I also collaborate with other departments to make sure our team is serving the company’s overall plans.

How do you measure your own success, and how do you track the progress of your team members?

To some degree, their progress and my success are one and the same. I can see how well I’m teaching based on a couple of things: the quality of the code I’m reviewing, and how quickly our new hires learn. I also want the people I’m managing to be happy and satisfied in their roles. If that isn’t happening, neither of us is succeeding. It’s a personalized process; as a team member gains more clarity about their professional goals, we work together to develop specific metrics and track their progress.

“To some degree, my team’s progress and my success are one and the same.”

What’s the difference between a manager and a coach at Mavenlink?

Many of us serve as coaches, even if we’re not managers, and usually for team members who aren’t our direct reports. I’m working with two people right now, and I see myself as their advocate to help make sure their experience at Mavenlink is as positive as possible. I try to follow my coachee’s lead; my job is just to make sure they’re equipped to succeed on the path they’re most interested in.

We meet weekly to give them a chance to share their struggles and successes. I might direct them toward helpful resources or talk them through an issue, but most importantly, I look for opportunities to build on what they’re doing well. If they’re excelling in a particular area of our product, I might talk with other team leads about upcoming projects where my coachee could build on their knowledge.

Let’s say 90 percent of what an engineering team does is similar from company to company. What is the 10 percent that’s different at Mavenlink?

One difference is that Mavenlink is committed to pair programming and the benefits it provides. For example, lots of companies say they do agile software development — but pairing helps cement it into our culture. Pairing also helps new engineers get up to speed very quickly because they’re never alone. From day one, you’re matched with someone who’s familiar with the work you’re expected to do.

I would also say that, in other fields — say, machine learning, data analytics, or artificial intelligence — many of the practical applications lie far in the future, whereas we’re empowered to examine long-standing problems and start applying solutions right away. We might develop a process next month we couldn’t even anticipate needing yesterday; that’s how fast we’re adapting.

Another difference is how much attention we pay to the “why” of what we do. We encourage engineers to think about end user’s needs, and we collaborate with our UI, UX, and product management teams, because we don’t want people stuck in a coding tunnel without understanding where it leads.

Tell us more about the “why” part. How does keeping the end user in mind change the way Mavenlink engineers work?

If we think about the companies getting lots of hype right now, they’re primarily looking for better ways to sell to their customers. They’re mining user data for marketing insights, for example. But at Mavenlink, rather than focusing exclusively on making our own system more profitable, we’re also looking for ways to make our customers more profitable. That means our engineers need to really understand how our customers’ industries work.

“Lots of companies say they do agile software development — but pairing helps cement it into our culture.”

Can you tell us more about how pair programming gives Mavenlink an advantage?

As we develop new features, pairing gives us a deep, collective knowledge that everyone on the team can access. Take our longest-serving engineer, who obviously has expertise in a lot of different areas of our code. Rather than giving a talk on what he knows, he simply sits down and works with people, which is much more effective. Pairing also dovetails with Mavenlink’s emphasis on teaching — and not just because more experienced engineers teach newer engineers. I’ve been developing for 13 years, but I often learn things from team members who have less experience but bring a different perspective.

Pairing also provides more checks on our work. For example, I was working on a refactor recently with one of our junior developers, and my immediate impulse was to jump from A to Z, right to the end product. But pairing with someone less familiar with the process reminded me of why each of those steps and checks is important. It pushes us to be more deliberate, which is ultimately as valuable as the code itself.

Does that fact that you pair program affect which qualities make someone successful on your team?

For sure. Most companies want people with strong communication skills, but for us, that’s at the top of the list. You don’t have to be extremely outgoing to excel at pairing; a number of folks on our team would describe themselves as introverts. But you do need to be comfortable collaborating and adapting to different personalities. The key is being able to break down and explain complex ideas; we look for people who have a natural inclination to teach.

We also value process and don’t need perfect solutions right away, so we tend to steer clear of people who are too attached to their own methods or ideas. It’s important to work collectively toward the best outcome. Humility goes a long way here.

What’s most exciting about your job right now?

Mavenlink is bringing on new customers quickly, and my particular interest in software architecture and design dovetails nicely with that process. Lots of companies have built to massive scale, but very few have done it with a system as complex as ours. That’s the most engaging part right now for me personally. Each new customer brings hundreds or even thousands of new users, and there are interesting technical problems that come with that.

“We’re trying to be deliberate about diversity — in terms of age, ethnicity, and gender, but also experience and education.”

Are there any interesting challenges you’re working through right now?

We need to do a better job of bridging the gap between our locations and making sure we operate as one team across two offices. There are times when San Francisco isn’t fully in the loop on things being talked about here in SLC, and vice versa. Increasing that visibility and communication is still a challenge for us, and we’ll be working this year on some better ways to address that.

As you think back on building the team so far, is there a standout lesson that comes to mind?

The value of diversity cannot be discounted, especially in Engineering. We’re trying to be deliberate about that — in terms of age, ethnicity, and gender, but also experience and education. We have folks with degrees in computer science, and folks who are still pursuing that or who have alternative educational backgrounds. A greater breadth of experience means more creative ways to solve problems. My own background is religious studies; another engineer studied English literature. The more diverse we can be across as many axes as possible, the wider our perspective becomes.


Interested in joining the team?

Check out Mavenlink engineering roles in S.F. and Salt Lake City, or reach out to JB Steadman (SVP Engineering) at jbsteadman@mavenlink.com.


This story was created in conjunction with Job Portraits, a San Francisco based employer brand agency that helps startups hire at scale.