How college graduates can grow as software engineers

How college graduates can grow as software engineers

My first posting in the world of engineering was Google Pay team in India in 2016 (cover image of the article from orientation trip to Mountain View). The team was building a digital payments app from scratch. My then TLM (tech lead manager) saw my credentials from competitive programming and thought I would be a good fit for his system—order management a system characterized by robustness, efficiency and correctness.

I worked with the team for slightly above one year where I got promoted to L4 within a year, which is unusual for Google (typically it takes 1.5 years or more). Saw the launch of Google Pay (branded as Tez) in India, built on UPI. There was a certain camaraderie among the whole team—everyone driven to bring dawn upon a digital India, working hard, helping each other—we truly believed in the product. I learned a lot implementing parts of the core system and going through the lifecycle of software at Google—design, implementation, testing, release, launch, monitoring etc.

Since then, I've worked with a lot of college graduates who join as L3s as their mentor, their technical leader, their team leader. And here's what I think you, as an L3 or a fresh graduate, can do to grow beyond that first step. I will also speak from other perspective, how technical leaders can work better with L3s.

I’ll preface everything with: everyone has unique journeys and roles, and what I say here might not be universally applicable. Though, it will be highly applicable to generalist SWE roles at medium/large tech companies.

What do L3s really do? Typically, they understand architecture/design done by senior engineers, and write code, and possibly review some code.

  • Foundations matter, so don't cop out at this stage—find the balance between getting it done vs investing in learning: talk with your TL and manager to understand what works for them.
  • Learn writing code; and reading code—best practices, paradigms, gotchas, frameworks, nuances. Coding is your job, and this is the best time to learn and strengthen the understanding (which you will use extensively as your grow into senior roles, even though you may not be coding at all). Learn how to review code by learning from other's reviews.
  • Be the person who gets it done—copy paste from somewhere (learning how to search code is an art in itself), hit and trial, asking other experts on the team, but get it done. This goes a long way in building trust with your TL, who will often send more opportunities your way if they trust you.
  • Build a support framework—beyond your immediate TL, you need a few other engineers on the team that can help you brainstorm, debug, fix issues, provide guidance. Setup some 1:1s, build a relationship, and feel free to discuss your and their work, even though not everyone is working on the same project. Let go of ego, and embrace the fact that you don't know anything—it's okay to be dumb and ask questions.
  • Learn technical communication—can't emphasize enough the importance of learning how to express technical ideas, architectural options, understanding other's designs, communicating visually (by diagrams), verbally, and in writing. This is going to be a very essential skillset as you grow -- need for collaboration and understanding also grows. Learn by talking to others, reading docs and paraphrasing them, and having whiteboard sessions with other engineers.
  • Show initiative—vest yourself in the success of the team, highlight issues plaguing your work, be ready to learn anything new. Be vocal about issues, but always go with some proposal of solutions.
  • Lastly, work hard, but mindfully—this is a personal philosophy, but I don't think there's a hack to growing faster which doesn't involve working harder and sacrificing some short-term things. But, always, read the room. Are you destroying the culture of a team that values work-life balance? There are ways to work hard without doing that (maintaining discipline about your online activity).

Now, when it comes to leading L3s, I would leave some suggestions for all the TLs and mentors out there.

  • Be patient—we have to recognize that the college education rarely prepares fresh graduates for industry. We have to ready to be put in the hard work.
  • Build a relationship—go beyond work, understand what's going on in their personal lives (only with genuine curiosity and with a respect for boundaries). Lead with empathy. Try to be a friend. It will be easy to give feedback, motivate, and build an open culture.
  • Emotions matter—"what did you feel when you couldn't achieve the last sprint's goal", "how are you feeling on this project". Emotions play a huge role in psychology at work. We need to give people space to air out emotions (positive, especially negative).
  • Find them a buddy/mentor—someone who has time. TLs are often too busy to mentor L3s closely, and hence it's important to have an L4/senior L3 that can give detailed feedback and guidance with day-to-day tasks (such as debugging etc.)
  • Ask questions—in the rush of things, it's easy to ignore growth and focus on getting things done. Try to ask questions, instead of providing solutions. Counter question the solutions to lead them to the answer.
  • Provide ownership—make them owners of their work. Uplift good work to the leadership by letting them present the solutions, giving credit wherever due, being vocal with appreciation.

That's it for today—feel free to leave comments on specific things that resonate with you, inspire you, or things that you think are counterproductive, also the things that you'd like to hear more about.

Coming up nextso you want to be a tech lead?

Ronnith Nandy

MCompSc '26 @ Oxford University | SDE Intern '24 @Amazon | SWE Intern '23 @Ocado Technology

2 年

Great framework, it works for a CS student also. only the circumstancial references change. Thanks for sharing Lalit Kundu

回复
Yao Sha

Software Engineer at Meta

2 年

Amazing post! Thanks for this!

回复
Ankit Kumar

LinkedIn Top Voice '24 ?? | Product Manager | Ex Software Engineer

2 年

Super ??

回复
Sahil Dua

Senior MLE at Google | Stanford AI | Researcher | Keynote Speaker | Book Author

2 年

Nice post! Keep it up!

回复
Ayush Saxena

Competitive Programmer || Opensource Enthusiastic || Software Engineer at Gemini Solutions || SIH'22 Runner Up

2 年

Awesome piece, thanks for sharing it Lalit?

回复

要查看或添加评论,请登录

Lalit Kundu的更多文章

社区洞察

其他会员也浏览了