Mid-quarter Checkpoint

I just finished my sixth week of work and thought I’d give an update on my progress so far.

How I’ve been doing with my personal goals:

  1. Cook dinner at least 1 night a week. I cook dinner with my friend once every two weeks, which has been a good way for me to routinely hang out with her and to cook while I’m at it 😁I have been slacking a bit on the weeks that I don’t cook with her 😅
  2. Exercise at least 3 times a week. I’ve actually adhered to this one quite well! I go to the gym every morning that I work in the Mountain View office, and I’ve been playing volleyball every weekend with some friends, too.
  3. Read at least 1 book every two weeks. I have recently finished reading Becoming by Michelle Obama, Crossing the Chasm by Geoffrey Moore, and Annie Duke’s biography. Visit my Goodreads account to follow my activity.
  4. New topics: poker, crochet, and learn a new language. Poker: I have The Mathematics of Poker checked out from the library, but it’s kind of a slow read for me. I did read Annie Duke’s autobiography, so I picked up on some basic strategies from there. Crochet: I made a new friend last week! Learn a new language: I’ve been using Mango Languages to learn some Shanghainese, though this process has also been intermittent.
  5. Meet up with friends at least once a week. I’ll count volleyball and cooking with my friends as social events 😬

How I’ve been doing with professional goals:

  1. Become more comfortable with the codebase. I’ve been working on a lot of column formatting stuff, and I’ve noticed that I have a better idea of what I’m doing now. I’m taking on more complex tasks than I was before, and I’m gaining more context into how this whole application works. I’ve talked to my manager about reviewing PRs with me every two weeks, so hopefully this will give me a good idea of how I’m progressing over time.
  2. Develop my own opinion on the product and engineering culture. This one might take a bit more time, but so far, I’ve participated in the book club (on Crossing the Chasm) and attended a bunch of presentations as part of the new grad onsite interview process. It’s been interesting (and somewhat nerve-wracking) to see how candidates are evaluated for each part of the interview 😅It sometimes makes me wonder how I was hired.
  3. Take advantages of opportunities to learn. I’ve done more than 40 1:1s with people in the company, and I think it’s been a good way to learn about their career trajectories, as well as to get to know them as people.

My biggest worry recently has been making sure that I’m learning deliberately. I know for sure that I’m learning a lot about this product’s codebase, but I want to make sure that what I learn is also transferable to other things in the future. I think that will be a big focus for me during this next stretch. Specifically, I want to learn more about building large-scale software systems, so my plan is to do more research on that on my own. I’ve also been feeling somewhat overwhelmed by seeing all the projects that new grads and even high school students have been working on. Instead of dwelling on feeling like an imposter, though, it’s probably more productive for me to focus on building up my own skillset. So there’s my slightly modified game plan 🙃

Employed – Chapter 1

I am proud to say that I have successfully held down my first full-time job for two whole weeks! I don’t know whether it’s because I’m not used to doing the same thing for 8-10 hours a day, or if it’s because my Master’s year effectively felt like a sabbatical, but I am so much more tired than I thought I would be.

Part of me thinks it’s because I don’t really have anything to look forward to outside of work, so life sort of just drags on between work days. I used to be such an interesting person when I was in college, but now I don’t even have an answer to the simple question, “What are your hobbies?” ☹️ Anyway, I decided to set up a goal system again similar to the way I set goals for myself each school semester. I’ll come up with a set of goals every 3 months, which will hopefully give me something to focus on outside of work.

Here are my personal goals for the next quarter:

  1. Cook dinner at least 1 night a week. Because I’ve been living at home, I’ve taken advantage of the fact that my dad normally cooks dinner. I should probably do more to help out with meals 😅
  2. Exercise at least 3 times a week. My activity level has dropped essentially to zero since school ended and volleyball practices ended. My goal is to take advantage of the free gym at work and exercise in the mornings before starting work.
  3. Read at least 1 book every two weeks. I have been reading more, but my reading pace is quite slow. Hopefully, by making this goal more concrete, I can make a larger dent in my huge list of books I still want to read.
  4. New topics: poker, crochet, and learn a new language. To mimic taking new classes every semester, I wanted to try something new every quarter. Just in case one topic gets too boring as a focal point, I thought I’d throw in some other ones just to keep things exciting. Obviously, the list is not binding and/or comprehensive since the purpose of this goal is to encourage exploring new things. Think of this as a launchpad if you will.
  5. Meet up with friends at least once a week. This is just so that I don’t get stuck in the “living at home” bubble 😅

Here are my professional goals for the next quarter:

  1. Become comfortable with more parts of the codebase. Obviously, I’m never going to become an expert on all parts of the codebase, but I hope that by claiming tickets that involve different parts of the codebase, I will gradually become more comfortable working in different parts of the codebase.
  2. Develop my own opinion on the product and engineering culture. During my first two weeks at work, we have had several retrospective meetings, which has made me realize how much my company values reflecting on past work and making changes for the future. As an intern, I never thought too much about things like the bug triaging process and whatnot because I knew I would be leaving in less than three months anyway. I think it’s important for me to develop a framework to think about the effectiveness of various company processes and to think of ways they can be improved.
  3. Take advantage of opportunities to learn. I’m sure there are lots of learning opportunities ahead of me that I don’t yet know about, so this goal is just a reminder to take advantage of them. I’ve been making my way through 1:1s with everyone in the company, so for the engineers in particular, I think I’ll try and see what sort of goals they set for themselves since mine are pretty weak at the moment 😅

I will check back in November 23-24 to see how things went and to set up goals for the next quarter. Onward!

Lessons Learned

I’m in the final four weeks of my internship, so a post about what I’ve learned this summer is probably long overdue. Last week was a rather turbulent week for me, so I figured it would be worth compiling a list of my key takeaways from the incident.

Here’s some context. My project is to implement a new feature for the Android app. Another intern has been working on the same feature for the iOS app; however, because the iOS team started implementing the feature long before the Android team started its own implementation, the iOS feature is much closer to completion than the Android counterpart.

It was always clear to me how far ahead the iOS team was with the feature, but I didn’t realize until last week that the way the Android team had originally intended to implement the new feature was completely unreasonable—it would have required rewriting large chunks of the app, which was definitely not happening anytime soon. As soon as my teammate and I came to this realization, we had a sync up meeting with the product manager and designers to redefine the scope of the project. We ultimately decided on reusing much more legacy code, which greatly reduced the scope of my project.

To be completely honest, when we first decided to re-scope my project, I was really disappointed. I was disappointed that some of my code would be completely scrapped. I was disappointed that we wouldn’t be implementing some of the cooler designs according to the original plan. But most of all, I was disappointed in myself. As the intern assigned to complete this project, I blamed myself for not keeping my manager better up-to-date on the progress of the project. I blamed myself for not pointing out how behind schedule we were according to the roadmap. I blamed myself for not realizing sooner that the game plan I was given was doomed to fail.

When I told my manager how I felt during our 1:1 meeting, he told me not to blame myself. While I do understand that I am not completely to blame, I can’t help but think of what I wish I had done differently. Here’s the list:

  • Make milestones as fine-grained as needed. Sometimes that means making your own milestones, too. I was given three large milestones for my project, but what I didn’t realize I needed was smaller subtasks for each of those milestones. My strategy has always been to do as much work as I can each day. It’s worked great for me in the past, but unfortunately, for this particular project, that strategy failed me. It made me blind to the fact that I was way off track and prevented me from evaluating my progress accurately.
  • Make it a priority to know who is involved with your project and in what capacity. One of the biggest problems I faced was not knowing who to voice my concerns to. Early on, my gut was telling me that I wasn’t working as effectively as I could be, but I wasn’t sure who to go to for help. If only I had established a point-of-contact for big picture questions, maybe things would have gone down differently.
  • Write a design doc. Last summer, I wrote a design doc for my feature but didn’t really think much of it. I thought it was just something everyone had to do as part of the process. Now that I look back, however, writing that design doc was a crucial planning tool that probably saved me a lot of trouble down the line. Even though no one explicitly told me to write a design doc for my feature this summer, I would have benefited greatly from doing so, even if only informally. My teammates could have given me feedback on the game plan and perhaps even foreseen the roadblock earlier.
  • Don’t be afraid to question the game plan, and certainly don’t assume that what you are given is correct. My most harmful assumption was assuming that because it was an intern project, someone else must have done a thorough job scoping out the specifications and creating the game plan. Full-time employees are not always given perfectly scoped projects, so it doesn’t make sense to assume that my project would be perfectly scoped either. As an intern, I had the additional handicap of being unfamiliar with the codebase. There’s no penalty for questioning the feasibility of certain approaches, and I should, by all means, question the validity of decisions being made. In the end, we’re trying to build the best product possible, which requires thinking critically and being able to back up our decisions.

People usually think of software engineering internships as opportunities to learn new technologies and to discover what it means to write production-worthy code. That’s certainly what I expected to get out of this summer, and it’s true that I did gain some exposure to writing Android apps—though in a distinctly Square manner. However, it’s going to be a long time before I forget how disappointed and frustrated I felt when my project was re-scoped so late into the game. Moving forward into the future, I’ll be sure to keep the lessons above in mind so that I never find myself in the same situation again.