All the questions that DigitalOcean asked us in order to get their case study out and our answers.

read more
DigitalOcean Questions for Coursicle 


* Can you start by telling us about yourselves and how you came about founding the company?
    * When I was an incoming first year at UNC, I spent 7 hours after the first day of orientation. 
    * Then went to register. They put you all in this room, and at 2pm they all yell "go", and everyone frantically tries to register. 
    * I had planned so much, but it all fell apart in the first minute and I started to freeze up with anxiety. Got into 1 of the 5 classes I needed to take to graduate.
    * By the end of it, I was so distraught that they had to tell me where to click.
    * So that night I wrote a program that would text me when a seat opened up in a class.
    * Friend suggested opening it up to other students. 
    * Did that, off to an initial terrible start. Structured as a mac app, students had to download it and have their computer running all the time. 
    * Then someone asked one of my friends if he could track the class for him because he didn't have a Mac, and that's when I realized we could centralize things so that we just use my account to check classes and send notifications. 
    * Then we did really well. 900 users first semester, 1800 second semester, etc. 
    * A couple months later, my now co-founder, Tara Aida, suggested we solve the other part of registration which was difficult, which was planning your class schedule. 
    * That summer, we launched a service that made searching for classes and planning your schedule significantly easier. 
    * We were just at UNC for the first 3 years, and in those three yeas grew to 80% adoption by students. 
    * By the summer after our junior year, we had heard from dozens of students across the country asking if we could support their school. 
    * So we decided to try turning the hobby project into a business, and that summer we started trying to sell the software we had built to universities. 
    * It want horribly. We made one sale to one school for a completely new product that we had to build. Hated enterprise sales. 
    * By then we understood that registrars, provosts, etc didn't understand the painpoint, and so they certainly weren't willing to pay and sometimes didn't even understand why we were better. 
    * So because the course data was public, we decided to expand to more schools without working with the schools. 
    * Fast forward a couple of years, we graduate and decide to work on Coursicle full-time instead of getting jobs. 
    * We start changing: students can track one class for free, or pay $4.99/semester for unlimited classes.
    * We were amazed when 18% convert to premium. 
    * And now support over 850 colleges in the U.S.
    * Running entirely off of revenue.


* Did you first develop the app via the DigitalOcean platform?
    * No, we started on some really cheap shared hosting. We wanted to save as much money as possible, because we were college students with absolutely no income, so we used some really terrible shared hosting with a cPanel interface, no root access, etc.
    * Then my friend, Kevin, said he had been using DigitalOcean because there was this $100 free credit through the Github education pack. We immediately jumped on that (made 3 accounts) and have never looked back.
	
* How has digitalOcean helped you from customer one to now 
    * At the very beginning, DigitalOcean made it feasible for us to use them because they offered us as students the ability to use them for free for 2 years with the $5/month plan. 
    * The next thing that really made an impact was when we were setting up our initial web server, making sure it was secure, etc, and the guides that DO has written for the public are dead simple. 
        * Often when I'm starting to setup a new system, I have this deep worry that I'm going to configure something completely wrong that will require wiping to a clean state, or that I'll miss something crucial, etc. But as soon as I find a DigitalOcean guide on the subject, I completely trust what I'm setting up and that I'll be able to follow the directions without issue or something breaking along the way. 
    * The next thing was really customer support. 
        * Moreover, we believe that good customer support can be one of the most effective forms of marketing. What really blew us away was how interacting with their customer support made us feel. It didn’t feel like you were interacting with a company, you felt like you were talking to a human. Too often, we feel like interacting with customer support is profit guided: they want to minimize how long they have to spend with you to fix your problem, they don’t want to give you refunds unless they have to, etc. DigitalOcean turned all of that on its head: we felt like they were going out of their way to spend more time helping us, they would offer refunds even when we didn’t ask, they felt like an ally, not an adversary. It was clear that they really cared about their users, and we’ve been evangelists for them ever since. 
    * And finally, it was the people. 
        * We met Cassio and others at one of the recent DigitalOcean conferences. 
            * Cassio spent 45 minutes talking with me about in-depth technical problems we were facing with regard to scalability. Things I have been worried about for months, which would have taken me weeks to figure out myself. At no point did I feel like he wanted to stop talking to me so he could talk to other people. He really wanted to help, and was happy to give me as much of his time as he could. 


