Yesterday Kent Nguyen posted a blog: “Dear business people, an iOS app actually takes a lot of work!” which got a lot of votes and comments on hackernews.
And it really amazed me. For two reasons: First, the points he is discussing are nothing new to App development. They are true for any software project. So why is he upvoted so heavily? Secondly because I disagree with some of his comments. Do I miss the big picture or do we just have a different experiences.
Apps are just software
I’ve been working for almost 10 years in software development doing consulting work. The discussion has always been that in software “there is more than meets the eye”. Most of the work is done in the backend. This is not only true for apps, but for all software projects. And as software engineers it is our duty to inform the customer. And advice them in the steps to be taken. In the remark: “prepare to pay more than just for the iPhone app” iPhone app can easily be replaced by website.
He mark some of his text in bold: “You need to have a server“, “There is no standard way, there is no plug-and-play way to do it“, “These APIs must be in existence before you can proceed to make the iPhone app”. And I dont’t agree. On some projects I worked on I just used my own server or a service like parse.com. For other project we created a REST web api, hosted on our own servers to connect to in the app. The REST web api will connect to the customers webservices when they are ready. Till then we are able to present mock data and test the interaction of the app. So we have created the IOS app, we are testing it’s flow and getting feedback and are able to change the behavior of the app while the API is not set in stone. How lean is that?
About iPone development
My flow of app development (iPhone of Android) is fairly different than the flow Kent posted. Normally I would start by creating an interface design in balsamiq . And begin the initial development of the interface directly after that. In the first version I focus on the interface elements and their interaction. I use fake pictures and create the flow of the application. This will take me somewhere between 2-5 days. I will show the app to the customer and will gather feedback. In my experience the customer understands the app the best when they can interact with it on their phone. Luckily we have tools like testflightapp to send updated versions to customers.
In this phase we discuss new wishes and I give them quotes. Based on my experience most of the wishes they have at this stage can be implemented in a couple of hours. Even a Facebook like button.
After we agree on what will be in the app, I provide the app to a visual designer to finish the design. And when he finishes I implement the design in the app. Screen by screen.
So I disagree with Kent. Nothing he states is new for app development. Teaching a customer how we create software has always been part of the job. And I don’t have the same experiences with the limitations in the workflow. I can build apps “lean” and “agile”. But perhaps I’m missing something here.