When I joined Unity in 2010, we were well under 100 people. I don’t just mean in the Copenhagen office. I mean total. I can’t remember; I think I was employee number 60-something, or maybe it was 70-something. Unity 2.7 was the current version. There was no Linux version. Almost all of R&D sat in a couple of European timezones. We had a single, company-wide mailing list that we used to notify everyone if we were going to be out of the office.
The development processes were basic. We all submitted directly to trunk in Subversion (on a Subversion server that was always breaking down). Our build farm was a few desktop PCs sitting in our server room. We didn’t really do code reviews (at least not in any kind of official or consistent way).
It was a simpler time.
Was it a better time? Gosh, I don’t know. A lot of practical things were easier. There were not really any timezone problems to deal with. We were definitely distributed, but looking back, we were not *that* distributed. Every Monday, the entire R&D department (most of the company) would get together for a single Skype call where our one Director of Development would outline the week’s plans and priorities.
In terms of company culture, we also seemed very consistent. There hadn’t been any big company acquisitions yet, or turnover in key positions. It all felt very us-against-the-world.
But the thing is, companies don’t stay that way forever. As time goes on, the new people become the old people, there are new-new people who show up, and some of the old-old people move on.
Then when your company acquires another company, they’re not just acquiring human beings and IP. They’re also acquiring a culture – a group of people, with their own values, their own way of doing things, and their own hierarchy. They have their own old people and new people.
This all leads to a lot of challenges around communication, knowledge transfer, and the evolution of company culture.
I’d invite you to take a look at The Old Guard by Michael Lopp if you haven’t read it.
The first time I read it . . . oh man, I didn’t feel like I’d ever read something that felt like it hit home as well as that piece did. Finally, someone got it!
Then I realized: I was The Old Guard.
But as I thought about it more, I realized it’s all cyclical. To the single digit employees, or to the employees in the teens or twenties . . . I was The New Guard when I joined. And as The Old Guard circulated our internal Slack, I realized that there were people who joined Unity many years after I did who, yes, felt like they were The Old Guard.
Now that I’ve been at Unity for coming up on ten years, I’ve been thinking a lot about the growth of companies and the sort of cyclical nature conversations go across the years and “generations”. I recognize that it’s an unusual experience to be part of a company that has gone through the type of growth that Unity has experienced in my time there and it would be a waste for me to not actively take a few lessons from that experience.
So if you are at, or are thinking of joining, a company that is undergoing explosive growth, then please take some lessons learned by me with you.
Unless you founded the company, I guarantee you will come in, look around, and find at least one thing that makes you think, “How the hell can anyone get any work done like this?!” That thing will be “wrong”. It will be annoying. It will waste your time. You will want it gone, or fixed, or whatever.
But here’s the deal, New Guard (NG). The correct response to that situation is not to go in telling everyone how X is wrong. The first step is to find out why it is the way it is. It might simply be that way because nobody fixed it yet. But it might also be that way because “reasons”. It could be that “reasons” were once valid, but no longer applicable, but no one got around to updating it yet. Maybe “reasons” are still very valid and you need to figure out how to solve those first before you can solve X. It could be another ten thousand things. The point is that it’s important to be critical, but also maintain an open mind and respect for what came before you.
On the flip side, Old Guard (OG), you need to listen. The solutions you chose might very well have been the right ones at the time, but time doesn’t stand still. Times change, technology changes, and if your reasons for doing X the way you do X don’t still hold up, then they don’t still hold up. I get it. You will get tired of re-explaining the same thing to all these new people. It will be frustrating. You will perhaps not understand why people don’t just trust you to know what you’re doing. But you have to remember that this isn’t about you, this is about X and if you think about it hard enough, it’s not unlikely you can see why someone new coming in will think X is bizarre.
And it might be the case that it really is time for X to change.
It’s all Cyclical
Growing companies have “generations” of people. I think it’s common in software that people change jobs every couple of years, and this seems consistent with my observation that there felt like a shift of New Guard => Old Guard about every two years at Unity. This seems consistent with the fact that every other year there was an influx of new people and we would find ourselves rehashing the same conversations again and again (see previous point).
Once I realized this pattern, I grew to expect it and I looked to welcoming the “New Guard” with a more positive attitude and open mind.
Growth isn’t Linear
So many people have an idea that growth is linear. Graduate -> Entry Level Programming Position -> Mid-Level Programming Position -> Senior-Level Programming Position -> Team Lead -> Etc.
That might actually be a logical path for some people. But I’d venture that it’s rare for a person to genuinely fit neatly on that ladder.
It’s often said that, “Growth is a map, not a ladder.” How to implement this is difficult in reality, but I think the core idea is that good companies make space for people to explore and grow on many axes, not just one.
There should always be conversations going on about career development. But those conversations should start with, “How do I move up to the next level?” They should be started with questions like:
- “How do I expand my skills and knowledge?”
- “How can I learn something completely new?”
- “How do I make a bigger impact on what we’re doing here?”
- “I would like to become an expert in X. What is the path for me to get from here to there?”
You might actually have people who are great for the management track. But there are likely also people who are amazing in individual contributor roles and who aren’t interested in management. But those people still need just as much room to learn, to grow, to develop – and yes, also to gain seniority and have their compensation increased. If you don’t make a space for them, you won’t retain them.
Don’t Be Afraid of Messy Conversations
It’s so important to have messy conversations. Yes, they can be time consuming. Yes, they can be, at times, uncomfortable. Yes, as companies grow from dozens of employees to hundreds, then thousands, it is not possible to discuss all the things all the time in public. But for the stuff that really matters, do it. Have the discussion. Argue with each other. Listen to everyone, whether they are at the C-level or whether they are the latest person to join. Maintain respect (and make sure that everyone knows that is expected), but have the messy conversations.
You might get some better ideas out of it. And if you don’t, then you’ve still shown transparency and placed value on the contributions of your teammates.
It’s Ok to Not Know Everything That’s Going On
This last one is for you, OG: If you’re an early-generation OG, there will have been a time when you genuinely knew more or less everything that was going on in the company. You knew who was working on what, what every group was prioritizing, and how things worked.
But there will be a time when you can’t do that anymore. You will feel frustrated. You won’t know what is going on. You will feel lost and if you try to keep up with what is going on, you’ll find out that it’s a fulltime job just keeping up with what’s going on and you’re not getting anything else done.
I’m sorry OG, but you can’t undo this. You, and only you, can decide in the end if you’re OK with being in a company that has grown to this size and complexity, but there is no going back. Instead, I would recommend that you focus on what is necessary knowledge and figure out how to keep up with that. Let the rest go and remember that everyone around you is having to do the same thing.
I’ll be moving on from my journey at Unity soon. A lot has changed in my life (I’m returning to work from maternity leave with my second child soon), and I find it’s often at these sorts of points in our lives when we decide to make changes.
When I joined Unity nearly a decade ago, I didn’t know what the future held. There was certainly some risk involved at the time, but I’ll leave you with one of my favorite quotes:
“Almost everything worthwhile carries with it some sort of risk, whether it’s starting a new business, whether it’s leaving home, whether it’s getting married, or whether it’s flying in space.”Chris Hadfield, Astronaut