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!