Level Up and Launch: Week 9 Review
By: George Bullock
Tags: Software Development, Level Up, Career Development, Career Change, Career Paths

Photo by Wolfgang Hasselmann on Unsplash

“ Endurance is the crowning quality, And patience all the passion of great hearts. ” — James Russell Lowell

It’s rare everything in life goes as planned. For me, Week 9 was one of those weeks. I deep dove into MySQL, again. This time to seed React Interactive Dashboard’s database. Although I included additional goals for the week, it was only to push myself. Based on my experience getting the database set up, I suspected getting it seeded was going to require a lot of studying before I could write any code. Therefore, I figured the only task I was certain to complete was the seeding task. This time, I was right.

Also, to avoid burning out after a rough prior two weeks, I knew I had to slow down, take more breaks, rest more, exercise more, and stop putting so much pressure on myself. I followed through on that and it paid off. I had a productive week, and now, at the start of Week 10, I feel fresh and ready to rock.

The big news from Week 9 is that I decided to backpedal on my plan to start applying for jobs starting 1 May 2020. It was an unpalatable decision, but it made sense all things considered (more on that later).

Overall, it was a good week, and I’m happy with myself for following through on improving my self-care routine. Even more so because on Monday and Tuesday, I felt like a snail in terms of productivity and I was close to chalking up working out, going for walks, taking routine breaks, etc. Fortunately, I caught myself and did all that (not as much as planned, but consistently throughout the week). That was a win for my mind and my body.

Week 9 Goals Recap

Seed MySQL Database — ACHIEVED Write CRUD SQL Queries — NOT ACHIEVED Write CREATE and READ endpoints — NOT ACHIEVED Make a decision about applying for jobs starting 1 MAY 2020 — ACHIEVED

Week 9 Deliverables

The above link points to a Google Sheets workbook with five sheets. Three of them contain records that are currently stored in my local development database. The tables are proxy for the work I did since I can’t share my local machine’s state. In the end, I migrated the test data via CSV files so the sheets are representative of my local environment.

The other two sheets contain outlines for server-side routes that I only started implementing at the tail-end of the week.

Continuous Improvement: Last Week’s Action Items

Workout 3x — NOT ACHIEVED Sprint 2x — ACHIEVED Enforce regular breaks via the Pomodoro Technique — ACHIEVED Stop working at 11:00 and get some sleep — NOT ACHIEVED

Clearly, I didn’t do everything I wanted to. I skipped a workout and stayed up late a couple of nights. However, I offset the missed workout by doing pushups, squats, and stretching in between Pomodoros. I also listened to my body more. For example, a couple of nights I ran out of energy around 8:00 p.m. Instead of pushing it until 11:00, I stopped working and got some rest. Finally, I started reading a new Culture Series book (Excession), which was uplifting because I love imagining the distant future and it was nice to read something besides code, articles about code, code documentation, and Coronavirus news.

It seems, for me at least, that avoiding burnout via a self-care routine is not about following a strict plan. Of course, that would be ideal. But it’s not necessary. The key is doing something for my well-being every day and avoiding the trap of doing nothing for days to artificially boost my productivity. The artificial gains are always offset by needing to do nothing for days as a result of burnout.

What Went Well?

Upped My SQL Game (Thanks, Mike)

I’m starting to feel comfortable with SQL beyond SELECT, FROM, and WHERE, which I picked up in my finance and marketing days. I’m getting things done in MySQL Workbench with greater ease, too. Overall, I feel like I have a clue what’s going on in terms of schema design and I’m starting to build some intuition for the implications and consequences of design decisions.

I owe much of that to my older brother, Mike. He’s got solid MySQL skills, which is part of the reason I chose to use it over the more popular option, MongoDB. That decision paid off in Week 9 as he reviewed my schema, spotted some problems, and gave me guidance that allowed me to fix the problems.

