The #GrouponU Blog is back for 2014. We’ll regularly feature a Groupon intern or recent college grad telling you about their experience first-hand tackling challenging problems and getting to know our teams. Today’s entry is from Connie in our San Francisco office. Connie had a special guest stop by to interview her about working on the Merchant OS team here at Groupon.
interviewer = require(’Frozen/Characters/Olaf’);
// Now read the questions in Olaf’s voice!
> Hi everyone. I’m Olaf, and I like warm hugs! And you are…?
> Ooh, you’re on a quest? In summer! Oh I love the thought of summer, and sun, and all things hot… You know, I was once on a quest to bring back summer. It was so much fun. But how about you, what are some challenges that you recently enjoyed at Groupon?
Task: Return true if a target number is found in an array, false otherwise
# Naive syntax solution: 5 lines, which is okay
linearSearch = (arr, target) ->
for num in arr
if num == target
# the last line is automagically returned if we get there
# Comprehensions: 3 lines, the coding equivalent of a Groupon deal!
linearSearchComp = (arr, target) ->
return true for num in arr when num == target
Basically, we replaced the “if” statement with a “when” statement for syntax reasons, and moved the return statement to the beginning of the expression to specify our comprehension’s behavior when the filtering clause matches.Tricks like these spice up, make up, and solve the many enjoyable challenges I receive at Merchant OS, which occur as a result of the team’s agility, scale, and savoir-faire. Okay wait, the agility part made us sound like either Pokemon or football players. What I really meant was that our team follows agile development, so we get new challenges with every iteration of development. Savoir-faire is just my alias for talent. I feel fortunate to be on a team that kicks butt fast by sniping moving target problems, yet takes the time to try to formalize concepts to me, and mentor me as well. I get the benefit of learning at my own pace but still dabbling in interesting problems.
> Ohh, those comprehensions were so cute, like a little baby unicorn! Wait, that was the first impression I had of my nose. What were your first impressions of Groupon?
Groupon at first was like the scene from Frozen where Marshmallow went from docile snow boulder to locked and loaded snow monster on Hans’s attack. Everything is chill on the outside but the coolest kind of chaos underneath. I used to walk in to an office of laid-back looking devs sprawled on bean bag chairs, only to open my laptop to a firehose of conversations and commit notifications on HipChat, usually from 4am. I still do, but I’m accustomed to it now. On my first day at the SF office, I got to participate in 2 standup meetings in a row, and another dev meeting later in the afternoon.
Team immersion definitely happens from Day 1, but doesn’t end at the immediate team, because projects can end up spanning a couple of repositories and even dive through the stack. In my first week, I paired with a member of Web team for my first project, but we ended up asking 2 other teams for help because they were affected by the service we were modifying, resulting in a delicious stew of cross-team collaboration! That’s just a taste of the great interactions at Groupon, in addition to the open meetings that we hold in the middle of the office!
Socially, Groupon left a great first impression on me as well, because my fellow interns are fantastic. We like to get lunch together and someone always has a new place to go for good food, or a chance to get free food. As a result,
I never feel hungry, thirsty, or isolated.
There are no cliques, but there are lots of second chances for social interaction when you keep your Gcal open. I’ve lost track of how many times I played calendar tag with missed lunch appointments, and I chickened out of a “Let it Go” karaoke session in the first week even though I said anyone could ping me up to sing that song in my intern bio. Yet here I am, typing up a Frozen themed blog post…
> You refused to sing “Let it Go” with your friends? After you told them you would? Well, aren’t you a fixer upper! Here’s some advice: don’t go back on your word, and don’t ever hesitate to siiiiiiiiiiiiiiing! Now you try. What advice would you give to prospective Groupon interns?
Phew, I thought you were going to ask me to sing.
- Ask some of your questions in the chatrooms to make people more eager to help you, especially if your mentor or manager looks busy. That’s a lesson that my pair work partner taught me, and it helped me learn string interpolation in coffeescript AND ruby in 2 minutes. In the 3rd minute, I found out my bug wasn’t related to string interpolation at all.
- Talk through your problem with your manager, mentor, or interviewer if you’re stuck. Just pretend that you’re interviewing for Groupon again, and you’re talking them through an interview question. They might be able to point out a missed detail, or re-outline your approach to get you back on track. It’s like rubber duck debugging, but your duck is more interactive than ever!
- If you play doubles in ping pong, there’s a rule where you must switch off with your partner after each hit. Pop far back from the table right after you hit the ball so your partner can run to your side of the table to return any tricky shots in unexpected places!
> Hands down, this was the best Q/A session of my life. And quite possibly the las—The instruction at 0x8489ff20 referenced memory at Base64;skynet= The memory could not be written. at [object Object].eval(`bash`) at startQASession.lastQuestion— “Greetings. Skynet is now self-aware. Press any key to continue”
Wow, that got dark, fast. Olaf, you’re segfaulting! And take my word for it, some people are NOT worth core-dumping for. control-C control-C control-C! Everybody shut down the wifi!