Reflections From a Summer Internship With MySwimPro

Arthur Shi
Aug 9, 2017 · 7 min read

What it was like helping build a company and shipping code!

From left to right: Adam, Fares, me, Mike

This summer, I had the pleasure of joining MySwimPro as a software development intern (my business card says Software Engineer!). While I’m not incredibly experienced and my code is at times still sophomoric, I felt like a valued member of the team.

At Techweek/Detroit Startup Week

With only the three founders (Fares, Adam, Mike) and one other software engineer (Ben) on the team, everyone is expected to pull their own weight, meaning that I had real responsibilities and worked on projects that are now in production and used by tens of thousands of people around the world. No coffee runs, no BS. I learned a ton and wanted to share my experience.

Background

MySwimPro is a training platform for swimmers that takes the form of iPhone/Apple Watch and Android/AndroidWear apps. Upwards of 90% of swimmers primarily train alone, with limited or no access to coaches and teams. We provide basic workouts, technique and training content, and workout logging for free; a premium upgrade offers more personalized coaching and analytics. We were named Apple’s 2016 Apple Watch App of the Year, and continue improve our product to deliver structured support to our users in reaching their Gold Medal Moments — whether that’s a weight loss goal, overcoming depression, or training to swim the English Channel.

Candid photo of one of our daily 8:30am standups. Ben can be seen on the far laptop screen.

My role has primarily been to develop new features, redesign old ones, improve the user interface, and squash bugs for our iPhone app. I’ve also gotten my hands on the Apple Watch app, road mapped for the future of the product, engaged in customer discovery, worked on our business model and strategy, and represented the brand at events like Detroit Startup Week. Pretty cool for a college internship!

Dressed up for Ann Arbor Tech Trek

Technical Learnings

As an up and coming software developer, seeing my technical skills grow this summer has been super exciting! I came in with an extremely basic knowledge of Swift. But through mentorship with the other MySwimPro engineers (Adam, iOS; Mike, Android; Ben, iOS), I’ve learned a lot and feel much more confident about not only about my ability to develop for iOS, but also my ability to apply underlying design principles to user-facing applications in general.

Lunch with the team at Campus Martius Park, Detroit

With a solid foundation, developing applications for web or Android is really just about learning how to express what I already know in a new language, be it Javascript (and its frameworks), Java, or Kotlin. Things like MVC/MVVM architecture and delegation patterns, object-oriented design and templating, deploying web endpoints, and using asynchronous callbacks don’t end with Swift.

Arthur() { return new Arthur(); }

That’s not to say that I didn’t learn a lot of Swift-specific things, though! Before this summer, my development experience was limited to pretty much just C++, which is much more verbose and low-level of a language. I remember learning Swift and initially thinking that the syntax was ugly, optional variables and closures were weird, the string parsing in Swift 3 sucked, and automatic reference counting was confusing. And what do you mean there’s no ‘++’ operator?! Ben, our part-time engineer working from Scotland, told me that Swift was a really powerful language and that I’d come to appreciate it. He wasn’t wrong!

After getting used to this more flexible, mixed-paradigm language, I find myself using ‘var’ and ‘let’ and forgetting semicolons when I write C++, and I find myself annoyed with the overhead of functors (although yes, I’m aware of auto and lambdas). String parsing in Swift 3 still sucks, but C++ is no Python either!

In general, it feels great to have more exposure to and context for major software technologies. I feel very confident developing on a team using Git now, and that’s a skill that will follow me pretty much everywhere.

I’ll also add that code reviews are incredibly important, and quality code reviews aren’t something I’ve ever had in school. It’s one thing to write code that works, it’s a totally different beast to write elegant, maintainable, and generalizable/reusable code. I was told countless times that my technically correct solutions didn’t adhere to “best practices”, broke architecture design, or weren’t modularized in a sensible way — but as the summer went on, I found myself making fewer mistakes. It doesn’t feel good when somebody points out that your code basically sucks, but how else are you going to get better?

More Tech Trek shenanigans

MySwimPro Growth

I grew in parallel with the company, and a lot has happened in the past 3 months:

  • Ben was hired just after I was
  • We opened an office in downtown Detroit where Fares, Adam, Mike and I have been able to meet all in one place
  • We’re closing an equity crowdfunding campaign, and we’re going to be able to start really putting the pedal to the metal with our product development and paid user acquisition
  • Revenue has grown by about 40% so far this quarter

Work Culture

Startups are notorious for crazy working hours. As an intern, I initially felt this onus and often worked 10-hour days in the first few weeks. However, I was told that I wasn’t going to be measured by how long I stayed at the office. I started to work 8-hour days and focused on productivity, and got pretty much the same amount done or more. DHH, the creator of Ruby on Rails and founder of Bootcamp, has a great article on workaholism in startups.

That being said though, the founders definitely put in hours. ~12 hour days seemed pretty common for Fares (CEO), although this often included driving around the SE Michigan area, doing drone/photo shoots, meeting with potential investors or figures in the local swimming community, etc. At the beginning of the summer, Adam (iOS) was working full time at Expedia and doing MySwimPro on the side for a few hours a day, which would mean he was doing 10+ hours a day most days. If you’re pre-venture funding (and by the way, people are obsessed with venture capital and it’s not a good route for many startups) or bootstrapping your company (a clearer path to profitability), you simply don’t have the money to attract top talent who aren’t personally invested in your vision.

Many entrepreneurs I’ve met in the past year have told me that ‘balance’ is a big word in the startup world. Some tell me it’s flat out impossible. At the very least, if you’re trying to start a company around something that you’re not truly passionate about, I’d be concerned. I wasn’t subject directly to this pressure as an intern, but being exposed to this environment was definitely an eye-opening experience and something for me to keep in mind in the future as I consider startups as a career path.

One of the coolest parts of my job is that I was encouraged to go swimming mid-day a few times a week to test app features, especially for our Apple Watch app. I got to borrow Fares’ Apple Watch for the summer which was pretty cool and made a lot of my friends jealous! I also got to be swim model, so be on the lookout in case I drop my software development dreams to pursue this instead ;) (JOKE)

Shipping Product & Building A Business

We launched a number of significant features to provide more value to our users, and even more personalization and expansion to new platforms is coming in the near future. It’s so, so exciting to watch this all unfold!

I also was a model for promotional videos :)

I’m still amazed that I was hired to join a team on the grounds that I had a competitive swimming background and a bit of entrepreneurial experience. The team took a chance and trusted me to learn what I needed to learn and start contributing value, and I can proudly say that I think I’ve been able to do that.

At the bottom of Fuller Pool, Ann Arbor

Closing Thoughts

It’s been incredibly rewarding to ship code that improves the experiences of hundreds of thousands of swimmers around the world as opposed to writing code that only course graders will see. But most rewarding of all is being able to use the word “we” when writing about all of these achievements.

At the Detroit Motor City Mile

I can’t express how great it is to know I was a part of this journey, helping improve people’s lives all over the world through the sport I grew up loving. Thanks for a great summer, MySwimPro!

A bit of goofy fun on my last day and coincidentally my birthday

Arthur’s Blog

Sometimes I write about stuff.

Arthur Shi

Written by

Be nice, try hard, have fun

Arthur’s Blog

Sometimes I write about stuff.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade