How I went from n00b intern to engineering team lead

And the key lessons I learned along the way

Rocket launching

As I watched the most recent SpaceX rocket gracefully launch into the sky and deliver another batch of Starlink satellites into orbit, I couldn‘t help but marvel at the incredible engineering that enables such a feat. I also thought back on my own journey as an engineer and how far I‘ve come since starting as a fresh-faced intern who felt utterly clueless.

While I‘m certainly no rocket scientist, I have managed to work my way up from an entry-level software engineer to leading my own team, without taking the traditional path of studying computer science in college. It hasn‘t been easy and there were plenty of challenges and doubts along the way. But through a lot of hard work, some lucky breaks, great mentors, and constantly striving to learn and grow, I‘ve achieved more than I thought possible when I first entered the tech industry.

In this article, I want to share my story and some of the most important lessons I‘ve learned in hopes that it will help other aspiring engineers, especially those from nontraditional backgrounds or just starting out in their careers. I‘ll be the first to admit that my path to a leadership role has been unconventional and isn‘t necessarily a recipe others can follow exactly. But I do believe the principles and habits that fueled my growth are applicable to anyone seeking to master their craft and advance as an engineer.

The winding road to becoming a software engineer

Growing up, I never imagined I would become a professional software developer. While I enjoyed math, science and tinkering with computers as a kid, I didn‘t have the opportunity to take programming classes or be part of a robotics club in school. I also didn‘t see many role models who looked like me in technical fields. So I never really considered it as a viable career path.

Instead, I bounced around different majors in college before eventually graduating with a degree in business administration. But after working various corporate jobs in marketing and sales for a few years after college, I realized I didn‘t feel fulfilled and wanted a more challenging, dynamic career where I could build things and solve problems.

I had taken one intro programming course in Java in college and really enjoyed it. So on nights and weekends, I started teaching myself web development using free online resources like Codecademy, freeCodeCamp, and Udacity. I worked through tutorials, built small projects, and even found a local meetup group where I could connect with other aspiring developers.

After months of studying around my day job, I finally worked up the courage to apply for software engineering roles. The only problem was I had no formal credentials or relevant work experience aside from my small portfolio of side projects. After getting rejected from hundreds of jobs due to my lack of a computer science degree or professional experience, I started targeting internships instead, even though I had already graduated college.

Finally, I got an offer for a 3-month software engineering internship at a small startup willing to take a chance on me. The pay was minimum wage and barely covered my living expenses. But I was thrilled to finally have my foot in the door. Little did I know how much I still had to learn and that this was just the beginning of an arduous journey.

Feeling like an imposter and struggling to keep up

As I started my internship, the uncomfortable truth quickly set in — I was in way over my head. My self-taught programming skills were a decent foundation but a far cry from what I needed to be productive on a professional development team. I felt like a complete novice surrounded by senior engineers who seemed to speak a language all their own. The codebase was far more complex than anything I had seen before and used frameworks and tools I had never heard of.

Initially, my imposter syndrome was off the charts. I constantly felt anxious that I would be exposed as a fraud not cut out for the job. I survived my first few code reviews but there was always tons of feedback on how to improve my work. I was spending hours debugging issues that would have taken the other engineers minutes to resolve. I was determined not to fall behind, so regularly worked late into the night and over weekends to complete my tasks.

But even though I was putting in long hours, I had major gaps in my computer science fundamentals, which made it hard to pick up new concepts quickly or understand how everything fit together in the system. Data structures, algorithms, systems design, databases, networking – it was all foreign to me and not exactly something I could pick up overnight.

I knew I couldn‘t expect the rest of the team to hold my hand, so it was on me to fill in the gaps in my knowledge. I used every opportunity to ask questions and learn from the senior engineers. I took diligent notes in meetings and did my own research to better understand the "why" behind technical decisions. I caught up on computer science fundamentals through online courses, textbooks, and lots of practice implementing concepts in code.

Learning computer science fundamentals

Slowly but surely, things started clicking into place. I could understand the architecture of our system and how the different services worked together. I could debug issues more effectively. I could implement features with cleaner, more efficient code that required less handholding from senior engineers in code reviews. I was adding real value to the team and product.

After my internship ended, I got hired on full-time as a junior software engineer. It was a huge relief and validating that maybe, just maybe, I could hack it as a professional programmer. But I knew I still had a ton more to learn before I could really stand on my own two feet, let alone dream of leading others.

Accelerating my growth as a full-time engineer

Over the next couple years, I put my head down and focused intensely on honing my craft. In addition to my regular workload, I would proactively take on stretch tasks and projects outside my comfort zone to expand my skill set. I also found an incredible mentor in a senior engineer on my team who took me under his wing and gave me invaluable guidance.

