Level Up and Launch: Week 29 Review
By: George Bullock
Tags: Software Development, Personal Growth, Personal Development, Career Development, Level Up

Photo by Ben Hershey on Unsplash

“ Growth is painful. Change is painful. But, nothing is as painful as staying stuck where you do not belong. ” — N.R. Narayana Murthy

The highlight of Week 30 was having a few promising interactions with HR managers. Also, doing 10XP (i.e. 10x pomodoros) first and my job search tasks later was a good optimization that helped me regain focus and consistency.

My job search is ramping up well. I’ve completed several applications and a handful of first interviews. The only thing I haven’t done yet are application-related code challenges, but that starts this week.

For the second week in a row, I didn’t finish the indicator widget for React Interactive Dashboard. Again, I made progress. But I had trouble implementing the plan I devised.

The basic idea is simple. The widget component fetches some data from JSON Server, which is a fake REST API. I perform a computation on the response and render the result.

Long story short, I ran into trouble because I opted to use a more advanced (for me) React compositional pattern. My plan required building two custom Hooks: one for fetching data and another for performing the calculation. Both Hooks work together to achieve the desired result.

Moreover, I’m using TypeScript and trying to stick to writing tests first. In a nutshell, I didn’t know how to type my custom Hooks and I wasn’t sure enough about my design to write tests for everything first. As a result, I burned a lot of time figuring how to type Hooks and fleshing out my design.

In the process, I deviated from strict TDD to get some traction. That annoyed me. As much as I would like to strictly write tests first, for now, it’s only realistic when I have a crystal clear idea of what I’m building.

After some Googling and re-reading sections of Boris Cherny’s book, Programming TypeScript, things started coming together. Unfortunately, by then it was Sunday afternoon. I kept going until Sunday evening inch-worming towards a solution.

I had to call it quits Sunday evening to have dinner with my wife’s parents. Last Sunday was the last day before Germany started a second lockdown, so we decided to go to our favorite Greek restaurant before it closes, again.

I’m much closer to done with the indicator widget, but I still have work to do. Right now the component gets stuck in an infinite loop when I call my state updater function. So, I’m guessing it’s an issue with my `useEffect` hook or I need to add a `useEffect` hook with a dependency that prevents the infinite re-rendering.

I will get back on the indicator widget tomorrow. If I can’t figure it out, I’m hoping my friend Sebastian can help me sort it out later this week so I can move on.

The good news is, once I figure this out, I should be in the clear to develop the rest of my widgets with relative ease. Even though I’m annoyed by not finishing the first widget component as planned, I know struggling with the problem was time well spent.

Still, times like this make me want to find a new job, with a supportive team, even more. Learning is so much faster when you have talented team members you can ask for help. Of course, teaching yourself is important, too.

But, if Sebastian and I were working together (like back in our Aperto / IBM iX days), I would have asked him for help after doing my own thing first. He would school me in 20 or 30 minutes and boom — I learn something, the problem gets solved, we move on. That’s a way more efficient way to level up than rolling your own.

Otherwise, everything went as planned.

I continued reaching out to my network of contacts. It hasn’t yielded anything significant yet, but that’s okay. The networking approach usually starts slow and then things happen fast.

I reviewed my React interview questions, which was again useful. The only problem is my questions have a class-based React bias. So, to get some Hooks-based review I decided to read Ohan Emmanual’s React Hooks Visual Documentation this week. But, I won’t burn time preparing questions.

I’m also going to re-read Dan Abramov’s Complete Guide to `useEffect`. Now that I have experience using `useEffect` in two projects, I suspect reading the article will lead to new insights.

And finally, I made a judgment call and decided to apply for product management jobs at companies I consider Tier 1. The decision to expand the scope of my job search came down to three things:

My long-run plan to move into engineering OR product management The negative economic impact of the Coronavirus My belief that where I work is more important than what my job is

First, my long run plan has always been to move into engineering or product management a few years after becoming a senior developer. I imagined it happening in a minimum of three to five years.

However, given the negative economic impact of the Coronavirus, it makes sense to keep my options open. It’s a buyer’s market for labor and my impression is most companies are only looking for seniors developers. For every one mid-level role I find, there five senior roles. Not to mention a lot of people are looking for jobs right now. So, I could be in for a protracted job search as I’m competing for relatively few mid-level frontend jobs.

That said, my background, which includes finance, marketing, and engineering, puts me in a decent position to compete for product jobs right now. I have little doubt I can do the job. And assuming the right product, at the right company, I’m sure I would enjoy it. Thus, it makes no sense to ignore those opportunities — especially when there is a pandemic causing economic problems.

Finally, I kept seeing product management openings at great companies I would love to work for. In the end, I would rather be a product manager at a great company, with solid leadership, and high growth than a frontend developer at an average company and stagnant growth.

I can always code via open-source contributions, or even more interesting, via a revenue-generating side project. But great companies with significant growth opportunities are scarce. If I can work for one, I don’t care if I’m in frontend, finance, marketing, or product. More than anything, I want to play for a winning team. Or, as Sheryl Sandberg said:

“ If You’re Offered a Seat on a Rocket Ship, You Don’t Ask What Seat. You Just Get On. ”

In general, my focus will remain on frontend jobs, but if I have the chance to apply for a product management job at a great company, I’m going for it.

Week 29 Goals Recap

Continue reaching out to contacts — ACHIEVED Apply for 10 roles (warm or cold) — ACHIEVED Finish the indicator widget — NOT ACHIEVED Review React interview questions — ACHIEVED Read Composing Software — ACHIEVED

I sent messages to a few more contacts. So far it’s only resulted in suggestions to apply at companies, but no hot leads.

I applied for 13 jobs (11 frontend and two product jobs). I haven’t heard back from any of the companies yet.

I also joined Honeypot (which I counted as an application) and had a good first call with one of their success counselors. She sent me a Hacker Rank code challenge. I need to complete the challenge this week to become visible on their platform next week.

As I mention, I went over my React interview questions. It was a good review, but I want to get a more Hook-focused review so I’m assigning myself some reading tasks this week.

I didn’t have as much time for Eric Elliot’s Composing Software, but I did squeeze in some reading over the weekend. The discussion was object creation, especially factory functions vs inheritance. Super interesting stuff. I’m going to continue reading Composing Software this week.

Week 29 Deliverables

No deliverable this week.

Project Board

Level Up and Launch Public Project Board

Looking Ahead: Week 30 Plan

I have two people left to contact on my list of people that have direct connections to interesting companies.

After that, I will start contacting friends and former colleagues that I had the best relationships to let them know I’m looking for a job. That will add to the eyes and ears I have on working for me besides mine.

I need to complete the Hacker Rank challenge for Honeypot by Friday. My success counselor said it should take two hours max.

Ideally, I will solve my problem with the indicator widget tomorrow. Then, with any luck, I can clean it up the code on Wednesday and send Sebastian a pull request.

If I fail to find a solution for the widget tomorrow, I will ask Sebastian if he has time to have a look at my code with me. He will look at it for 5 minutes and know exactly what to do.

For reading, I’m planning to read the React Visual Documentation and the Complete Guide to useEffect on two separate afternoons. I will continue reading Composing Software at night before going to sleep.

Week 30 Goals:

Continue reaching out to contacts Apply for 10 roles (warm or cold) Complete Honeypot Code Challenge Finish the indicator widget Read Composing Software at night Read React Visual Documentation + Complete Guide to useEffect

That’s it for this week’s review. I will post the again next Monday to discuss Week 30. Cheers!