Jack Anderson

2020 In Review

6 minute read

Disclaimer-ing 2020 as a crazy year is a trope at this point. Even fast food restaurants feel obligated to talk about it in their press releases. I’ll try to avoid talking about how strange and unprecedented this last year was, and just focus on the things of note in my professional life that have gone well, or not so well, or have been huge learning experiences.

Generally speaking, I struggle to see things that I do as failures. Usually I see them more as challenges, growth opportunities, whatever buzzwords you like. I do believe this in earnest, it’s more than just PR spin to me. I find myself following a cycle of “step outside my comfort zone”, “struggle and learn”, “get comfortable”, “take on something new”. With that stated, the successes and the challenges are intermingled here.

Career development and going Remote

I was promoted to “Senior Software Engineer” in 2019. Since then, I’ve been working on acquiring the skills and experience to move up to what my work calls a “Lead Software Engineer”. Overall, I think this has been going well.

I wear a lot of hats at work–my main responsibility is building one of our products on a product engineering team. In this regard my responsibilities have definitely been growing–I’m responsible for planning work, architecting some portions of the product that we didn’t nail down previously, and helping to onboard and mentor some employees. It feels like a pretty natural escalation of duties to me, so I’m optimistic that I’m on the right trajectory.

In 2020 I also moved from Utah, where my employer maintains an office, to North Carolina where my partner is attending school. I was fortunate enough to keep my job through this move. Making the transition from a typical in-office work arrangement to a remote was was something I had wanted and been working towards for a long time. It was utterly nerve wracking asking my manager if I could move indefinitely, even though we have a good relationship and there was precedent for remote work at my employer. I’m glad that it worked out with minimal fuss.

As I made the jump, I had some reservations that my career progression might be harmed by not being in the office. After all, I might be competing for some positions with folks who get a lot of face time and visibility. I’m pretty visible in my company, but I still had a few concerns. Since then, my work has become even more open to remote work, so the skies look even clearer now. I’m pretty confident that I have a long runway where I’m currently at.

Architecture and distributed systems

From a purely technical perspective, my core competency is writing quality code in a JavaScript-y ecosystem. (I do more than just this, but if I had to distill it down to just one thing…) In that area, I feel confident and while there’s always something new to learn, it feels well handled. To dip my toes into different areas adjacent to that, I’ve been working on learning more about system design, architecture, and distributed systems.

If you’re a reader of my blog, you’ll probably have seen my posts on learning and experimenting with Kubernetes. That’s been immensely fun and was immediately relevant to my day-to-day work.

I’ve also been working through a couple books on the topic. Designing Data-Intensive Applications has been great. I’ve also been working through Practical Microservices by Ethan Garofolo, a professional acquaintance from Utah JS. It espouses a CQRS-style system with a message store at its heart, and Event Driven Architecture at its brain. I’ve come away convinced of the benefit of Event driven systems, but ultimately struggle to find a place where it makes sense to integrate with my team’s existing systems. I’m hoping to fiddle with it on a personal project, but there I find it’s difficult to justify the complexity for a small project.

In terms of existing systems, my project at work has been ongoing for a year and a half or so. At the outset we set system boundaries based on our knowledge of the domain and what we thought would be the future of the systems. As always, no plan survives contact with reality, so at this point some of our boundaries don’t feel right. This happens in virtually every project, but it’s my first time greenfielding a project and carrying it through this far (to completion in the near-ish future). I think this exercise of continually assessing what we’ve already built and adjusting or rebuilding will be valuable going through 2021 and beyond. I’ve made my bed and now I get to find out what it’s like to lay in it :)

Leading a project

One major initiative that I started on this year is a Design System group and an associated Front-End Guild. I work very closely with designers, and that experience evolved into building a group to standardize our designs across our products, and building another group to unify the way we build front end projects. Overall, this has been a great experience, and we’ve already gone a long way towards a really consistent look and feel, and have improved the quality of our front end code across the board.

It has, however, been a chaotic and messy experience. While that’s not a bad thing, (I find most opportunities come from times like that.) I’m ending 2020 with more questions than answers. Some of the problems I’ve faced:

  • Hammering out responsibilites and ownership of a cross-functional group.
  • Threading the needle when different sponsors/execs/panjandrums have different expectations for what our group should deliver.
  • Balancing my time between my main project (and the one I get evaluated on and paid to do) and these ‘side projects’
  • Finding ways to organize work to get things done even though we don’t always have formal resources allocated.

While I wish I had compelling answers to these questions or problems, I don’t think having these problems is a bad thing. Rather, these seem like the sort of things you solve over and over again at various levels. It feels like an opportunity to tackle these issues without the stakes getting turned up to 11. I hope to end 2021 able to talk about how I addressed all of these issues.

What’s next?

I’m a bit late compared to most New Years resolutioners, but I’ll be writing about what I hope to accomplish in 2021 soon. Does something feel missing from what I’ve written here? Or do you have ideas about some of these topics? I’d be happy to get an email from you–just shoot one to blog@jackanderson.dev