The Greek Pressure Cooker
Last October, I spent two very rewarding and educational weeks in Athens, Greece, to help build an app for a client. We started with legacy code and an unfinished app, but ended with one that elegantly meets our clients’ needs. Oh, and we had only two weeks.
A BUMPY START
CityShare enables users to find and share tips about interesting locations nearby. The inspiration for the app came from seeing all those Facebook updates like “Anyone have tips for Berlin?” or “What should I see in Madrid?” The CityShare founders envisioned a social travel network that lets you easily save and share your favorite locations, and to collect suggestions from your friends that you can take with you on your travels.
When I joined Maarten Graven and Flip Vernooij from CityShare in Athens, they’d had a bumpy road. For more than a year they had been refining the concept through interviews with potential users, outlining features and finding investors. Once the coding phase began, there were many difficulties with the developing party: delay after delay, communication issues and disagreements, an incomplete implementation—and a lot of frustration.
There was also plenty of urgency, because the team had been invited to present at the Web Summit conference in Dublin, just two weeks away. In that two weeks, we were able to get a basic version ready to demonstrate and release to testers, and our client was very satisfied not only with the results, but also with Big Nerd Ranch’s collaborative process.
It had taken the other developing party about five months to get to a buggy, unfinished product with a messy code base. How did we avoid the same fate?
KEEP THE GOAL IN MIND
Flip had put his heart and soul (and several months of work) into a custom backend. However, I recommended replacing it with Parse, a backend-as-a-service that I’d used previously—at least for the MVP. The team was willing to do whatever it took to get the result they were after, so we went for it. (Thankfully, CityShare avoided the sunk cost fallacy!)
Using Parse as a backend jumpstarted development because we didn’t have to deal with things like local caching, bad network reachability, or user registration and Facebook login, among many other things. Besides that, the flexibility of the database scheme allowed for a very agile approach to developing the data structure. Making changes was a breeze!
Another way to finish sooner is to do less. The team had originally thought of many features that they wanted in their app, which they detailed with a lengthy storyboard. In the process of defining an app it is hard to separate the indispensable from the nice-to-have. Not only would it have been impossible to implement that feature set in the limited time available, but it would have also deviated from the absolute minimum required to test the validity of the concept. It is often better to refrain from adding features until tests show that they are necessary.
For example, it was perceived to be very important to eliminate duplicate locations for tips and to have correct address details for each tip. This would require a lot work for the user and a lot of development effort while being very error prone. In true YAGNI (You Ain’t Gonna Need It) fashion, we dropped this requirement. Each tip has its own location. Removing hurdles for the user means more data. Later, once the data is there, nifty algorithms can be employed to find all sorts of interesting patterns.
Recognizing something as non-essential and removing it in order to create an elegant structure is a source of great pleasure for me. It is a testament to their flexibility and goal-orientedness that the CityShare team went along with our recommendations and all the concessions they entailed. See Don’s excellent post on scope creep if you’re having trouble convincing your client.
AVOID EVERYDAY DISTRACTIONS
I never did explain why this took place in Greece, did I? In fact, the CityShare team is located just a brief bike ride away from the Big Nerd Ranch Europe office in Amsterdam. The reason to go all the way to Greece was that the team had met Klaas Speller. Besides setting up a Greek Appsterdam embassy to strengthen the local community of app makers, Olga Paraskevopoulou and Klaas run projects at Stone Soup, their office space in the center of Athens, where they bring together local and international people. The CityShare team were invited to come over with the clear goal of creating a working minimum viable product before our plane back to Amsterdam took off.
Everything was provided: lodging, a place to work, food and office supplies. Not having to worry about any of that clears the mind for coding! Klaas and Olga also brought in local talent to strengthen the team in the form of a designer and a developer. Klaas himself was available for strategic advice and some hardcore coding.
FIGHT THE ENTROPY!
We were lucky to have help from Mike Lee of Appsterdam and New Lemurs fame. He strongly recommended, and saw to it through code reviews, that we adhere to a strict code style in order to prevent an overly complicated project. The productivity benefits quickly became clear: what a pleasure it is to work on a clean code base.
The CityShare team had a great time at Web Summit. Their presentation went well, resulting in useful feedback and many new valuable connections. Good thing they had something to show! Right now, the app is in closed beta and the team are happily building upon it. I’m pretty confident that you’ll hear about this startup very soon.
If you find yourself in the situation where you quickly need a working prototype of your vision, I know some great development consultants I can recommend!