Embrace the tools you use (even if you don't love them)

When you’re working on a team or working for a client, you don’t always get to pick the exact stack you like working with. Sometimes, the team decides to use a tool you don’t love. I’ll be the first person to tell you: React is that tool for me.

React has its advantages, including a vast community and some of the best component libraries out there. But, it’s not all fun and games: certain concepts are difficult to understand initially, you can easily cause performance issues if you don’t know what you’re doing, and the aesthetics are pretty bad (objectively).

Choosing to lean into a tool I don't love - diving deep, getting better, and taking ownership over hard problems - ended up improving our app, enabled me to contribute back to Inertia, and even helped me get a promotion.

Digging deep

With every framework I’ve learned, I’ve always gone pretty deep. Laravel, Vue 2, Tailwind CSS, Livewire, and Alpine. The one outlier was React - because I didn’t love React. But since joining the Laravel Cloud team, I’ve slotted into a role building a lot of the frontend and leading frontend decisions.

When I joined, none of the team had much experience with React. I’m not even sure if any of us had ever shipped a production React app. In the first few months, we were heads down shipping features, getting ready for the launch. We all had enough experience with other JavaScript frameworks that we made it work, despite our ignorance with the framework. We were still able to build features extremely fast and I’m really proud of the product we launched in February.

As time went on, I could’ve easily just continued to make things work and kept moving. Eventually, we would’ve started running into some real issues. So instead, I chose to embrace the role and start diving deeper into React.

When I had a little free time, I started reading the docs. This is an important step because very few people will actually do this. As it turns out, React has some great articles in the “Learn” section of their docs. Reading articles like “You Might Not Need an Effect” made me realize we were making some mistakes on our frontend. Nothing too bad, but we definitely had room to improve.

Taking ownership

Over the last month or two, I’ve continued to dive deeper into React and worked on cleaning up our code as I’ve learned different problems and techniques. I’ve read articles, chatted with AI, gone through a course, and spent hours tinkering with different techniques to see what would work for us.

Without really asking, I started taking ownership of our frontend code, and my boss, Joe Dixon, started noticing. He appreciated someone diving deep and making sure our frontend was performant and maintainable.

After a few months of taking ownership (and working really hard in general), among other team members being promoted to various roles, I’ve been promoted to Staff Software Engineer. In the new role, I’ll be officially focusing on keeping the frontend of Cloud beautiful and maintainable.

It turns out, you can just do things and maybe one day you’ll get rewarded for them!

Contributing back to Inertia

While building Cloud, we’ve pushed Inertia to the limits and found several small bugs, edge cases, and areas for improvement over time. Joe T. and now Pascal are awesome and have always been great about fixing those issues quickly, but I’ve never actually contributed any code to the project.

A couple of weeks ago, I started another round of cleanup and noticed a small issue that prevented us from adding setDefaults to useEffect dependency arrays because, well actually, the technical details don’t even matter… I mentioned it to Joe and we brainstormed some solutions but nothing felt right in the moment.

Fast-forward to a couple of days ago and I was learning some new React patterns. I had immediate ideas for how to apply some of them to our codebase. Others, not so much. It’s strange how brains work, because 24 hours after I was learning the techniques, I had an idea pop into my head. I just knew one of the techniques I had just learned would solve the problem in Inertia.

Today, I contributed the fix back to Inertia and made it a little better. It feels like everything is coming full circle with the promotion, my one-year anniversary on the team, and finally feeling like I’m pretty good with React all happening at the same time.

Make the most of the tools you're using

Embrace the tools your team uses (even if you don’t love them). You’re guaranteed to learn some things that will benefit you in the future and make you stand out among other developers. You might get recognized for your efforts and rewarded with more responsibility. And you might even enjoy your time working with the tool a little more as your understanding of it grows.

But I still don’t love React, Joe Dixon.

Published on