They say time flies when you’re having fun. So I must be having a blast here at New Relic. I just finished my fourth week as an intern working on the core application. In that time, I’ve contributed code that employees and customers are using. And I already feel attached to the projects I’ve worked on and want to maintain them. But more importantly, I’ve learned so much and can’t wait to jump back into the codebase each day.
But let me back up a bit. I recently graduated from Hackbright Academy, a ten week intensive programming course for women. At Hackbright, students created pair and individual web applications in Python, recreated algorithms and generally coded until we dropped. It was an awesome, brain-filling experience and probably one of the best decisions I’ve ever made. The course gave me a solid foundation to build on, which quickly came in handy here at the office.
I quickly realized I’d be pretty darn happy working at New Relic. On the first day, I was greeted by lots of friendly faces and a morning coffee trip with the clan. Everyone was so welcoming and I was soon set up and ready to go.
Jumping in to the Codebase
Then, I was given my first project – expand a search tool. I started researching the unknown as much as I could. I jumped into the codebase eagerly and tried changing some things.
I was only a few weeks out of Hackbright and had only worked with applications I had entirely written. Now here I was with thousands of lines of code I wasn’t familiar with and a complexity level beyond my limited experience. Where I used to be committing and pushing my code to my own little GitHub oasis, now I was pushing to a shared codebase with a limited knowledge of git. I had a moment where I thought, “How did I trick them into hiring me?”
Let’s be honest, some (maybe all?) of my best efforts seemed to lead to dead ends. After a few days of alternating research, questions and head banging, I paired up with a co-worker on the search tool. Finally, I started to figure out those mysterious bits of code and it all started to fall into place. I was able to understand how the code was set up, add new features and improve the code to make a better tool overall. And then I made my first deploy : ) A pretty awesome experience for someone with only a few months of coding under her belt.
These first four weeks have taught me a lot. Not just about Ruby syntax and Rails features, but also how programming as a team works and how company culture affects that work. The following are the three things I think are most important to beginners like myself.
People Are Happy to Help
In the tech world, particularly in startups, most people are happy (even eager) to help. For a company with a history of just three interns, everyone here is open to questions and is a wonderfully empathic bunch. Now maybe they just want to have another brain to assign bug tickets to. But if so, they’re good about hiding it. I continually (apologetically) ask my coworkers sitting around me questions. And, a bit to my surprise, they always make time to help me out and explain the process. This is how I learned more about good testing practices, bundler, Rails scopes and more.
Complex Code – It’s Not Just in Your Mind
When I began, I assumed that I couldn’t understand the code because I just didn’t have the coding-master skills yet. But increasingly, seasoned engineers looked at what I was working with and said, “uhh…. hmm.”
That’s when I realized that while computers are meticulous and exact, people often aren’t. The code I’m working on may have been touched by several people, each of whom have their own unique style. It may be messier that it has to be and it may have some hacks that are hard to understand for any experience level. While I can’t always recognize ‘bad’ code, it’s something I keep in mind when looking at a script for the first time.
Office Culture Matters
Besides my obvious lack of knowledge, I don’t feel like an intern at New Relic. I feel like part of the team and part of the family. The environment encourages meeting everyone, not just those on your specific team. There is an effort to chum it up with everyone, which lead to a great office atmosphere. (This is especially important since we’re in such close quarters until we move to our new office space.) And it’s great to know someone personally before you need there help for the first time.
And last, here are some of the helpful links and posts I’ve found in my first few weeks include:
* When in git: Always good for a laugh, especially when you learn these commands for the first time.
* git merge vs git rebase: Avoiding Rebase Hell (by Jarrod Spillers): I found this post by Jarrod Spiller the most helpful on the subject of git rebase vs pull. Has great diagrams.
* git ready: Helpful Git related content on many topics.
* RegexOne: A great resource for practicing regular expressions.