12 Weeks as a Mushroom
A look back at my 12 weeks interning in Gousto’s Mobile Apps team
Hi, I’m Nik! I’m a 19-something Computer Science student at Imperial CollegeLondon and just finished my summer internship at Gousto, working in the iOS/Mobile team called ‘Mushrooms’ (now the title makes sense) 😄.
This is my first internship and it was a super exciting opportunity to work in a tech team at a company on a real product. That’s right, some of whatI’ve worked on is now out for the world to see and is hopefully benefitting the business as well. It was also my first time participating in code reviews, both having my code be reviewed and being the one who reviews.
I’ll try to catalogue what I’ve done and what it’s been like working here for
12 weeks in this post.
What I’ve Done
Over the course of my internship I got to work on several small projects, as well as normal tasks like the rest of the team. I really liked that I could have some independence and ownership over the implementation of a specific part while also just working with the rest of the team.
So, what did I do?
My first commit and pull request was a actually a little fix — the project would not compile for me as the upstream project was misconfigured and was referencing some dependencies that had been removed before — something only noticeable if the project was checked out fresh.
Over the first few days, I was setting up my development environment and getting to know the codebase. My line manager, Spencer, first got me to do some pair programming on various small tickets with my coworkers: Providing not only an opportunity to get to know the code better but also the people I would work with for the next 12 weeks.
Apart from various tickets, I worked on:
One of my first tasks was to implement a maintenance mode screen. This screen is rarely used, but allows Gousto to show a message to users when the backend is down for… well, maintenance of course. My previous experience withInterface Builder in Xcode was only with Mac apps, and with this task being primarily an exercise in IB, it was an opportunity to get more accustomed toIB as well as designing for both iPad and iPhone using auto layout. So much fun.
Changing the Bitrise Configuration for git-flow
Mushrooms are different to the rest of the Tech at Gousto in many ways. One of these ways is that we use ‘proper’ git-flow. We try to do it by the book, with all the branches and tags considered. But it wasn’t always this way.Before, we used something that is kind of like git-flow, but not quite. This system works for other teams with instant deployment, but since we don’t have this for iOS it was decided that we would switch to git-flow. Bitrise is the continuous integration platform that we use here in Mushrooms. You commit something, and it’s compiled and tested by Bitrise. To make this work I had to update various triggers and test these too, in the process also creating a simple sandbox app for testing new configurations.
On Screen Recovery
On Screen Recovery (or OSR for short) was a big project. I worked on this for most of August, creating various screens and logic to generate a recovery experience for our customers. It’s no secret that to succeed, Gousto needs to grow. It’s the same for any company. One thing that stalls growth is users that unsubscribe from our subscription service because they don’t understand how it works. The aim of OSR is to ‘recover’ customers, to convince them that staying subscribed is better than unsubscribing from the service. Sometimes users may just unsubscribe because the service is not understood well, but also if a user does genuinely want to unsubscribe it allows Gousto to figure out why customers may be unsubscribing.
OSR was already present on the website when I started working on this project. Actually, it was the iOS front-end that I worked on. This involved creating many screens that are displayed according to logic provided in the response obtained from the server. The idea is that the pausing journey is customised for the user based on how long they’ve been using Gousto for.Along with creating all the screens from the designs, I also worked on the client-side model of the server response, running the user through and managing a journey, pre-journey validation of the server response, and sending of analytics.
Here are some screenshots:
After much consideration it was decided that the OSR endpoint would serveMarkdown, so this had to be rendered on the client-side. Since we didn’t want to use web views and wanted full control over the styling of text; I wrote a small Markdown to
NSAttributedString converter which would take Markdown strings, feed them into the C Markdown reference implementation called cmark and then output the formatted string.
Towards the end of my internship I assumed the role of a back-end engineer, adding our REST library to one of the PHP services. This service manages content for our frequently asked questions and will in the future be able to serve these to various front-ends.
We also had an internal white-hat hackday, where everyone in tech tried to
identify and solve some of the security threats that Gousto may face.
What I’ve Learnt
Before working at Gousto I had never experienced Agile development. On my
first day I was introduced to Jira, tickets, sprints, swim-lanes, oh my.
I also learnt more about developing iOS apps. Everything from how Xcode projects are set up for multiple configurations, to Interface Builder and designing for iPad. Of course, there was also plenty of opportunity to play around with Swift features.
What I’ve Noticed
Every fortnight is a ‘Tech 10%’ day, where everyone can work on something new and interesting. This provided a nice contrast to the normal sprint-work. On my first tech 10% day I was looking into the viability of a local Xcode Bots driven CI solution for our app, another day I tried improving the build times of the app through various configuration parameters. There was also the opportunity to play with new Apple technologies that might be interesting to use in and around the app.
At Gousto everyone I worked with really believed in the product and the company. The management were great at communicating what was going on in the business as a whole, and for anything more specific to the product that I was working on (read: the iOS app) I could always speak either to my manager or the product owner for mobile.
I really enjoyed my time at Gousto: Working on smaller independent projects and on normal sprint tickets with the team was great fun and an amazing learning experience.
iOS Developer Intern Summer 2017
Originally published at techbrunch.gousto.co.uk on September 22, 2017.