This blog post was inspired by the prompt "Everybody Struggles" for my Outreachy internship. I've also wrote another post, focusing on my struggles related to my identity.
There have been many points in my professional life where I was stuck struggling on a simple issue for weeks or months. I even have a fun fact on my GitHub profile about the one time I spent a couple hours fixing a syntax error. Struggling is just a part of getting better at a skill. After every hurdle you overcome you know more than before bumping into it. During this internship I have struggled, but in this post I’d like to discuss about the most important struggles I have gone through since I started being interested in technology.
The Outreachy Contribution Phase
To be totally honest I was not expecting to be selected as an intern on the AArch64 optimizations project of LLVM. I was and still am not particularly knowledgeable of compilers, assembly and, in general, developer tooling.
I found a issue that felt relatively simple to fix. I took a few days to scout the codebase and then asked to be assigned the issue. I worked that whole day on coming up with changes that would close the issue, but I totally forgot about documentation and tests. I was lucky to have looked into the rust linter a couple months prior as I wanted to make a contribution to it.
The next month was mostly me fixing issues that would be raised and being confused if I should squash commits down or not. I knew LLVM had a policy that no merge commit should be in your PR, but that was as far as my knowledge of contribution requirements went.
In the end, I had my changes merged. I totally changed my approach from the first time I opened my pull request. I had done something I should have been proud of, but all I could feel was shame because it took way longer than I initially expected, and I made some stupid mistakes in my rush to finish it in time for the contribution phase deadline. This is where your network is helpful—having people to talk to about the contribution, such as friends, professors, and other engineers, over the next few weeks helped me get rid of the shame even if it did not help me feel hopeful about being picked for the internship.
All this struggle was not in vain. I managed to gain a better understanding of Abstract Syntax Trees and the ways tools I use work, as well as being chosen for the internship. (surprisingly)
NavigoLearn
Sometimes, passion for a project can drive you to dedicate all your energy to its success, investing days, weeks, months, or even years. NavigoLearn was such a project for me. After about nine months of intense work, I found myself in an unhealthy work environment. Trading sleep for work and university had become unsustainable.
I reached a point where I felt compelled to leave, nearly doing so in the midst of a breakdown. I had even written an essay detailing everything that had gone wrong over the project’s lifespan. Fortunately, my friend Tennie helped me collect my thoughts and resign in a way I wouldn’t regret later, even if the quit notice was somewhat out of character for me.
In retrospect, I regret that the initial vision of NavigoLearn was overshadowed by a pursuit of future profits. Our goal was to create tools that would enable people to share their scientific knowledge and help crowdfund information in an organized and accessible way. This mission is increasingly important in the internet ecosystem where search engines are becoming less reliable year over year.
Improving as an engineer is not always about gaining knowledge; often, it’s about communication and knowing how to act when your boundaries are being crossed.
Learning TableGen
This is part of my internship, but unlike the other struggles, it’s not entirely over; only the bulk of it is done. I have been struggling with TableGen for the first few weeks of the internship. While I figured out how to write tests for it, I still encounter patterns that, for some unknown reason, complain about types—issues that neither I nor my mentor can pinpoint. So we pivoted to another approach.
I believe I will get better at this with time, but it’s really frustrating to make negligible progress for several weeks in a row.
Knowing how to cope when struggling is also a crucial skill for an engineer.
Leave a Reply