3.5 years ago, I sat at my computer, wanting more for my career. I was already a Lead Engineer at an incredibly successful corporate technology company, managing multiple top-of-mind open-source projects and 4 junior - mid engineers.
I thought I knew a lot about managing people and great code back then. Fast-forward nearly 4 years and it couldn't have been further from the truth.
Inspiration
In 2011, I sat by my grandfather's deathbed listening to the knowledge he had accrued over a near half-century-long multi-national career. In the 1930's he had started at the company delivering mail and by the 1970s, he had worked his way up to CEO - a mentality that is so often lost in the technology industry where everyone jumps ship for greener pastures more often than they should.
Inspired by my grandfather's story I decided to change jobs in 2017 and throw away my hard-earned titles. I started, with a wealth of knowledge and experience, with no title and a very minimal salary at 10up in September 2017. It was important for me to start right at the bottom and put aside ego and salary expectations so that I could show the people I work with, one incredibly important trait: humility.
Junior
The first year being "junior" was tough. I was 27 years old and felt like I was starting my career all over again. I made plenty of mistakes, and the learning curve was insane. I felt like I had a lot to prove and to be honest, in the first 3-6 months I felt like I didn't prove much. The first 2 years were a crash course in engineering technicality. I learned fast and I learned hard.
There were days that felt impossible, there were tickets/tasks that felt like I had no idea how to even attempt and there were days where I attempted those tickets and failed. However, there were just as many days where I succeeded even my own expectations and the expectations of those around me.
Peer feedback is a really underrated mechanism. During the first 2 years I spent working as a "junior", I received a ton of great feedback. My efforts were being noticed. Leadership was noticing my work ethic and my peers were beginning to respect my code style and mindset.
During my time as a Junior, while I was absorbing as much knowledge as I possibly could, I became aware that I had spent so many years focusing on code skills and engineering that I had left one important dynamic of seniority behind: people skills.
Senior
2 years passed and I received my promotion to Senior. To date, my senior position at 10up has molded me more than any other experience in my life. I've spent many months honing my technical skills further, providing solutions that worked for clients, and co-tech-leading major builds and retainers with great success. But Senior to me wasn't how fast I could ensure a page load or how clean my ES6 JavaScript was. No, it was about one of the pillars of being a Lead: mentoring others.
You see, being a great Lead Engineer really has nothing much to do with proving your technical ability to your peers and/or superiors. In fact, they already know that you're technically strong.
There are of course things I still don't know, but for the most part, my technical ability remains acknowledged by my peers and at the same time you really begin to experiment with code, leveraging a deep understanding of the mechanics behind what you write.
Where you really need to shine is helping those who are less experienced than you to be as good as you.
Lead
As with most positions, you generally spend a fair amount of time in Senior, really "being" Lead. Lead is a significant feat for engineers to achieve. You have an advanced understanding of web technologies but as I mentioned earlier you need to find ways to impart that knowledge to others while ensuring they can fight their own battles.
That also means letting go of a certain amount of control, yourself. I struggled a lot with this. I have incredibly high expectations of myself and thus subconsciously, expect that of others. Something I had to admit and accept.
Being Lead is about managing your own expectations of others while simultaneously ensuring their own success in their position.
So how did I go about doing this? I've outlined below what I found most helpful.
1. Give Positive Sandwiches
A positive sandwich is a technique for masking criticism. In a nice way, you give a compliment, then the criticism, then another compliment. Instead of saying:
"Hey X, the function you wrote is breaking the staging website"
You could say: "Hey x, looks like you wrote a great function we can reuse across the site, at the moment it seems to be breaking staging, I think it's probably something minor but if you could take a look when you get in today, I'd appreciate it, ping me if you need a hand."
All too often I've seen Leads be blunt, bordering on rude, and it's not for lack of trying, they just feel like they wouldn't have made a mistake like that which can make Juniors and Seniors feel uncomfortable. At the end of the day, it's just code, but in the situation above it's got nothing to do with the code, it's about their confidence.
2. Let go of your own expectations
As I mentioned before, I have exceedingly high expectations of myself. Each piece of code I write is thoroughly tested and linted to ensure it's written in a way that checks all the best practice boxes and is something I can be proud of.
But not everyone writes code like I do or understands parts of a codebase as I do.
In this situation, you need to learn to take a step back and accept that the code that eventually gets merged is no reflection on you.
3. Learn how to support other Leads
This is a point that most Leads don't really take into account. They're often siloed to their team of less experienced engineers who seem to take up all of their time. But supporting your direct peers is also important, and required for a successful project build. You may be Leads in different disciplines but from a human perspective, this means that you can support each other, whether that's on a technical level or a motivational one to ensure a better outcome.
4. Learn humility
Often, being high up in an organization comes with a level of stigma. Namely, ego. There's a "huff" about your title and people below you generally don't know whether to be intimidated by you or respect you.
Well, that's 100% up to you. By practicing humility in your role each day, you'll achieve others' respect, after all in a Lead position, project outcomes become about your experience and how you handle others. Maintaining the mindset of: "I'm still learning" - makes it easy to stay humble and not overstep your bounds.
5. Learn empathy
This is by far the most demanding and difficult soft skill to nurture. Personally, I'm a highly empathic human being, almost to my detriment. Professionally I seem to set aside some of that empathy as I expect results. But empathy doesn't just apply to what your expected output of an engineer is on any given day, it's also a useful tool to manage how people talk to you or interact with you.
In fact, it's self-disarming. If I think back over the last 4 years, I could have gotten myself into a lot of nasty fights, but using empathy helped me develop respectful relationships both below my current position and above it.
Conclusion
In closing, being a great Lead Engineer is more about people than great code. Technical know-how and implementation play a huge role, but if you can nurture, advise and aid engineers in a way that helps them grow and exceed their own expectations, then you'll be a successful Lead.
Top comments (6)
Really very interesting, I will try to learn/improve the last two points, 'humility' and 'empathy'. It is one of the key factors for any Leader.
Great post!
Isn't "positive sandwich" actually known as shitty sandwich? :)
You got me with the "Positive Sandwich" hahaha!, nice write up...
I can relate to this so much. Really appreciate the post and happy to see how you came to solve those common issues.
You sure are a great lead 👍
Appreciate the kind words Babacar!
Great post & thanks for sharing your experience.