* Why did you choose DigitalOcean as opposed to other options in the market? Are/were you using other providers in tandem?
    * We had friends who used AWS. We thought it was crazy how they were designing applications to minimize the number of GET/POSTs that were made. 
    * We also tried multiple times to set up AWS, because we also had free credits with them. 
        * I'm our main devops person, and I"m a completionist, which means I want to fully understand what I'm working with if I'm starting a new service. 
        * AWS was just impossible to parse. They really focus on trying to have the broadest feature set possible. 
            * Developers are no different than regular consumers. I don't think that anyone would advice someone building a B2C application that they should have so many products that their product menu bar dropdowns should have so many products that they need to put scrollbars in them. 
            * It's absurd. 
    * The company selling the product should be the best at explaining it, but I find myself needing to watch a Youtube guide in order to understand the offerings of AWS and Azure. 
    * AWS and Azure seem to really cater to people who want to build applications that are interesting to developers. We don't care about how interesting or custom fit our backend is. We care about making the best product we can make. That means making things incredibly simple to understand, with DO actually does. 
    * You shouldn't throw 100 features at a users, that doesn't work. You paint them a picture of what their need is, and how it will change over time, and how you are going to support that. DO does that, by motivating each of the features they have. Application expanding? Use block storage. Servers getting overwhelmed? Use load balancers. etc. 
    * We wanted to have full control over every aspect of Coursicle. DigitalOcean provided us that on the server side: basically nothing preinstalled, just a linux box that we could configure ourselves. Full flexibility sometimes means starting things from scratch, which is why we also 
    * We run 100% on DigitalOcean. 


* Can you explain in detail how you use DigitalOcean in your business? Please elaborate on specific features you’re using.
    * We use DigitalOcean for our web server. 
    * We use it for our low frequency scraping, which extracts the course information from all of the public course searches of all the universities we support every 12 hours. 
    * We use it for the high frequency scraping, which we've setup using a distributed system: we have one DO server which is our master server, and that server creates a queue of all of the classes whose statuses need to be checked, and then we have dozens of other servers which pull from that queue. 
        * We use Celery for the queueing and RabbitMQ and Memcache for the message passing.
    * We use it for miscellaneous tasks, like the SFTP server we setup so that other companies who pay for access to the public data that we scrape can access it.
    * We've written scripts that rely on the DigitalOcean API to start up servers, create snapshots/duplicate them, etc so that they can be added to the cluster.
    * We've used: 
        * Monitoring
        * Backups (really love this)
        * Snapshots 
        * DNS
        * Multiple datacenters
        * Custom images

* What challenges have you been able to solve through DigitalOcean? 
    * I think one of the technical challenges we've faced is scaling our backend in response to increased users. So scraping more and more pages at a reasonable rate. Celery, RabbitMQ, and the ease at which DigitalOcean allows us to spin up and set up servers has solved this problem for us.


* Can you elaborate more on your experiences running a startup as students? Did DigitalOcean’s simplicity help better manage this?
    * Two things mattered for us while students: startup/ongoing cost and speed of setup. I remember when we bought our first domain at auction for $50 and that was way more than we wanted to spend. We were that averse to spending. 
    * Any time we weren't spending on building was wasted time, so something as un-approchable as AWS wasn't an option. It would have taken us weeks to get an understanding of what was going on and start using it with the same level of comfort that we were able to do with DigitalOcean. 

* What impact has DigitalOcean had on your business, quantitatively and qualitatively?
    * Quantitatively, we have been able to save a lot on hosting I believe. That mattered to us in the early stages, but it's been much more impactful for how we treat our customers, how we design our products. 
    * For instance, we don't nickel and dime customers. Premium must be renewed each semester, we don't auto-renew because we know students aren't going to need us every semester. We could make more money, but we're choosing to have a better relationship instead.
    * We also make sure we respond to all users, we don't outsource customer support (actual Coursicle employees are always the ones to reply). We've been told by so many people: you could save so much more time if you just outsourced support, and you could make so much more money if you auctorenewed, but that's not our end goal. We want to build a company people love, and you don't do that with these tactics. 

* How many users do you currently have / how many schools are on your platform?
    * Last semester, we had 2 million students visit our site.
    * And 110,000 users plan their schedule, and 112,000 use the app.
        * Users on the web app have been growing 100% year over year, app has been growing 200% year over year.
    * We support over 850 colleges, mostly in the United States.

* Have you participated in any community events or taken advantage of their tutorials?
    * If yes, can you elaborate on your participation?
    * Yes, we went to Tide SF, which was critical as at the time we were really worried about scaling in response to growth. We learned some from the talks, but really it was our discussion with Cassio afterward that made us love DigitalOcean even more.

* What’s next for Coursicle? Where do you see your app evolving / heading in the future?
    * We think that it's incredibly critical to focus on your core business, so we're continuing to expand our existing products to more schools and working on increasing penetration at those schools. 
    * However, longer term, we're looking to explore more ways we can improve on the horrible or non-existent systems that students are asked to use while in college. And specifically looking at connecting students who are in the same class or major. 





Products summary
* Website where students can view classes for upcoming semester. Add classes to tentative schedule. Plan out multiple options. Search and filter quickly by day, time, gen ed, etc.
    * This is a big painpoint for students because generally have to use paper/pencil to plan their schedule. The university course search is horrible, terribly slow, tedious to use. 10 years old.
* App that notifies students when a class they want has an open seat. 
    * Students have to refresh page over course of months to get into classes.
    * It's not uncommon to have a class of 300, and have 100 people using Coursicle to try to get into that class.
    * Students can track one class for free, or pay $4.99/semester for unlimited classes.