This summer, we brought several interns aboard at our San Francisco Office (SFO). In this blog series, these interns share tales of their times as Rackspace summer interns.
I’m a software engineering intern at Rackspace and a computer science major at Rutgers University. This summer I’ve been working on data visualization for Cloud Monitoring. This means I’ve contributed to glimpse.js, an open source graphing library built on top of d3.js. I created a new graph type, worked on annotations and learned angular.js. I’ve felt like a valued member of my team since the start.
In a classroom setting, college students learn theory and try to understand how things work. But at Rackspace, interns actually do hands-on work and learn how things get done in practice. Between these two identities, I’ve learned lots, but in completely different contexts. Here at Rackspace I’ve seen real masters at work and witnessed how powerful their experiences are. Because I don’t currently have the same level of expertise, I’m interested in the path one takes to becoming a master programmer. This is not something I could have learned in school by sitting in a classroom.
My months at Rackspace have put me in day-to-day contact with some of the top minds in computer programming. I’ve noticed that masters at work have three common traits: learning, collaboration, and passion.
When I asked for advice about how to get better, the answer was almost always the same: “Just build something, man.” Reading is helpful, but writing code is more important. Good programmers have written lots of bad code and have learned from it. Learning by writing code is hard and involves struggle, but there is really no way around it. The masters I’ve met at Rackspace have learned how to embrace this struggle.
The incredible coders around me have patience and curiosity. One example that strikes me is when Jordan, a fellow intern, gave a talk in which he staged and committed changes using only git plumbing commands. When asked about where he learned this, he responded that the git man pages were very good.
Masters treat the code like a wet clay sculpture. They throw on new ideas and peel away others that they don’t like. When I started, I treated the code like marble. I was afraid I would chip off the nose so I would only make changes that I knew wouldn’t break anything. Only after watching Rackers with more experience did I realize I could experiment and play with the code more. And that experimentation is critical to understanding the code.
Programmers at Rackspace produce quality code, and team interaction is critical to that production. My team held “The State of the Code Address” every Friday, where each of us showed off a neat trick or algorithm that we wrote earlier that week. We noticed that none of our meetings were code oriented, so we made one. These were low pressure meetings that often evolved into conversations about the latest releases of Bootstrap or Angular.
“Choose-your-own-adventure” hackathons are held once a month, where programmers work on whatever interests them. We also have weekly tech talks, where team members share a technology they are working with. These types of dialogues contribute to creating a community space where people are interested and passionate about their work.
I saw so many examples of co-workers letting go of their egos and being subsumed into the task they were working on. I remember lots of heated debates about code implementation. Working in an office where people debate is a good sign; it indicates that people care about their work.
I like puzzles, especially ones that highlight interesting ways of solving complicated problems. I’ve found that these brainteasers are a great way of breaking out of stale thinking and approaching my work creatively. I shared one puzzle with some of the folks at the office and figured that someone would eventually get it solved. Imagine my surprise when I learned that Justin Gallardo, an engineer on our Monitoring-as-a-Service product, had solved it with an elegant little piece of coding. Despite the fact that he programs for a living, he squeezed in time to write extra code on his commute to the office. It really showed me something about passion and the desire to solve interesting problems in programming—even silly little puzzles.
In the years it takes to become an excellent programmer I’m going to keep in mind the learning, collaboration and passion I saw here at Rackspace.
The Rackspace San Francisco Internship Program develops technical skills in interns while also supporting integration into the office culture. Want to join the team? Rackspace San Francisco is now accepting résumés for Summer 2014 Internships. Email your résumé to SFjobs@rackspace.com or join us at one of these career events: Oregon State University School of Electrical Engineering & Computer Science Senior Dinner October 23rd; Oregon State University Engineering Career Fair October 24th; UC Berkeley Engineering and Science Career Fair September 18th.