7 Tips for (Remote) New Grad Software Engineers

Like many others I’ve been working remotely since the beginning of the pandemic. During this time I did two remote internships, one at Google and one at Cash App, before returning to Cash App full-time. I was initially nervous how this was all going to go, especially beginning my career without any in-person mentorship. As the time has gone on, I’ve grown to really enjoy the flexibility of this remote/hybrid work world and I wanted to share some of the tips that helped me in the first year of my full-time career, including some remote specific tips.

1. Invest in your workspace

Just as you would if you had a fixed desk space in an office, make sure to invest in your remote work environment. Improving your work environment is a long-term investment that will pay dividends in your productivity and health. The most important aspects to me are having a good chair and a well-lit working area. With just these two things it will be much more comfortable to spend time in your workspace and help you avoid the posture and eye strain problems that may hurt you and your focus. I know this isn’t a unique tip, but I still can’t emphasize it enough!

2. Don’t be afraid to ask

Many times I’ve hesitated setting up a meeting with someone with under a days notice when I’m blocked on something. I never want to disturb my teammates and their work. That said, more often than not I’ve found that people are willing to hop on a call right away instead of even waiting for a future scheduled meeting! More than once while debugging over Slack, my teammate has simply asked “Do you want to pair on this right now?” and I’ve been shocked! I didn’t know that was an option! You’d be surprised how willing people are to help you out if you just simply ask!

3. Speak broadly

Especially at big companies, speaking up in public places like large Slack channels can seem very daunting as a new grad. I was definitely nervous whenever I had to ask a question more broadly, afraid that I’ll be asking a ‘stupid’ question. Well, there’s no such thing as a stupid question, that’s what they always say and it’s true. Not only does posting in public places make you more visible and known within the organization, asking questions there can help everyone learn together. This also applies if you see someone ask a question that you know the answer to … answer it!

4. Take notes

In a remote setting it can sometimes be difficult for your manager or teammmates to follow all the work you are involved in. Make sure to document as much as possible as these things can really come in handy in performance reviews and even future promotions! Make sure you document important discussions you have, interesting investigations you’ve dug into, and write detailed commit and PR descriptions. You never know when these things will come in handy in the future!

5. The three R’s: Read, Review, wRite

Especially early in your career, reading PRs and design docs written by your teammates can teach you a ton about the codebase you are working on and the general practices of your company. Code wise, I’d even recommend trying to review every PR that gets made on your team (provided your team isn’t too large of course). I know I’ve come across PRs that I didn’t fully understand, but taking those chances to ask clarifying questions is helpful for both your understanding and your teams knowledge sharing. Technical design wise, reading lots of docs written by my team was the best thing I think I’ve done in my first year of full-time. This allowed me to understand what goes into the technical design process and allowed me to feel more comfortable taking on writing technical designs myself.

6. Keep it casual

When working remotely, it’s super easy for all of your interactions with your teammates to be based around work and your current projects, as you miss out on the casual conversations with your team over lunch and during after work activities. These can be added back through coffee chat style 1:1 calls or as a whole team doing game nights or happy hour calls to just chat about non-work things. Although it can be tempting to just keep focusing on your work, if any of these types of invites reach your inbox make sure to click YES!

7. Flex it out

Lastly, I want to stress that anyone in a remote work situation should not ignore the added flexibility that it can provide to your life. Working while travelling to different locations, having more flexible work hours to run errands during non-peak times or just saving some extra time in your mornings are all things that I encourage everyone to take advantage of! There’s nothing better than having full control over how you start your day.

Thoughts on Finding an Early Career Niche

Of the six internships that I completed during my undergrad, five were focused on Android development. When I was starting university and thinking about what I would like to work on during my internships, I had planned to try out different tech stacks to get a feel for what I enjoyed working with the most, as that was the advice I had often heard from upper year students and people working in the industry. Once I discovered my strong interest in Android development however, contrary to popular advice, I changed paths to direct my focus there and it’s a decision that I haven’t regretted since. In this blog post I want to share some of the unique benefits I’ve found that finding a niche in software engineering early on gave me in my career.

Depth Can Help Breadth

After getting more deep Android experience I realized that developing depth in one area can offer a good opportunity to expand the breadth of your knowledge to adjacent skills. While there are a large range of technical skills that span over tech stacks (Git, command line, SQL, etc.), the main breadth benefit I experienced was in non-technical skills, so-called soft skills, such as communication.

One of the things that I wanted to especially focus on improving during my internships (and still continuing to improve!) was my technical communication. I wanted to be better able to communicate technical challenges I was facing and offer ideas I had more clearly to my teammates. Focusing on Android development helped me a lot in this area as I was able to build up my knowledge and courage to become more comfortable asking questions and speaking up in meetings. I found that when I was just starting out in an area, I found it much harder to figure out what questions I even have, much less figure out how to clearly communicate them to others. Having more depth of experience in Android development has allowed me to ask deeper questions and learn the reasons behind some technical decisions that I don’t think I would have been able to understand (or even have the courage to ask about) had I been less familiar with the technology I was working with.

Taking on Bigger Projects

Another benefit I found from focusing on Android development was that I was able to take on bigger and less well-defined projects due to having a better understanding of some of the complexities that go into developing for Android. From this I was able to gain experience working on projects with larger impact and learn more about the engineering design process earlier on in my career. One example of this was having the opportunity to work on integrating in-app review prompts into Cash App during my internship. This was a highly impactful and visible feature that exposed me to many things I hadn’t worked with before like external SDK integrations and the testing and reliability complexities that can create.

The larger scope that these projects came with resulted in many benefits from diving deeper into the technical details of internal frameworks to meeting new people outside of my team and expanding my network. Without a strong foundation in Android development, I believe I would have had a much harder time being able to keep up in these larger projects and deliver the same level of impact that I was able to achieve in the length of an internship.

Thoughts For The Future

While everyone follows different paths in their careers, that can all lead to wonderful places, this is the one that worked out for me. I’m really enjoying the current work I’m doing in the Android space and could see myself continuing it for the foreseeable future. Of course, there is a part of me that leans towards trying out something new, when the timing is right. Thankfully, there is ample time try it all, whatever that may be.

What I Learned From an Open Source Internship

This past summer I was an intern on the Android Open Source Project (AOSP) team at Google. This was my first real jump into open source development, previously having just hosted some of my personal projects on GitHub with no expectation that they would be cloned or used by others. This of course is very different compared to the scale of engagement that AOSP receives from the Android community. I wanted to write this blogpost to talk about what this open source internship experience taught me about the benefits of open source software development for me (and other developers), for the software itself and for the development community as a whole.

How Open Source Benefited Me (And Could You as Well!)

As is the case with starting any new role, my internship provided a good opportunity to build my network. The unique benefit that working on open source projects afforded me was that, in addition to just being able to network within my team and other close teams at Google, I was able to expand my network with some of the external contributors to the project as well. This expanded network also allowed for a wider range of experiences that I could learn from. While I learned a ton from the members of my team, I also learned from the external contributors. They taught me things ranging from better testing practices to ways to ensure my code was compatible with older versions of Android that needed to be supported. Open source work is also a very strong portfolio point, giving contributors the chance to point to public code they have written to showcase their skillset to potential future employers or clients. Being a student just building my brand, this was a big benefit for me.

How Open Source Benefits the Software

Open source software gains many benefits itself from being accessible to the general development community. Firstly, since many developers, with many different past experiences, can contribute to the code, the quality of the software can be maintained at a higher level. All the different viewpoints the developers bring allows for things to be noticed that others might have missed or not considered. This also plays a factor in catching issues during code reviews. During my internship there were a few times where external contributors provided good feedback on my changes during the code review process, which ultimately led to higher quality and more robust code.

How Open Source Benefits the Community

Open source development also benefits the community that it is a part of. One way it does this is by allowing the community to have transparency into what large companies, such as Google, prioritize working on. AOSP provides Android developers the chance to see what work is being done on various Android libraries and the OS itself much earlier than some of the features may be released. Open source also allows developers the chance to influence the direction that the tools they rely on are taking. By being able to see the code changes being made, and being able to participate in the code review process, developers can voice their opinions on what features should be focused on. This can lead to better designed tooling, since the developers who will be the end users can provide feedback earlier on in the development process, instead of just filing feature requests after launch.

Summary

My experience this past summer working on AOSP at Google has taught me a lot. While I was always interested in open source development, particularly how it fits in to the Android community, I hadn’t had much experience working with it myself. Now, after getting my first taste of it, I hope to be able to contribute more to the open source ecosystem and encourage everyone else to do the same!