donbonifacio / blog

Engineering management stories, reflections and opinions
https://engineering-management.space/
8 stars 1 forks source link

Manager interview: João Fernandes - Onfido #137

Open donbonifacio opened 5 years ago

donbonifacio commented 5 years ago

Hello João. Can you introduce yourself and talk a bit about your background and what you do?

jcmfernandes commented 5 years ago

Hi there!

Let me start by thanking you for the invite. I'm a big fan of the blog!

My name is João Fernandes and I'm first and foremost a Software Engineer. I'm a geek at heart, and although my career has been pushing me towards management duties, I love technical work. I'm currently an Engineering Lead at Onfido, an identity verification company headquartered in London, UK, with an office here in our beautiful Lisbon, Portugal. We help making your customer onboarding experience quick, slick, secure. My team is responsible for our Anti-Money Laundering product line, so no pressure! Besides that, I'm also a Lead Teacher at Le Wagon, a coding bootcamp made for everyone, regardless of their academic or professional background.

I'm a Instituto Superior Técnico (Lisbon, Portugal) alumni, from where I got my MSc in Software Engineering, with a major in Distributed Systems. I graduated in 2011, and since then I worked in both multinational companies and startups, here in Portugal and abroad. My past companies include Honeywell Aerospace, Coriant and Talkdesk. By now, most of my professional life was spent working for SaaS offers. Talkdesk was obviously special and made me grow a lot in many ways. We were 4 full-time engineers when I joined, 9 people in total. There were over 200 people at the company when I left. I was just a small cog in a large machine, but I'm obviously proud and grateful that I got to witness such growth. I joined Onfido at a later stage, but we almost doubled our workforce in the last year and half.

donbonifacio commented 5 years ago

From you experience, what are some major pitfalls we may experience when scaling an engineering team?

jcmfernandes commented 5 years ago

Entire books are written on this sole question. I split the major pitfalls I witnessed firsthand into two groups: human and technical.

Human pitfalls start right at the hiring phase. A hiring process must take the company's day-to-day operations into context, it must look for skills that applicants will need to succeed. For example, it's crazy to me how little companies assess the written communication skills of their applicants these days. We live in an era where slack, code reviews and commit messages are the most significant communication channels with your team.

Yet on the topic of hiring, be flexible towards your candidates, but not soft on them. Does a candidate need a few more days to complete the code challenge? Sure, most of us have full time jobs and families, that's understandable. Is she/he too busy to do a code challenge? Then thanks, but no thanks. Lowering the bar when hiring sends a dangerous message to the entire organization. Beware. Look for people who clearly want to join your team, who show you that they care about their craft. As the deceased Randy Paush said in his famous Last Lecture:

The brick walls are not there to keep us out. The brick walls are there to give us a chance to show how badly we want something.

If hiring is extraordinarily difficult, then maintaining people happy and getting the best out of them is next level hard. Humans are unbelievably complex. We all have different drives, expectations, fears. The bigger your team gets, the harder it is to keep a keen eye over everyone. The most common pitfall I've seen when it comes to this are misaligned expectations. You already covered here in your blog a set of practices that I find essential: 1-on-1s, mentoring, growth plans, etc. As a manager, it's your duty to act on the feedback that you receive, to serve those who report to you. I'm sure that we would all love to work full-time on green-field projects and get 20% raises every 6 months, as I'm sure that companies would love to see more done in less time. While that might not be realistic, doing nothing isn't acceptable. Keep expectations aligned, or prepare for a lot of frustrations, and ultimately, for churn.

It's impossible not to touch company culture at this point. Company culture is about values; values come from leadership; to lead is to give the example. Set the bar, expect people to follow it. With that said, well-defined company values are an asset! I love Onfido' approach to company values - check https://onfido.com/culture/ - but it only works because its values really are embedded into the fabric of the organization.

When it comes to technical pitfalls, I would like to point out the impulse to enforce equal constraints across all teams. We don't force people to write software while standing up, so why do we force them to, for example, use a given programming language? Well, there's a reason for that: cost. With that in mind, stay open-minded about analyzing the cost-benefit of doing something differently. Impose as little constraints as possible to your teams and listen to those who are in the trenches.

donbonifacio commented 5 years ago

Where should we draw the line on imposing constraints? Development processes (good commit messages, pull requests reviews, unit test)? Scrum/kanban/waterfall? Languages and other tech stacks like databases? How can we prevent silos from coming up and the drawbacks of them?