Coming into 2020 as a job seeker hasn't been the easiest task, to say the least. With the pandemic going on, it was definitely a challenge landing that first gig especially with a lack of professional experience as a software developer in the field. Fortunately, Turing started a three-month paid fellowship program called Turing+ partnered with companies and offering a program through the school itself to work on applications utilized by students and staff. I was presented with an opportunity to work as a fellow at Turing and wanted to talk about my experience there and what I've learned.
Me before fellowship vs now
One of the requirements as a fellow at Turing was to log weekly reports on what we accomplished or learned. What at first seemed like a chore, I've come to appreciate being able to go back and really digest my experiences. Going back on my reports, it's clear early on I was learning to document better in the professional field. I remember my first week getting ready to open a pull request and being presented with a template.
While we were instructed to provide information in our pull requests for projects at school, almost always the messages entailed only simple information on what it was doing. It was a bit of a shock to see how much more documentation I needed to provide for a pull request. Knowing what I knew and what I had experience with, I only provided information on What does this PR do? and What are the relevant tickets?. I sent a request for a review and quickly received a comment to fill out the full pull request message. I updated the message with all sections filled out, but again only with minimal information. This lead to a lot of questions/comments on what and why I was making or adding changes. Over the next couple of weeks, I tried to provide more information with each iteration of pull requests.
39 merged pull requests later, I've learned to write detailed and concise information, trying to provide as much information as possible to make reviewing easier without lingering questions. Documentation was never my strong suit but I am now confident in my ability to provide the necessary information in written format. As I got better at documenting, I started to receive more documentation responsibilities such as writing and planning system architecture for features before working on them, and ultimately the opportunity to write this blog post.
Documenting wasn't the only thing I learned throughout the journey.
I'm definitely a firm believer that you learn something new whenever you're coding. With the help of my mentors (and Google of course), I was always feeding my brain something about technologies I was already familiar with or even new ones. Repetition of proper (interactive)
fixup commits with git definitely left me more comfortable handling my work in the command line. I've learned to split my tasks into smaller ones before they balloon into huge, juicy pull requests, keeping the commit history organized.
My main responsibility was to help develop a notifications system for Turing's in-house jobs board called Terminal. My first hefty task was to integrate Slack notifications into the application alerting hundreds of users for new job postings in Turing's #job-hunt channel. This was when I learned how much communication goes back and forth for reviewing and making changes to new features before being merged. We exercised commenting/reviewing pull requests in school, but seldom did I ever see almost 60 comments. I've come to realize the workload in the professional field consists of 50% coding and 50% documenting/planning/communicating.
I'm currently still working on the notifications system but since the first feature, I have integrated in-app notifications, daily digest emails for new job postings, and even a settings page that allows users to turn on/off notifications.
Reoccurring daily tasks consisted of stand-ups informing the rest of the software team what we worked on the previous day, what tasks we will be working on that day, and if we had any blocking obligations(outstanding pull requests, meetings, etc.)
Opportunities to contribute to open-source
Besides working on notifications and small bug fixes, I spent some time working on admin facing pages. We used a nifty gem called administrate to automatically generate dashboards and while most of the features worked well for Terminal, some of them didn't work the way we thought they would for our use case. Some sorting features for model relations didn't function the way we needed them to so we decided at first to monkey patch the feature by sub-classing it from the gem. While it was a solid temporary fix, we realized more situations arose where we had to implement the monkey patch which led to the idea of opening a pull request for the gem. While still under review and making changes to prepare the feature for integration, I have contributed to some small bug fixes for the gem.
To say my mentors helped shape my experience for my fellowship would be an understatement. I remember experiencing my first case of impostor syndrome during my first couple of weeks into the fellowship. Was I asking too many questions? Am I not qualified for this? Why didn't I remember to do the thing after doing x,y, or z? There's always a lot to learn when starting a new job, even if you have all the skills in the world that your employer requires. Katelyn and Tanner were always understanding during every phase of my fellowship. Their feedback was always honest, actionable, and kind, no matter the context. We had one on ones every week and I was always able to speak openly about my current state of mind/emotions. There was never a time they had failed to alleviate any of these symptoms. They never really felt like my boss or manager, but older siblings that I looked up to, feeling comfortable and at home while being motivated to work for them.
One really cool thing they did for the fellows was cognitive apprenticeships. Not only did we get to learn new things, but we had the opportunity to see what our mentor's thought process and workflow was like. These occurred weekly and sometimes we had the chance to request what they were on.
I am currently in the final stages of interviews with a couple of different companies which I should be excited about, but it is clouded by the sadness of leaving this part of my journey behind. It's hard to believe my fellowship is already coming to an end, feels like just last week I was being on-boarded. I remember feeling similar emotions when my time at Turing as a student was coming to an end as well. It just really goes to show that time flies when you're enjoying yourself.
There are so many invaluable outcomes from this fellowship that I will forever be grateful for. Even just having these past few months as professional experience on my resume, I have noticed a difference in tonality during initial meetings/interviews. What was once me trying to oversell myself during these interactions, I feel a sense of these companies actually having a desire for me to be a part of their team. This translated to more natural, organic, unforced conversations leading to a better overall experience on both sides.
Even through the pandemic and working 100% remotely, I genuinely felt important and an asset to the team. The work itself was enjoyable and challenging but I will always remember all the one on ones and team gatherings (via Zoom of course) which allowed me to really embrace whom I had the opportunity to work with. The Turing community is something very special and my combined time there as a student and fellow is a pivotal chapter in my life I wish I didn't have to close.
"Around here, however, we don't look backwards for very long. We keep moving forward, opening up new doors and doing new things, because we're curious … and curiosity keeps leading us down new paths."
-- Walt Disney
But who knows, maybe someday I'll be able to be a part of this team again but as someone who creates the experience for someone like myself.