Theorem is an Innovation Consultancy that mostly focuses on building apps for big companies. Mostly web apps. We also help people with digital strategy and stuff I guess? That’s not my job, so I can’t speak to it.
We’re all-remote. Technically our headquarters are in Los Angeles, but I only know two people who actually live in/near there. Everyone else is spread all across our beautiful planet (but not yet off-planet). Some of us are digital nomads, roaming without a permanent home. Most of us are living and investing in a specific place, which may or may not have other Theorists nearby.
I started working at Theorem on 7 Jan 2016, so it’s been almost a year now. These are my thoughts on what the experience has been like, split into two main sections: joys and concerns.
Lots to be happy about with this job.
1. Not much paperwork
Many consultancies require their employees to log the hours they work. That way the company can charge clients by the hour.
We charge customers per-developer-per-month. Which means we don’t need to get more granular than saying which project we worked on that month.
2. Interesting projects
We only work on custom apps. No off-the-shelf solutions like content management systems or e-commerce platforms.
3. We find the need within the request
Some consultancies function as staff augmentation. If a company is short on engineers for a project, they can hire a few to fill in.
Theorem is not that. We come into a project with our own squad; our own Product Manager, our own Engineers, and our own Designer.
We don’t just do what the client asks for. Instead, we talk through it within our own holistic team and consult back with the client to figure out the actual need. Because everything is vague to a degree you do not realize till you have tried to make it precise (Bertrand Russell).
4. Egalitarian work environment
It doesn’t really feel like I have a boss/manager, and I actually don’t think my product manager thinks of himself in that way either. Just two different roles on the same project, having a discussion about how to best meet the needs of the customer.
I get the sense that that is a common mindset across the teams at Theorem — that we’re all intrinsically motivated, smart people trying our best, and we don’t need to be micromanaged. I’m trusted to be a seasoned professional. Which makes me feel like a poser, sometimes!
5. Owners, not renters
Prior to working at Theorem, I had only worked at product companies — companies that build and sell their own product(s). But Theorem is a consultancy — we charge companies to build apps for them.
Sometimes the experience can be quite different, I understand, but working at Theorem hasn’t felt very different to me.
One reason for that is that we work on products for a pretty long time — I’ve been on the same product since March. I will foreseeably switch to a new product within the next six months. More than a year working on the same thing.
So everyone at Theorem seems to care a lot about the quality of what we build. Shoddy consultancies can have a “it’ll be out of our hands soon; just hack it out” sort of mentality. Not Theorem. Everyone I’ve worked with is invested in making something good, something that lasts.
6. Generous IP agreement 💭
A great thing about working for Theorem is the great Intellectual Property agreement. Usually companies make employees sign a draconian “we own everything you make, even in your free-time” agreement, but Theorem intentionally has an IP clause for their employees that’s basically “you can make stuff on the side and you own it; we encourage you to do so”.
7. Distributed teams are 💯 at communicating
My current team of four spans Uruguay to New Zealand. We have a couple hours for four days a week when we can all be in a meeting together. This means that communication defaults to asynchronous methods, and we end up with very active & informative documentation (Slack channels, Github issues, wikis, etc).
Now, the person in New Zealand is the designer, and he mostly works directly with the product manager, who is in California. NZ ↔ Cali time difference ≈ Cali ↔ East Coast time difference, which leaves them lots of time four days a week to communicate synchronously.
Meanwhile, the other engineer on the project is in Uruguay, which is UTC-3 year-round, so we’re currently two hours apart. Since we both work a pretty typical 9ish-to-17ish workday, we have a lot of overlap, and jump into Google Hangout/Screenhero sessions frequently to help each other think through things.
8. Flexible work hours 🕑
Speaking of 9–17: since communication defaults to asynchronous methods and you can expect basically anyone at the company to work different hours from you anyhow, no one really cares when you do your work. As long as you’re working with your team effectively and getting your work done, everyone’s happy. If you wanna work 7–11 & 19–23, go for it. You don’t have to track hours anyhow, so if you manage to get your work done in less than 8 hours per day, that’s fine too.
9. Annual retreat
We know that In Real Life is still the fastest & deepest way to get to know our teammates, so once a year we have a Theorem Retreat, where everyone hangs out for a long weekend in the same place. Usually Central America, since the biggest concentrations of employees are in North & South America.
Our individual teams can also get together IRL as needed. When my project first kicked off, we all got together at the client’s office in California for a week, and we did so again three months later.
Ok, that was a lot of joyful stuff, but there’s gotta be some downsides, right? Every company has ways it can improve, and working remote isn’t perfect. Right?
Definitely. Here are things that I’ve noticed that are ways the company could improve or things to know about if joining or participating in a distributed team.
1. It takes a long time to settle in 📦
Even though I’ve worked here for almost a year, it being a distributed company makes me feel like I’m just starting to get a true sense of the culture & power dynamics within the whole company. To a large extent, I think everyone’s experience at Theorem is somewhat different, and largely dependent on the team they end up working on. Whole-company dynamics are harder to understand.
It’s hard to feel out topics that people might feel strongly about when you’re not in person. I don’t know if the person I’m Slacking with has positive or negative biases toward ideas I have. Ideas like:
2. We could do a better job of fostering an inclusive company (and tech ecosystem)
I super value a diversity of perspectives within a company, and in some ways being an all-remote company gives us that by default. We have diversity of country, diversity of culture, diversity of language. The company also has a decent representation of LGBTQ people.
But looking at our About Us page, it’s clear that we’ve failed to include other sorts of voices within our company. Eight of the 72 of us currently pictured are not-men (and only one of 36 engineers). Black & Arab teammates are un(der)represented. We don’t yet employ anyone on the entire continent of Africa. And I’m sure there are other missing viewpoints that I’m not currently woke to.
It’s not clear to me that the Theorem people with hiring power think of this as a problem. Or if they do, I’m not sure they think it’s a solvable problem, or a problem worth solving.
And obviously the whole software ecosystem struggles with this same absence.
I would love to be part of the solution. I would love to be that within my company, and would love my company to be that within the world.
One way I see to help that resonates with my abilities is to run an apprenticeship program. As a volunteer with Girl Develop It Philly, I’ve seen many career-changers go through classes and spend free-time learning the craft of Web Development. As a mentor with theFirehoseProject, I’ve seen newbies emerge, starry-eyed, from developer bootcamps. But these people have a hard time finding work!
Companies like Theorem can afford to be picky and only hire engineers with several years’ experience. And so most of us do, leaving this whole emerging pipeline of inexperienced but enthusiastic talent stranded.
I want to hire these people, and grow them into the experienced engineers we need.
I’ve discussed this with my company Guide, and she thinks that my ideas for an apprenticeship program could get good traction within the company, possibly within the next year. There are obvious complications with an all-remote environment. These are things that will be easiest to discuss with people in person, at our upcoming annual retreat.
3. A distributed team can lead to feeling isolated
This is something that individual remote workers need to tend to for themselves.
I go to a coworking space a couple blocks from my house. I usually work half a day from my kitchen table (or backyard), and half the day from there. Being around other humans is an important thing for most people, and coworking spaces fill this need.
But even so, it’s strange to not share weather or even seasons with my collaborators. And when the DDoS a couple weeks ago brought down Slack for me, I felt profoundly disconnected.
My work situation during 2016 has been mad decent. Probably the work situation that has best matched me so far.
Updated 2019–03–19 to refer to Theorem rather than Citrusbyte