04 Jan 2023
I started this blog a long time ago now, but have only just started writing for it relatively recently (albeit not too frequently). While this was spurred on
by a bit of embarassment of just having an empty page here, there were a few other reasons for why I wanted to write more blog posts.
I hope by sharing some of them I might inspire others to write more blog posts as well!
Practice, practice, practice
Firstly, one of the main reasons that I wanted to write more blog posts was simply to practice and improve my writing. Writing is one of the most important
skills to build, in my opinion. It is only more important in a distributed or remote work environment where writing is the main form of communication used
to keep people on the same page. This blog provides a great opportunity to encourage me to write more and edit my thoughts to improve my written communication.
Sharing my experiences
I also want to use this space to help others who might be experiencing similar things to what I have gone through in the past. I hope to build out this space
as a place where I can provide guidance and tips to others. I know that I’ve benefitted a ton from reading other people’s blogs and learning from them,
so I want to be sure to take the chance to give back. Everyone has unique experiences and perspectives, so we all have something worth sharing!
Clarify my thinking
I’ve heard many people mention how helpful writing is in sorting out your thoughts and really seeing if you understand something. This is definitely something that I
have experienced many times as well. When I’m trying to figure out a big decision or want to make sure I really understand a new topic I’m learning, I often like to write
something about it. This blog is a perfect place to do that since it gives me that little extra push to make sure the content is good enough to share.
What am I going to post about?
I don’t really have any specific content plans in mind for this blog. Mostly based off the above three points, I’m just planning to write about topics that fit best
within those guidelines, so mostly things related to my past experiences or things I want to clarify my thinking on and learn more about! So while my current posts
have been mostly tech career growth focused, I could see myself posting about many things from book reviews, travel summaries, technical Android posts or things I may
not have even thought of yet.
Writing this out definitely helped me better figure out what I want to do in this space and all in all, I think there’s benefits from these blog posts even if no one else reads them.
I do hope however, this may inspire some of you to start writing more on your own as well!
30 Aug 2022
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.
06 Jul 2022
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.
14 Oct 2020
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.
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!