Extreme Programming – concept to release in less than a week!
No, I’m not talking about the development methodology. I’m talking about the creation of an iPhone app, from concept, through design and implementation, including creating back-end services and localisation into 5 different languages, inside of a week. Now that’s what I call extreme programming! 16+ hour days and the consumption of many cups of tea.
That’s what happened when we decided to create our Goal! Live 2010 app to celebrate the world cup in South Africa. The first match started on 11th June – with 64 matches to be played in total.
Development started on Monday 7th June – just 4 days before the start of the tournament. How’s that for an immovable deadline! The bulk of the work was completed in just 3 days, and was submitted to Apple for review. We also had to design a back-end system to allow the data to be broadcast to the users who had installed the app. Due to the time constraints we designed the interface and created dummy data for testing, and moved on to implement the back end services once the main app development was completed.
During testing we encountered a fairly significant bug within iOS. We had intended to roll out several different language editions of the app, so we were testing the app by changing region and language, when we noticed an error with the time stamps for events. The data for all the matches was being forwarded to the app from our own server side system, and the date conversion was working fine in our own locale. We eventually traced the issue down to a bug in iOS with NSDateFormatter, and there is an excellent explanation of the problem and how to work around it on Stack Overflow. Basically the issue arose if you were using the 24 hour clock or 12 hour clock and this was not the default format for your locale. NSDateFormatter would fail to parse the date string and we were getting blank time stamps as a result. The workaround was pretty straight forward and we soon had everything working again.
We use git as our source code management system, and thanks to a great little Google code project called Gource you can actually watch the development project evolve! You can see the development process for the Goal! app, and the back-end service in separate videos below:
Goal! Live 2010