One pivotal moment came when my mentor pushed me to lead the development of a new microservice that would be a critical dependency for multiple other teams. It required me to collaborate across different functions, present the design to senior leaders, break down the project into milestones, delegate tasks to other engineers, and ultimately ensure successful delivery of the service.

It was by far the biggest challenge I had taken on and required me to level up my technical, project management, and leadership skills all at once. Many days I felt overwhelmed and wanted to ask someone else to take over the lead role. But my mentor encouraged me to push through the discomfort, emphasizing that this was how I would grow the most.

Taking on stretch assignments to accelerate growth

Looking back, leading that project was a turning point in my career. I proved to myself and others that I was capable of owning the successful delivery of a complex, business-critical initiative. My confidence grew and I started to envision a future where I could lead a team of my own.

I carried this momentum forward and continued to step up to fill leadership gaps on the team, whether it was spearheading incident response, mentoring new hires, or proactively identifying process improvements. I also significantly deepened my technical expertise, particularly in distributed systems design and took complete ownership of the quality and reliability of my team‘s services.

My hard work and growth did not go unnoticed. After a few years of working as an individual contributor, I was promoted to tech lead. Shortly after that, I got the opportunity to build and lead a brand new team from the ground up focused on a strategic initiative for the company. I had gone from an utterly clueless intern to a respected engineering leader in a relatively short amount of time. It felt surreal but also like a fitting culmination of all the blood, sweat, and tears I had poured into developing my craft.

Key lessons learned on my journey from intern to engineering leader

As I‘ve grown into leadership roles, I‘ve been able to reflect on my journey and distill some of the most important lessons that helped me progress from a novice to a respected senior engineer and team lead. I share these in hopes they will help other engineers advance in their own careers:

  1. Adopt a growth mindset.
    As a new engineer, it‘s easy to feel overwhelmed by how much you don‘t know. But remember that everyone starts somewhere and it‘s more than okay to be a beginner. Focus on continuous learning and celebrate your progress along the way. With time and practice, you‘ll be amazed at how much you can grow.

  2. Seek out feedback.
    Ask for feedback early and often from your manager and experienced engineers on areas you can improve. Be receptive to constructive criticism and view it as an opportunity to learn rather than a personal attack. Regularly soliciting and acting on feedback is one of the best ways to accelerate your growth.

  3. Take on stretch assignments.
    Volunteer for projects and tasks that are beyond your current skill level. These challenges that make you uncomfortable are what will help you grow the most. Of course, make sure to communicate with your manager and team so you have proper guidance and support.

  4. Find a great mentor.
    Having an experienced engineer to learn from and bounce ideas off of is invaluable, especially early in your career. If your company doesn‘t have a formal mentorship program, proactively reach out to senior engineers you admire and ask if they‘d be willing to mentor you. Most will be honored by the request.

  5. Go deep, not just wide.
    It can be tempting as a new engineer to try to learn a little bit of everything. But you‘ll accelerate your career progression much faster by picking a specialty to really go deep on. Become the go-to expert on a specific language, framework, domain, or part of the codebase. Your specialized knowledge will make you an increasingly valuable member of the team.

  6. Communicate, communicate, communicate.
    Being a successful engineer and leader is not just about writing quality code. You need to be able to clearly communicate your work and ideas to both technical and non-technical audiences. Practice explaining concepts in simple terms, giving thoughtful code reviews, writing useful documentation, and presenting your work. Honing your communication skills will pay dividends throughout your career.

  7. Focus on solving problems, not just completing tasks.
    It‘s one thing to complete an assigned task and another to proactively solve problems for your team and the business. Think critically about the "why" behind your work and how you can go above and beyond to add value. Bring potential issues to your manager along with proposed solutions. Always be looking for ways to improve processes, tools, and systems. Shifting into this proactive mindset will set you apart.

  8. Step up as a leader before you have the title.
    You don‘t need to be a designated team lead to start exhibiting leadership. Look for opportunities to step up and fill leadership gaps, whether it‘s driving an important project, mentoring a new hire, or spearheading a process improvement. Demonstrating this leadership potential will build your case for a promotion.

Progressing from intern to team lead in a matter of years has been incredibly challenging and rewarding. I still have a lot more to learn but I‘m proud of how much I‘ve grown. For those just starting out in your engineering career, I hope my story and the lessons I‘ve shared show you what‘s possible with dedication and a commitment to continuous growth.

Stay focused on developing your craft, cultivating a growth mindset, proactively taking on new challenges, and delivering exceptional work that moves the needle for your team and company. Your effort and talents will be recognized and rewarded with exciting opportunities to increase your impact and influence as an engineer and leader. The road may be long and winding, but I have no doubt you will achieve more than you can imagine.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *