I'm currently a student at the University of Virginia, having just finished my first internship. The company has a relatively small engineering department, but one that has been around for a while. This internship taught me a lot more than I thought it would, ranging from technical experience to what I should focus on. These are the lessons I learned from one summer away from school.
Lesson 1: Learn how to interview
During my time, I got to sit in on two technical interviews. This was incredibly enlightening. With no disrespect to those interviewed, I got to see people fail in exactly the same way I failed. I also got to see them do far better than I had done. Then, I got to sit in on the discussion about the candidates, where they seemed to want to attribute as much positivity as they could to the candidates. Both got job offers and accepted them. Interviewing wasn't meant to be a test with right or wrong answers; interviewing was a way to see if that person would work well in the company. A simple distinction, but this is astonishing to someone just starting out in the industry.
Why is this important? Because if you can't interview, then nobody can tell if you fit the role or not. It's not about being able to ace it like a test, it's about being able to effectively communicate what you are and are not knowledgable of. I failed to give any idea that I might even be okay for the job. However, I still got an offer. It still feels like I never deserved the job from my performance on the interview, but I can definitely say that it turned out pretty okay.
Lesson 2: Ask questions
This got completely flipped on its head. I have no idea when or how, but suddenly I decided that I will ask every question I had. Now, obviously I consulted Google first and tried to figure it out on my own. But, if that wasn't helping in a reasonable amount of time, I would ask. This also goes for pull requests, where I would put comments in my code that asked if there were other, better ways of doing what I wanted to do. From then on out, I became a far better developer. Just like anyone, I got worried that I was asking too many questions. That shouldn't matter. I focused on my learning and development, so long as the other engineers were willing to help.
Parallel: Don't spend too long on a problem
One small story at about my second week at the internship, I was writing tests for essentially the first time ever. Large testing frameworks and setups were new to me, but Rails tests were especially new to me. I was told to write a simple controller test to determine whether or not an element was showing up on a page, so I went through with writing the test and came to a dilemma: I needed to test what an instance variable was assigned to.
Now, this seems pretty simple to most: spend a few minutes Googling, if you can't figure it out, ask. But, for some reason I insisted on figuring it out myself, stressing out and continuing to Google from home. This made my imposter syndrome feel incredibly real; I couldn't figure out such a simple answer. After a time too embarassing to tell spent researching, I asked someone. Turns out there's something that can be used to get any assigned variables. It's a pretty simple method called
Lesson 3: Everyone is human
It's pretty well known that software developers are (mostly) human. But, for some reason, I got into the habbit of seeing these people like they're constantly annoyed at the intern. They just want to sit there and code. Any time they said "we can pair on that after lunch" just meant "why can't this guy do that?" The longer I went through my internship the more I realized that nobody would act like that. I put myself in their shoes and realized that if an intern came into my company, I would want to help them as much as possible, make them feel as comfortable as possible. It's not just a nicety to treat others with respect, it's a natural human reaction.
This realization largely happened when my engineering manager would have one on ones with me, continuously asking for feedback. Furthermore, he genuinely seemed to care about what I had been doing, how I was feeling, and what I wanted from the internship. I wasn't just a slave to do the small tickets that nobody wanted to do anymore; I was part of the team, someone to have lunch with.
Lesson 4: You're important
It's pretty weird to think that some intern is important to the company. It felt more like a ploy at first to trick people into doing annoying, boring tasks. What it turned out to be was a lot more complicated. There's obvious reasons that a company would want to hire an intern, none of which surprise me, such as cheaper labor than a normal employee and fewer strings attached. However, that's all I thought I was at first. In reality, you're important to the company even if you are an intern, especially at a smaller tech company. You work alongside real developers in order to deliver real products. You're a part of the team.
This extends beyond an internship as well. Any company that doesn't treat you like you're important is not worth your time. Much like how everybody has a story to tell, every person has leverage based on the simple fact that they're human and important. But, then again, maybe I'm just a young idealist.