How I Transitioned From an Intern to a Full-Time Software Developer
And five lessons I learned along the way
This post was originally featured on BetterProgramming on July 29, 2021, but we also wanted to feature it here.
At this time last year, I was sitting in the corner of my bedroom with the lights off, trying not to wake up my little brother during my dev team’s standup. I was the lone intern in a (virtual) room of three senior software developers. Now, I’m a full-time software developer standing in a room (an actual room this time!) of senior developers, and my brother’s sleeping peacefully back home.
Getting that full-time offer didn’t just happen. It required me to step outside my comfort zone and really challenge myself as a developer. Now that I’ve been working as a full-time software developer for a few months, I thought I’d share what I learned in the transition and what I did that got me promoted from intern to full-fledged developer.
Ask Questions, No Matter How Stupid
Starting an internship can be pretty daunting. You’re dropped into a group of very talented people and expected to contribute to a code base you know next to nothing about. You might feel intimidated and even a little dumb. I remember feeling so overwhelmed during the first week of my internship that I was sure they had made a mistake in hiring me.
In a situation like this, you might hold back on asking a question for fear of feeling stupid. However, that’s the last thing you want to do. Asking questions is how you learn. It’s how all those talented people on your team became so talented, and by not asking a question, all you’re doing is delaying your knowledge gain.
You’re a Code Owner, Not a Contributor
I should probably explain the difference between a code owner and a code contributor first. Simply put, a contributor is someone who adds value to the code base. This usually takes the form of pull requests that add a new feature or fix a bug. An owner, on the other hand, is tasked with keeping the code base healthy by preventing code smells and bugs from being introduced. A good code owner should also help others contribute to the code base and follow best practices. Of course, an owner also contributes new code in addition to these responsibilities.
As an intern, it was easy for me to fall into the contributor mindset — especially in the beginning when it felt like I was drowning in a sea of code without a life jacket. While the contributor mindset might be OK at first, it’s important to start thinking like an owner if you want to grow as a software developer. Read and re-read your team’s contributing guide or suggest they make one if it doesn’t exist. Take a look at the comments that senior developers leave on other people’s pull requests. Remember, you’re not just contributing code to a repo. You own the repo. It’s your responsibility to maintain code quality, prevent bugs, and keep the code base healthy. Don’t be afraid to make suggestions on PRs if you see some area for improvement or block them if you feel merging the PR will negatively impact the code base.
Make a Lasting Contribution
Think about ways you can improve the current situation. This could be improving the developer workflow, introducing new technologies, or anything else that will benefit your team even after your internship is over.
For example, a few months into my internship, I found that our team’s deploy process was lacking. There were too many steps and there was too much room for human error. I figured a lot of the manual steps could be automated, so I created a Slack bot to handle the more tedious parts of our deploys. My fellow developers were all pretty excited when I demoed it to the team, and I was excited too because it gave me the opportunity to showcase my abilities. It’s been months since I built that bot, but it continues to provide value, as we still use it for our deploys.
If you’re looking for a way to make a lasting contribution, a great option is to improve your team’s onboarding docs because they could always be better. Document what your onboarding process was like and any difficulties you had, and then share this information with your team. The next intern or new hire will almost certainly thank you for it.
Make Yourself Heard
You might be an intern, but that doesn’t mean you don’t have a voice. Use it.
Your main motivation behind doing an internship might be to learn new skills (or make that sweet money), but it’s equally important to share your thoughts and opinions with the rest of the team. For me, it was pretty intimidating to do this at first. I thought my feedback wouldn’t be helpful to a group of senior developers with more experience than me. Over time, however, I learned that they valued my input and I now frequently weigh in during discussions.
Everyone has something valuable to contribute to the team, including you. One of the reasons companies hire interns in the first place is to cultivate new ideas. If you have some ideas that you think could be of benefit to others, don’t hesitate to voice them.
Don’t Forget To Spend Time on You
Just because your team uses Scrum doesn’t mean you can only do what’s on the board. A lot of the work senior developers do never shows up in the sprint. Take some time to learn a new technology, improve your understanding of the code base, or whatever you think will improve your effectiveness as a software developer.
Perhaps an example would be helpful. I was fortunate that my team already had a process for this called 10% time, where we could spend 10% of our time doing whatever we wanted. For me, this meant spending my Fridays learning new tools and frameworks. I might be a React developer, but on Fridays, I was learning mobile frameworks, building Slack bots, and messing around with new languages. Hell, I even spent one day learning how to code on the blockchain. While none of these things were directly related to my work, they helped build cross-field connections. This kind of cross-training can help you come up with innovative solutions that you wouldn’t have thought of otherwise. I can honestly say that the time I spent hacking away on Fridays has made me a better developer.
Like the best internships, mine was filled with opportunities to learn new things and grow as a developer. I accomplished a lot, made plenty of mistakes, and most importantly, learned more than I could’ve ever anticipated thanks to an awesome team, manager, and group of coworkers. It’s because of their invaluable lessons that I’m the software developer I am today, and hopefully I was able to communicate at least a few of those lessons to you.
Thanks for reading. Now go out there and make the most of your internship!