He lives in on the other side of the planet, so we rarely see each other, and we don’t talk enough either. In short, it was great to connect with him and simultaneously get my schema reviewed 😄. We even agreed to do a small project together once I’m done with React Interactive Dashboard. I’m going to do the backend under his guidance (as he’s into SQL, C#, and C++), he’s going to do the frontend under my guidance (as I’m into HTML, CSS, JavaScript, and React).

What Can Be Improved?

Less Time On Twitter

I got caught up in the debate about whether the U.S. should move forward with opening the economy now or later. I’m for a staged reopening based on guidance from public health officials and complexity scientists, but that’s the point.

The point is, I’m unemployed. As a result, debating on Twitter is not a good use of my time. Consequently, this week, I’m going to start controlling my usage.

I don’t want to use iOS’s Screen Time feature, or something else, to prevent myself from using Twitter just yet. Instead, I will just make it a point to use Twitter less and compare my usage in Week 9 vs. Week 10. If I’m not using it 40% to 50% less, then it’s time to intervene with some kind of nudge or usage blocking solution. I’m hoping it won’t come to that 🤞🏾🙂.

Concrete Action: Reduce Twitter usage by 40% to 50%

Postponing Job Application Campaign

After doing a bit of desk research and recalling the last conversation I had with a recruiter that has been working for me behind the scenes, I’ve decided to postpone applying for jobs for a month.

The economy of Berlin is still more or less locked down. Only now are retail shops (besides grocery stores) starting to open. Schools, offices, and public venues remain closed.

Three weeks ago I agreed to let a recruiter try to find a role for me while I concentrated on leveling. I went for it because he was recommended to by someone I trust. Unfortunately, it didn’t lead to anything (yet). He candidly told me that there’s nothing he can do for me right now. People are interested in my profile, and my motivation, but they’re only hiring “seniors” right now. They can’t take the risk of hiring someone that needs any handholding. Despite that not being much of a surprise, it was still sobering.

Late in Week 10, I did some job-related desk research. Nothing complicated, just checking out jobs on LinkedIn and a few other local job sites. My objective was to get a feel for what’s out there. Doing so only confirmed the recruiter's message. LinkedIn had 58 “frontend” openings in the 7 days and 310 in the last month, which means weekly new openings are trending down. At least a third of those openings were “phantom” ads with no icon and vague descriptions (probably from recruiters, who I usually try to avoid).

Besides determining that new openings are trending down, I felt the quality of the opportunities on LinkedIn was much lower than in late 2019 when I was conceptualizing Level Up and Launch. Back then LinkedIn teeming with openings from companies I would be excited. That’s not the case now.

The local sites were either dead or chiefly had openings for senior-level jobs. Again, no surprise there.

Finally, my perception is that I’m still not far along enough with React Interactive Dashboard to convince people I’m a “safe” mid-level hire. Once I get the backend done and I can show progress on a React-hooks-based frontend, Redux state management, and have something live they can play with, I suspect — I hope — any concerns hiring managers have about me will be significantly reduced.

In the meantime, I will set up some job alerts and not more than an hour a day to scanning the market for interesting opportunities. If something looks promising, I will apply. I will also keep a close eye on the economic environment for signs of recovery (especially office re-openings).

Regarding connections, I’m already regularly in touch with my network. I trust they will let me know if they come across something.

Hopefully, by June things will be better, and I can launch the campaign that I originally planned. Eventually, I want to be spending 50% of my time, or more, applying, doing code challenges, and talking to people (ideally in person). For now, I don’t think that’s the best use of my time. Better to do a little something now and hit the gas when the economic environment is more friendly.

Concrete Action: None

Looking Ahead: Week 10 Plan

My only goal for Week 10 (and probably Week 11) is to get the CRUD layer of my application written. That means creating models and endpoints for users, comments, and tags. I may need to create controllers, too. But I’m not 100% sure MVC-style controllers sense in the context of a single-page app. I need to discuss my app’s architecture with my project advisor early in the week to sort that out.

In any case, I’m not sure if I can finish the CRUD layer in a week. As I’m doing this for the first time, I highly doubt it. On top of that, I’m going to implement TypeScript features that I’ve only used but never written myself, namely, Interfaces. I also need to write server-side tests, which I’ve also never done before.

In light of all that novelty, I imagine building the CRUD layer is going to be a slow process. So, instead of worrying about speed, for now, I’m just going to focus on code quality and learning.

That said, to avoid leaving things too vague, I will break my main goal into subgoals and work through them systematically. That will also make it easier to audit my performance.

Speaking of performance, I calculated my weekly goal percentage completion rate. Including Week 9, my average weekly completion percentage is 67%. Since my goal-setting strategy is to stretch myself, that’s about where I want it to be. I envisioned 75% completion at the start of the project, but I can live with 2/3. This isn’t a marketing campaign, so it’s not about the numbers. It’s about making steady progress and learning, which I am.

Week 10 Goals:

Create user model, endpoints, tests (and maybe a controller) Create comment model, endpoints, tests (and maybe a controller) Create tag model, endpoints, tests (and maybe a controller)

I’m excited about Week 10. I’m moving away from SQL and getting back into server-side JavaScript, which is something I want to get just good enough at to be dangerous. Moreover, after Week 10, I will be one step closer to building the frontend, which is my bread and butter, with React 🔥 Redux 🔥, CSS modules 🔥, and GraphQL🔥. I can’t wait!