The Pairing Diaries: Week 3

The official tour begins

Monday, January 30

Today marks the first day of my real pairing tour (“it was all a dream!”). Richard and I switched between working on setting up Raspberry Pis (RPs) and writing tic-tac-toe in Clojure. It’s cool because I get to ask Richard a bunch of questions about RPs, which I’ve been meaning to learn, but ya know, just haven’t. I also re-asked him questions that I had asked him before but have since then forgotten the answer to. I have the RP 2, which is a bit slower than the 3 and doesn’t have WiFi. TIL about:

  • Different components of a RP
  • That 5G really refers to two channels that are 2.4 GHz each (and not supported by RPs) — incidentally, I was the one who proposed that the reason why we weren’t connecting to the WiFi network could be because we were on the 5G network ¯\_(ツ)_/¯ who would’ve thunk, amirite?
  • How to connect RP to a router, how to SSH into one remotely, and how to write a super simple program in C

Everyone writes their tic-tac-toe game differently, and it’s always interesting to see how people approach it. Richard and I worked on refactoring unit tests, importing a math library as a dependency, and rewriting methods to be more idiomatic. I made suggestions where I thought the code and/or tests could be improved and Richard was super down to hear me out and he encouraged me to ask as many questions as I liked, which I appreciated. All in all, it was a good day and I felt like it was a good balance of learning and teaching.

Tuesday, February 1

I ventured to a client site to pair with Sylwia today. I told her I was “hanging out” with her for the day, which meant that we were pairing, chatting about both the apprenticeship and work at-hand, laughing, and eating snacks.

To keep this at a high-level, we worked on load testing which was completely new to me. We used a tool called Jmeter to configure the number of users and requests on our cluster, and looked at the output. There were various scenarios we had to vet: clusters that were hosted or not hosted by AWS, geo-filtering, etc, and we used both the terminal and GUI to run these load tests. There was a moment when we had to figure out why we were getting a 503 status code after sending several requests, and it seemed related to the Jmeter GUI overloading and the load balancer attempting to build up a new instance.

What I’ve enjoyed thus far is being able to immerse myself in other people’s workplaces. I get to participate in stand-up and join people in their meetings. I get to listen in on conversations and understand the various roles and functions of different team members. I get to unabashedly ask questions and no question is too simplistic or dumb to ask, as Jayden says.

Wednesday, February 2

Today, I paired with Tony at a client site. His team is starting on their product site’s makeover, which I remembered from previously pairing with him. I learned about NuclearJS, which helps store immutable data, and the use of access tokens from OAuth to retrieve user information. We tried to do some troubleshooting with a test that was invoking an action we weren’t expecting, but moved on from that since we weren’t really moving forward. I revisited some concepts from my Ember days, like two-data binding, and resolved to dig deeper into things I don’t have a crystal clear understanding on, such as promises.

I found it really helpful to take notes on issues and tasks at hand so that I could revisit and reference them later, say, after lunch or a meeting. (Diagramming is also helpful in providing a concrete reference). Speaking of meetings, I got to join Tony on several meetings. Despite not having too much context, I thought it was still important to be there (albeit as a fly on the wall) and consider how developers approach the process. I think I understood about 40% of what was going on, tbh.

Also, I wrote my first React component! Our task was to render some of the user’s information, which was coming through the access token. I found that, all in all, I understood what was going on and the issues that were arising, even if I didn’t necessarily know how to go about solving. Restating what I’m trying to achieve was very helpful.

Thursday, February 3

I read “Grokking Algorithms” by Aditya Bhargava and recapped my learnings in this blog post. Learned about different sorting and searching algorithms, and finally got around to learning about Big O notation.

Friday, February 4

In the morning, I paired with Tony on the same story that we worked on two days ago. It was more of like impromptu pairing, initiated by Tony who asked me if I knew how to do CSS. My response was along the lines of: “Meh, not really, but I could try.” Honestly, most of the time, I feel like I experiment with CSS to figure out what could work. My solution tends to be to wrap a div around things and control how they are positioned or how they flow. After some time, we were able to properly line up the various elements on the page; some of them had inherited or pre-set position values, which made them act weirdly, so we had to remove them. I got to see more JSX syntax, which was interesting; for instance, you can store HTML tags and SASS variables in a constant — say what?! Anyway, we got it to a good place and it now looks as good as, if not better than, the mockup.

In the afternoon, Cat and I worked on a D3.js project she had built. The app was multifaceted, and we worked on a page that displayed a Google Map of Chicago with an overlay of neighborhoods. In the short amount of time that we had, we worked on documenting how to run the app and making the map responsive. There was some setup stuff we had to figure out (e.g. setting up AWS-related environment variables) and some style tweaking. With half an hour to go, we also recorded a standup video (a roundup of updates from each person) that was inspired by this SNL skit.

Team work makes the dream work.