Reflections From a Summer Internship With MySwimPro
What it was like helping build a company and shipping code!

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.

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.

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!

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.

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.

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?

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’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.

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.

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!
