Maintaining a Culture Of Learning

Asaf Yonay
AppsFlyer Engineering
4 min readMar 12, 2018

Every disruptive company has big challenges alongside its achievements.
AppsFlyer isn’t different — 30 billion events per day, huge amounts of raw data, multiple data visualization challenges and a tight ring of web security to protect our clients’ data.

To handle all of that, we’ve been growing our R&D team at an increased pace. This creates one of the most interesting yet hidden challenges we face daily — how do you scale a group so dynamic without losing your core DNA?

How do you maintain a culture of learning, of constructive feedback and knowledge sharing when you are dealing with a hundred plus developers, spread across multiple dynamic and organic teams?

We think that challenges create opportunities to improve but require a dedicated effort by everyone involved. Here’s a breakdown of the processes and decisions we made to establish and maintain our culture.

Honest Recruitment Process

While our recruitment process isn’t easy, we try to make sure it’s quick and fair and we’re very upfront with our candidates.
We talk about everything — about the interesting technologies we integrate daily, or the projects we build from scratch, but we also talk about alerts ringing in the middle of the night because a service we own went silent and our SLA is 100% uptime.

When you’re fair with your candidates, they make a conscious choice to join your company’s DNA or not, but you’re not forcing them into a decision that they’ll regret later on due to lack of information and you’ve started their journey into your company in the most honest way possible.

Let Them Choose

We don’t recruit people to a specific position or team — we recruit them to AppsFlyer Engineering. The newly recruited developers choose their own team based on how they interacted with the said team and its technologies and where they feel they will bring most value.

Engineering our culture, as much as our products, since 1824. >>View Open Roles

By giving the developers the choice on where they see themselves contribute most, we give them the key to own up to their own decisions and work hard to prove themselves right.

The results of the new developers are often surprising, and the benefit is immediate — they are more eager to learn and contribute to their team of choice, and they feel like they are at home from the get go.

Training, Training and Some More Training

New developers start their official journey in AppsFlyer Engineering with two months of training. About everything. Fundamentals of our 3rd party integrations like Kafka or Neo4J and a taste of how we do things in production with bash scripts. DevOps training, FED training and functional programming courses.

We don’t want you to be a better FED or backend developer, we want you to want to learn and improve, to be a better developer — and this is the place it all starts.

R&D Wide Dynamics

We offer internal lectures and host public meetups that are available to our R&D team to make sure we keep communicating with each other regardless of the group or team you’re part of.

We also continue the training routine with ongoing training sessions on various challenges we faced, and technologies we used to solve these problems.

It’s easy to get isolated inside your current challenge, within your own team, but knowledge sharing and a combined sense of comradery go a long way towards creating a strong team that is willing to take risks together.

Lessons Learned, Successes Celebrated

We take our bugs and downtime seriously and work hard to analyze the root cause. No finger pointing, just an honest attempt by all the people involved to deliver a solution that’s both solid, technologically sound and fast.

We also celebrate our successes. We talk about what went RIGHT, not just what went wrong, and we strive to reiterate the successful aspects of each project, while learning from our mistakes.

Summary

AppsFlyer is challenging. It’s a growing tech company, facing some of the most interesting challenges in the market.

But it takes more than just challenges to create good R&D culture — it takes opportunities and genuine effort by all the people involved to invest time and hard work into becoming better — better developers, better architects, better team players.

We believe it’s our most important job to make sure the entire R&D continues being a place where people can learn from each other, take risks, make mistakes and become superstars.

--

--