Joining an Existing Tight-Knit Dev Team: Part 1
Hey everyone, Jamie here.
Well, here I am again. The new kid in class.
After my last... brief... experiment with the super-corporate world, I knew I needed to get back to an environment where I could feel the impact of my work. I've been fortunate to find a new role, starting this week, at a smaller, established company. It's the polar opposite of where I was a month ago. There's no army of BAs, no abstract time tracking, and thankfully, no meetings about meetings.
Instead, I've walked into something else entirely: a small, deeply-experienced, and very tight-knit development team.
This presents a completely different, and in many ways, more delicate challenge. In a big company, you're just another new hire, a cog sliding into a pre-defined slot. When you join a small, established team, you're the new person at the family dinner. You don't know the in-jokes, you don't understand the history, and you're acutely aware that you're disrupting a dynamic that's been in place for years.
This is the first of a three-part series on this new journey. And before I can even think about the code, I have to navigate the people.
The “New Person” Bubble
The first few days are always a strange experience. You're in a “read-only” state. You're given access to systems, you sit in on conversations, and you nod along, all while your brain is frantically trying to build a map. It's not a technical map, but a social and political one.
- Who's the “go-to” for infrastructure questions?
- Who knows the business logic inside-out?
- What's the story behind “that one server everyone's scared to touch”?
- What's the real, unwritten process for a deployment?
In a tight-knit team, this map is even more important. These folks have been in the trenches together. They've built, launched, and fixed things as a unit. My presence is an unknown variable. Am I here to “take over”? Am I the “hotshot” who's going to criticise everything? Or am I here to help?
The First Mandate: Listen. (And Then Listen Some More.)
My strategy for the first couple of weeks is simple: talk less, listen more.
I've been in this game long enough to know that I have opinions. I have my preferred stack (AlmaLinux and Caddy, as you know). I have my preferred way of writing code. But on Day One, none of that matters.
Coming in “guns blazing” with suggestions is the fastest way to alienate a team. It's arrogant, and it dismisses the years of context and hard-won lessons that are sitting in their heads.
The single most valuable thing I can do right now is learn. Why are things the way they are?
- That “weird” deployment script? It was probably written in a hurry at 3 AM to fix a critical outage five years ago, and it's been working ever since.
- That “outdated” library? They know about it, but it's deeply tied to a core-business function, and the risk of upgrading has never outweighed the benefit.
- That “missing” test coverage? They're probably more annoyed about it than I am, but they've been fighting other, more urgent fires.
My job is to be a detective, not a critic. I'm gathering context, not ammunition.
Earning Trust > Proving Skill
In a big corp, you prove your worth by closing tickets. In a small team, you prove your worth by being reliable.
My immediate goal isn't to show them how smart I am. It's to show them that I'm a safe pair of hands and that I respect their work.
How do you do that?
- Take the Smallest, Most Annoying Bug: I've asked for the lowest-priority, most annoying bug on the board. The one that's been sitting there for months. It's low-risk, it shows willing, and it lets me get my hands dirty without breaking anything important.
- Ask Questions, Not “Why?”: The way you ask questions is everything.
- Bad: “Why on earth are you still using PHP 5.6 for this?”
- Good: “I'm setting up my local environment for this bug. I see this project is on old PHP. Is there any specific configuration or extension I should be aware of?”
- Follow Their Style: My first pull request will be my best attempt at mimicking their existing code style, right down to the variable names and comment blocks. Consistency is more important than my personal preference right now.
This isn't about being passive; it's about being strategic. It's about building social capital. You can't propose any meaningful change until the team trusts that you've understood their current reality.
The Next Step: The Code
After a week of this, I'm starting to feel the edges of the “new person” bubble soften. I've had some good chats, fixed a couple of tiny things, and I'm beginning to understand the team's rhythm. They're smart, dedicated, and have kept a complex system running for a long time.
But now I have to really get to know their life's work.
And that's the next challenge. Because after getting to know the team, my next step is to get to know the code. And this codebase has history. Decades of it.
Next time, I'll be diving into the technical archaeology of Part 2: Understanding Decades-Old Code.
Cheers, Jamie C