Open-Source Contributions

Weird as it may be to some people, I always dreamed of contributing to open-source software. There is probably no chance that when you interact with technology day-to-day, some part of that technology or that interaction is made possible through open-source. And open-source is only really valuable if we rely on the collective intelligence of our community to move the technology forward.

This year, I’m happy to say that I contributed to over 20 different projects. I’ll mention a few of my favorites:

Laravel Horizon - autoScalingStrategy

Our customer support team was receiving complaints from users that actions were taking insufferably long. Our product owner identified that they were websocket notifications which were queued and taking a long time to be processed. My manager pointed out that the Horizon queue scaling seemed a bit off. We had too many workers processing media and not enough processing notifications, so even as we scaled up the workers, the ratio was not desirable.

We launched a patch in our own code and saw that using a worker allocation strategy for “number of jobs” rather than “estimated time to complete” provided a better balance for completing time sensitive jobs.

With the senior director’s blessing, I submitted this patch to Horizon the following week and it was accepted.

Laravel - one()

To improve developer experience, I proposed a change to eliminate redundant code when writing Eloquent relationships. I especially got a kick out of this one since it was called out on Laravel News, Laravel Daily, PoinShare, and other places.

And I Learned Some Things!

Contributing to big open-source projects is very different than contributing to small open-source projects. When contributing to something like Laravel, there is passion not only from the maintainers, but also the community. Community members will just leave a thumbs down reaction on a PR without any sort of comment. Community members will leave comments without any sort of kindness. The maintainers will close PRs with canned rejection responses. Someone else will submit the same patch and have it accepted a month later.

This was rough on my ego. At one point, I decided I was going to just give up on PHP/Laravel and focus on learning Python instead. :laughing:

But there’s a lot more at play than just what I think is best or how I think a project should function. There’s an entire community to please and thousands of lines of code that need to be understood and maintained in perpetuity by a handful of people. Those maintainers are not infalliable; they’re just doing what they think is right at the time.

Contributing to open-source is a great way to pad a resume and stroke my ego, but if that’s all I go into it seeking, I’ll certainly find disillusionment.


Professional

Engineering Manager

I switched to the role of an engineering manager on my team in November of 2022. I lead a team of three backend engineers in as many as three separate countries. It has been a valuable experience for me and here’s what I learned.

It’s difficult to give up control

A manager needs to be able to trust in their reports. I created friction when I could not let go of my own personal coding style and opinions. I would push code to other engineers’ branches in flight. I would refuse to give tasks to engineers because I felt only I could get them done the right way.

But that’s not what leadership is about. Leadership is about empowering and educating your team. It’s about trusting in them as developers, and trusting the process that engineers can learn and grow.

Perfectionism is the enemy of progress

Similar to the above, refusing to approve a pull request until it meets my expectations for aesthetics and design is a negative. It’s good to have high standards, and code that doesn’t work simply shouldn’t be shipped, but there has to be a line drawn somewhere. There has to be room for developers to have their own personal preferences.

Senior developers do not just evolve into managers

I don’t think I’m unique in thinking that the natural progression from a senior developer is to manager. It feels like it has more status and usually has some kind of increase in pay/equity.

But that’s simply not true. Some people want to do what’s required of a people manager: they want to coordinate and assign tasks, write quarterly reviews, plan for capacity, attend extra meetings. I liked some of those things a great deal, but my heart lies in problem-solving through code.

While I was fortunate enough to have a 60/40 split between developing and managing, I do not wish to progress further down the path of management. For that reason, I’m returning to the role of an individual contributor starting in 2024.


Personal

Stayed Sober

I’m a recovering addict. It’s something I remind myself of daily. I’m lucky I made it out alive, even luckier still that I have found a community of people who support me on this journey.

I believe we are all victims and benefactors of circumstance. While science indicates that I probably have a genetic predisposition to addiction, good fortune has made available resources for people like me. The government recognizes addiction as a disease, the state of Pennsylvania provides resources for people struggling with addiction, there are overdose reversal drugs which allowed me to live long enough to want to change my life, there are fellowships of people seeking recovery who want nothing from me other than to see me stay clean, and I have a family who loved me despite of all I did to them when I was using.

Running

I’ve always had a difficult relationship with my body. I was a pudgy kid who was never good at anything athletic.

Schoolwork came easy and I had confidence in my abilities there. As I have learned, I don’t like to not be good at things. I took not being immediately good at something as a sign that I should just give up. Not learning how to be bad at something meant I never had to be resilient.

This year, I continued to grow as a runner. I have always enjoyed walking to clear my head. It’s also a great way to break up the day as a remote worker. Last year, I would start my walk by jogging as far as I could and walking the rest of the way.

This year, I ran in two separate 5K fund raisers, and ran about three miles of a 5-mile race. I have ran every week since the summer, and set my personal record for a 5K at 31:30.

Personal Record 5K stats

What I Read

My current company Teamworks offers a very generous education and personal development budget. I used some of those funds to purchase an Audible subscription so I could listen to audio books (especially when I’m working out or driving).

Also, libraries still exist! They’re incredible. You walk in, find something fascinating, hand that book to a clerk, they hand it back to you, and you can leave. You don’t have to give them any money. I hadn’t been to a library in a number of years, and it honestly felt unusual to not have to pay them.

Clearly I became an out-and-out fanboy for Michael Lewis. I love how he writes, and it’s a special treat to hear him narrate his own audio books.

Chuck Klosterman is another one of those thinkers who I love to see dissect and unspool a concept. I thought But What If We’re Wrong was an especially wonderful piece of brain-candy that really invited me as a reader to reconsider my beliefs.


What’s Next?

2024, d’uh.

I am always afraid of making resolutions or publicly declaring what I am definitely going to do because what if I fall short?

And what if I do? Pick up and keep going, reaffirming that it’s ok to make mistakes if I am able to learn from them.

I hope to keep running, reading, and contributing to open-source. I want to find ways to separate from technology and be present, especially with my family.