Wednesday, August 20, 2014

The 10 Biggest Surprises of My Polyvore Internship

Hi, my name is Julia Alvarez and I am a junior at Brown University, pursuing a degree in computer science. You should know that I am not one of those programmers who has been coding since I was in diapers. In fact, I switched from psychology to international relations to English and finally to computer science.

I "discovered" computer science after stepping into the opening day skit of Brown’s legendary CS15, an "Introduction to Object-Oriented Programing" course, and was hooked. I found that the beauty of CS was that I could actually make something useful, all while sitting at my desk. I wanted to learn more and to practice this magical "making" process, so I started hunting down a summer internship.

I had a mentor who did not work at a tech company, but knew many people who did. When she told me she knew some people who worked at Polyvore, I got really excited, because I had not only used Polyvore before, but I really liked it, and really believed (and still do) they had huge potential for growth. When they called me and told me they would like to interview me, I of course freaked out and said yes right away.

It has been ten weeks since I began my internship, and I would like to share the 10 most surprising things I have learned during my time here.

1. The no-jerk policy is strictly enforced

When I had my on-site interview at Polyvore, I noticed how nice everyone I talked to was. At the time, I thought maybe it was coincidence, for surely, not everyone could be nice at a company of over 100 employees. I was wrong. I haven’t met a single rude person across the company. Our VP of engineering even talks about avoiding the "genius asshole." Everyone at Polyvore is incredibly smart, but not one of them is a jerk. My mother has always told me, "You will always meet mean people wherever you go; don’t let them bother you." I guess that’s one life lesson I didn’t need here.

2. Polyvore ships code every day, multiples times a day

...and I get to be a part of this!

I have heard of many companies that have a multi-day process for shipping code. But at Polyvore, we are constantly pushing code. The process to ship is so simple that it can be as little as 20 minutes between the time you commit and the time your code is in production.

I was even more surprised that I was able to ship production code my first week. Many of my friends who are interning at larger companies (that shall remain unnamed) either have been working on projects that will never be seen by end-users, or spend all of their time debugging other people’s work or building tools for the "real" software engineers. My experience at Polyvore has been quite the opposite. I get to push code while working side-by-side with senior developers every day.

3. Crystal-clear transparency encourages ownership

The company is really, really transparent about their quarterly goals, and we get weekly updates about what each team is doing. We also get meeting notes, even from meetings we don’t attend. At the monthly all-hands, the company’s financials are shared with the whole company. The fact that I, as an intern, have access to all this just shows how much Polyvore trusts each and every one of their employees. It really creates a sense of ownership of the product. When the site is doing well, we are all cheerful and happy, and when a feature breaks, we are not unhappy per se, but are working really hard to get it fixed. Not because there is a manager pushing us to do so, but because we really care about the site.

4. Polyvore cares about my growth and career

I was assigned a mentor who guided me through any questions I had (and there were many), and who truly wanted me to not just do but to learn. I was told from the first day that the most important thing for me to do while at Polyvore was to learn; it was not about how many tasks I finished. I was pleasantly surprised by how willing people were to help me and answer all my questions.

I also got to sit next to Jess, the CEO, for the first half of my internship or so (there was some shuffling of seats as we continued to add people to the team). The fact that the CEO of the company was so easily accessible to talk to is also pretty rare and amazing. She welcomed me on my first day and gave me a 30-minute or so presentation that taught me a lot about the company and the Polyvore community, as well as specifically how Polyvore actually earns money, which was something that I had been wondering about. She then welcomed me to ask her any questions or give her suggestions whenever I had any, which was pretty great.

I had weekly one-on-ones with my manager, Cindy, where she would ask me to tell her any concerns I may have, updates on how the learning was going, and any things I may want to learn next. I kept waiting to be told I was doing something wrong, or was not working fast enough, but that never happened. I also had some one-on-ones with Chris, our engineering director, and Scott, our VP of engineering, with similar topics. They all kept emphasizing that this internship was more about what I get out of it than what Polyvore gets out of it, which was astonishing to me.

5. The perks are awesome!

Polyvore really cares for us, and they want us to enjoy our time at work, as well as make life easier for us. The team bonding activities and trips are great, as well as the weekly Friday lunch outings. The Caltrain Go Pass everyone gets makes commuting easy, as the train stop is a less than a minute walk away (I have left at 5:55 for the 5:56 train too many times to count). I also really like the bring your dog to work practice. It’s hard to stay too stressed when there’s a cuddly pooch around.

And there is a ton of FOOD.

6. You can always ask more questions

In school, we get programming assignments with super specific specs and guidelines. In the “real world,” this is not the case. It is very easy, especially when starting out, to get the details mixed up. Sometimes, it can be not fully understanding the db, or not knowing exactly what the client is asking for. Though these things may seem trivial, getting them mixed up can lead to hours of wasted time that could easily have been prevented by asking a few clarifying questions.

The surprising thing is that the team was very (positively) responsive to any questions I had, and encouraged me to ask more. The open-office environment (another of my favorite things of working in Polyvore) really facilitates this.

7. Wear whatever you want!

Dress up or dress down, just wear whatever you’re comfortable in. I know this is the case with 95% of tech companies in the area, but I was still worried on my first day that I would be underdressed because of Polyvore’s fashion roots. This was not the case. In fact, I sometimes show up over-dressed, but no one cares about that either. This is great for me because I do like fashion and shopping, but often tend to get lazy and default to jeans, sneakers and a t-shirt. No one will take a second look if I come dressed in either of the two styles. People care about your work and ideas, not what your uniform is.

8. Running a website is so much more than CSS/HTML/JS

Yes, I learned some more HTML, CSS and JavaScript, as well as a bit of Perl, Cassandra, MySQL and Splunk, but it turns out there is a ton more to learn about how to maintain a site.

I learned about the process of engineering the different components of the site, parallel execution, how we make money, user engagement, strategic paths, tracking metrics, first impressions, how backend and frontend work together, as well as the middle layer, what CPC and CPA stand for, performance optimization, the importance of understanding your target audiences and more. These are all things that I could have never learned in one, or a few, courses at school. I feel like being exposed to these ideas really has helped me not only learn, but absorb what they mean, as well as put them to practical use.

9. Breaking things is not the end of the world

Another thing my mom has taught me is, “If you have not been failing, then you have not been learning.” I was scared to break the build at first, and would obsessively run the testing scripts about 5 different times, and ask a few people if they were SURE it was ok to ship code, before I finally allowed myself to submit the code. What I learned is that the build will break. More than you expect. But what surprised me was that no one really freaked out. Instead, they expend their effort on finding and fixing the problem, then move on.

10. Foosball is competitive here

My first game of foosball left me in shock. I thought I was playing with quiet, mild-mannered engineers. Two goals into the game, I knew this was not the case. Don't let this passive picture fool you; we get intense.

Back to school

My internship at Polyvore has been an incredible ten weeks of fun, Perl, foosball and learning. I am so grateful I was able to have Polyvore be my first internship, despite the fact they might have set the bar incredibly high for other, future companies where I may work.

I know I will be applying everything I have learned to my next semester in college and beyond. This upcoming month, when I will be TA’ing for the aforementioned beloved CS 15, I will attempt to channel the incredible patience my mentors Cindy, Shougou, Jiaming, and Matt (thank you!) have all had for me. I will continue to ask questions shamelessly, despite the fact that I may not get the same warm response outside of Polyvore. And I will continue to break things. As Woody Allen said, "If you're not failing every now and again, it's a sign you're not doing anything very innovative."