CARROT isn't your run-of-the-mill to-do manager. Described by its creator Brian Mueller as a "to-do list with personality", the app turns your list into a slightly sadistic game, complete with a robot master who will only be pleased if you complete tasks.
CARROT recently launched an alarm as well, which makes you complete a series of tasks to shut it off. Evil? Perhaps. Brilliant? Definitely.
We caught up with Brian to find out the inspiration behind CARROT, the problems he ran into along the way, and his advice for other novice developers.
Where did the idea for CARROT come from? Were you trying to solve a problem you'd experienced, or did the inspiration come from somewhere else?
The idea of keeping my life organised has always been very appealing to me in theory. I'd get all excited about starting some big project, download the latest and greatest to-do list app, then hit this brick wall when I actually went to enter in all my tasks. The apps were always so overcomplicated, bland, and boring that keeping them up to date was a chore in itself. My iPhone became this graveyard where productivity apps went to die. I finally asked myself, "Why hasn't anyone made a to-do list that I actually want to use?" What I needed was an incentive: something that would make crossing tasks off the list so much fun that I'd actually look forward to doing them.
My first instinct was to add points and badges that I could earn for getting stuff done -- typical gamification fare -- but the more I thought about it, the more I realised that unlocking some stupid badge wouldn't make chores more fun for me. When I played games, I wasn't playing to get a high score. I was playing for the writing, the characters, and the story. Finding out what would happen next was what kept me coming back.
After I made that leap, the idea really started to come together. There'd be a character -- this funny/sarcastic/sadistic artificial intelligence named CARROT -- at the heart of the app. She'd be almost like a virtual pet, this malevolent supercomputer you have to keep happy by getting stuff done in real life. If you're successful and efficient, she'd reward you. If you're lazy, though, she'd get pissed off. And there'd be a central story that revolves around this pet cat that CARROT gives you; the story gets revealed bit by bit as you use the app and changes based on whether she's happy or angry with you. What I was envisioning was much more game-like than any other "gamification" system I'd ever seen.
After you came up with the idea, what was the next step?
I'd actually never programmed a day in my life before starting on CARROT -- I had gone to school to be a writer. So the first step was supposed to be: "hire someone to design and code this for me."
But before doing that, I grabbed a book on iOS programming, thinking I'd scan it to learn some of the vocabulary so I wouldn't sound like an idiot when I went looking for a programmer. Surprisingly, the first few chapters weren't that difficult to get through, so I kept going and eventually made it through the entire book. It was time consuming, but the concepts were nowhere near as hard to get my head around as I thought they'd be.
So instead of hiring a programmer, I decided to write the app myself. I figured out how to do each major chunk of the app (inputting tasks, saving them, etcetera) by reading through Apple's documentation and posts on sites like Stack Overflow. Version 1.0 took about a month from start to finish. The code base wasn't necessarily pretty, but I played to my strengths -- namely, my background in writing -- by infusing lots of personality and geeky humour into the sadistic robot character at the heart of the app.
How did you choose which platforms to target and which to ignore or wait on?
This was an easy decision for me. I was starting small and had zero experience, so that meant I could only target one platform. I already owned an iPhone and had heard that building an app for iOS was easier than it was for other platforms, so I decided to take the path of least resistance. Now that CARROT's become quite popular, the question of whether to expand to additional platforms is an open one that I continue to explore, but as a single independent developer I also have to worry about spreading myself too thin.
What was your biggest roadblock and how did you overcome it?
Version 1.0 of CARROT was very simple in terms of actual functionality -- just pull down to add a task, swipe right to complete it. That was it. After CARROT launched, I inevitably got a bunch of feature requests from CARROT's users. "CARROT's adorable, but why can't I see my completed tasks?" "I'm in love with CARROT, but I need to be able to edit tasks before I can ask for her hand in marriage!" "I am interested in worshipping CARROT as my new god. But first, I want due dates!"
I tried a bunch of different UI mockups, but I just couldn't find a way to add in all these additional features without compromising CARROT's minimalist design. That is, until I turned back to games for inspiration. When you play a game, you start out with only one or two basic abilities. New ones are introduced over the course of the game, once you've gotten used to messing with the old ones.This same thinking was easily carried over to CARROT: you start off with the ability to create and complete tasks, then you unlock additional features like due dates or Siri integration as you kick arse in real life and level up in her game. Solving this design problem ended up getting people more invested in CARROT than ever before. They weren't passive users anymore; instead, their actions were actively making CARROT a better app.
What was launch like for you?
From the very beginning, CARROT was designed to appeal to my own geeky sensibilities. I seriously doubted anyone else would like the app -- I'd get maybe 30 downloads from friends and family, and that'd be it. I didn't even get that many on the first day.
On the second day, however, the downloads took off when Lifehacker featured CARROT. It sort of grew virally from there, with more and more coverage in the press, features from Apple in the App Store, and lots of hard work on my part to keep the app fresh with new content and features. I thought it was really cool when she hit 1,000 downloads; it blows my mind that she's in the hundreds of thousands now. It's very gratifying to see CARROT wasn't just a big hit at launch that quickly fizzled out, as happens with so many apps. She actually just had her biggest day ever last week, many months after version 1.0 launched.
But the best part is the feedback from users. When I started hearing that CARROT was the first to-do list that they actually kept using -- that's when I knew I'd made the right choices in taking the to-do list in such a different direction. It's humbling to get emails from people saying that something you created actually changed their lives.
How do you handle user requests and criticisms effectively?
CARROT's users are amazing. Their emails and tweets are almost always directed at the character instead of to me. They hold entire conversations with her, asking if they can marry her, showing off their home-made ocular sensor pins, etcetera. CARROT isn't just a to-do list to them.
It's important to me to have a strong connection with my users. I make it a priority to respond quickly and thoughtfully to feedback even if I'm busy doing something else. It annoys my wife when we're out to dinner, but some of CARROT's best and most unique features have come out of these discussions, so it's worth the effort.
Criticisms can be hard to hear sometimes, but they're often very helpful. In the first version of CARROT, for example, she'd get angry with you if you hadn't completed a task in 3 hours. I thought it fit CARROT's character perfectly that she would get pissy that you decided to go to sleep instead of getting more stuff done. But early users were right that this window was way too small -- it was annoying having to constantly micromanage her moods. If I hadn't listened to them right away, CARROT probably would have had a much smaller audience.
Now, how do you split time between developing new features and managing existing ones?
This is a tough question, because CARROT's so different from every to-do list out there. I'm constantly finding myself pulled in two directions: I can either add new "useful" features that improve the actual to-do list or I can add new "fun" content that extends a user's enjoyment of the app.
Nobody ever asked to have a virtual pet cat built into their to-do list, for example. Sure, the time I took to design and code it took away from adding more useful features, but my users absolutely love that damn cat. They keep using CARROT -- and getting more stuff done in real life as a result -- because they don't want Captain Whiskers to starve. Ultimately, adding this ridiculous feature has eked more productivity out of people than adding a whole host of productivity-focused features. That makes me very happy.
So in the end, I try to get a little bit of everything into each major release: bug fixes, common sense new features, and bugnuts crazy content.
What advice would you give to others that want to take on a similar project?
Start small. Before CARROT, I had this tendency to dream up hugely ambitious projects, like an epic 600-page time travel novel, that would take years to get out the door. Problem is, it's hard to keep momentum going for that long, especially if you're working alone. You'll be able to tackle the first roadblock you hit, but it just gets harder and harder as you begin to realise there's this insurmountable mountain of work ahead of you. Worse, you know in the back of your head that even if you pull off a miracle and finish the damn thing, there's a good chance that it'll land with a thud, and all that time you spent will have been wasted. It becomes much too easy to just give up.
Breaking the habit wasn't easy. I had to force myself to pick a small project, one that could be completed in just a few weeks. I had to resist the urge to keep piling on additional features. I had to tell myself that the end result was "good enough." It was probably one of the hardest things I've ever had to do, but some of my best ideas grew out of these constraints. The main character in CARROT, for example, was originally going to be a stuck-up corgi with a top hat, monocle, and bowtie named Sir Waffles. Thank god I didn't have enough time to figure out how to do his character animations, or I never would've settled for a sarcastic robot character composed of four concentric circles.
Lifehacker's new Behind the App series gives an inside look at how some of our favourite apps came to be -- from idea to launch (and beyond).