What I learned in my first year as a software engineer

Vatsal Rustagi
Engineering @Varo
Published in
4 min readNov 2, 2020

It has been a little over a year since I completed my first year as a software engineer at Varo. I joined the company as a new grad software engineer and have learned several essential skills from the leadership and senior staff here. These skills have helped me make significant progress toward my career goals. I would like to share some of these skills and some practices I followed to make progress faster.

Take ownership

One of the critical skills I learned is to #TakeOwnership. It took me a while to understand what it truly means; however, my manager helped me understand it. She assigned the right tasks to me, which helped me see that ownership is taking the initiative to bring positive results to the task. Over time, I realized that it also means caring about the task’s outcome as much as the product owner and how it would impact the Varo customer. It also means taking proactive steps to unblock any blockers, communicate, or escalate any issues and not wait for others to act. When you take ownership, it teaches you how to manage your time and communicate or negotiate with other parties within your company and external vendors. Therefore, my advice is to take ownership, even if it’s for a small feature.

Build relationships

Through the senior staff on my team, I learned the value of building positive relationships with my coworkers besides just my teammates. It helps with learning different perspectives about the technologies and methodologies they use to develop their team’s products. It acted as a catalyst for my learning process. One can also learn from the other teams and improve their own teams’ workflow. Moreover, you can collaborate with other teams to develop something that could help the whole engineering department. Building relationships and knowing your peers is very useful, and I would highly recommend doing that as early as possible.

Learning new things

As a new software engineer, there are several new things to learn, so how do we approach it? It sure can be intimidating as there are a plethora of new concepts and technologies to understand. I would recommend following a roadmap. You can find the one I use here — roadmap.sh. You can find one specific to your developer career (i.e., back-end, front-end, devOps, etc.) and focus on a couple of topics at a time or how many you think you can handle without getting distracted. Either pick topics that correspond to your work task, or negotiate with your manager to choose tasks that will cover the topics you want to learn.

There are other ways to accelerate the learning process that I follow, but that is up to your personal preference. Here are principles I follow:

  • I keep a list of problems I face when working on my tasks and a list of technologies I’ve learned. I go back to this list whenever I have some free time or want a break from my current task, and I solve them. It helps me become more productive and slowly catch up on the technologies I discerned I should know. For instance, using docker-CLI and forcing myself to use vim to complete minor text editing.
  • I slow down when I find a solution to my problem on websites like StackOverflow. Before copy-pasting the code, spend time understanding how the code solves your problem. You can judge your comprehension of the solution by your ability to explain the solution to someone else. However, sometimes the solution isn’t as easy to understand, and you may end up in a rabbit hole. In that case, try to time-box the research to 1–2 hours depending on how close you are to grasping the concept. Again note technologies you think you should learn during this process.
  • I learn some concepts faster by consulting the senior staff. My suggestion is to do your due diligence and then ask questions this way, and you will have good follow-up questions. The discussion would be efficient and save the coworker’s time. To take it to the next level, you could also go through a senior engineer’s pull requests, because it helps you study their coding styles. You can again come up with questions like why they chose approach A vs. approach B. Going through other developer’s code reviews might be overkill but serves as an excellent way to accelerate the learning process as well.

Over the last year, the key point I have realized about this profession is that software engineering is a career of constant learning. So don’t get discouraged if something is new — be open to learning it from scratch, and use any resources at hand to help lower the learning curve. I have been grateful for the resources and opportunity Varo has provided to help me gain crucial experience, and I look forward to using these lessons and mastering them to move on to more senior roles.

--

--

Vatsal Rustagi
Engineering @Varo

I’m a software engineer in SF! Currently 2+ years into this profession with experience in server-side programming with a focus on APIs and micro-services.