Note: Derek Lee Bronston is the senior instructor of the new iPhone 360 Development course at SAE Institute and Tech Partner at the Design+Tech company theConspiracy.
Making stuff is fun. We did it as kids, we do it as adults — only now we tie our incomes to it. In the end, that fun you experienced building giant LEGO edifices still applies. We just need to monitor the details a little more closely. Ultimately what I find interesting about application development is the balance between Art and Science, and of course the act of bringing an idea to life with code. The app world is open to everyone with a computer and a text editor, and I fully encourage you to jump in. But first you must understand the development cycle so you can see just what’s involved, then realize that development isn’t just a 10-step process, but the culmination of successfully balancing Art and Science. Hopefully this article will inspire young developers and maybe stir conversation with the veterans. Now, on to the basic development cycle.
- IDEA – The raw idea for your app you got in the shower.
- BRAINSTORM – Taking the raw idea and thinking out in detail what it will really need to do and why. Then finally how the business model relates to the functionality.
- SPEC – Documenting all of the functional specifications of your application, any third party APIs or libraries needed and details about how it all will work together. The deliverable being a top level explanation of all functionality.
- WIREFRAME – Drawing out the app either on paper or your favorite software. Taking into account every User Interface element and what it will do. I personally like Omnigraffle for this. The deliverable being a shareable document, possibly a PDF, that can be used by the design and development team(s).
- UI DESIGN – Designing the look and feel of your application taking into account any branding considerations. The deliverable being production ready art files.
- SOFTWARE DESIGN – Based on the final design and spec plan your software, the actual code. The deliverable being all class definitions and documentation for your application.
- IMPLEMENT – Write code. The deliverable being a BETA version of your application.
- TESTING – Test your app on all applicable devices. Make bug fixes or performance enhancements per device or OS. The deliverable being a production ready app.
- LAUNCH – Put it out there.
- MAINTAIN – Upgrade it, fix it, make it compliant with some new OS.
These are the 10 basic steps as I see it of app development. That said, it is extremely important to remember that software needs to be agile and, just like ideas, is not static and should be expected to change. Developing is always a balance between planning and then dealing with the unexpected. You need to plan carefully what you are going to do, but at some point even the best-laid plans will need to be modified. It’s all about agility.
So what does agility mean? For my money it means flexible, quick, creative and intelligent responses to problems as they arise. I read once somewhere that 50 percent of development is debugging. Whether that statistic is exact or not, I can say that developing is about problem solving, and the quicker and more elegantly you can solve your problem the better off you are. How we ensure agility is trickier. This is where the balance between Art and Science really gets seen.
When a new problem arises, it’s our creative flashes that present possible solutions, while our scientific side allows us to organize, test and execute this creativity in the context of our software. We live in the age of Object Oriented Programming, and for new developers, the quicker you get your heads around these concepts the better. That said, every stage of planning is crucial; the more you plan, the smoother your project will go. I cannot express enough that skimping on planning will come back to bite you in the a** in the end.
Of course, even though we try to plan for all foreseeable contingencies in our application, there are always things we can’t predict as well. So the key is to make each component of the software flexible and modular so that we can add, modify or delete elements without taking down the whole app or having re-write a thousand lines of code.
Technical issues aside, we all want our apps to be successful whether they are built as a service for a client or sold by us directly via the App Store for a profit. Good code is not the only issue here, but also good ideas, creative marketing and speed to market. Obviously there are many things out of our control, and depending on the kinds of budgets we are working with we can be limited on the marketing front. The playing field is not even, but it is open. As developers, the better we hone our skills and develop agile software, the easier time we will have competing in the marketplace and delivering quality software to an app-hungry world.
Derek Lee Bronston’s career began at an early age where he could be found tinkering with BASIC and his parent’s Atari 800. From there, Derek went on to be a leader in the technology design space acting as lead developer and technical project manager for a vast array of clients include Pfizer and NFO Worldwide. In 2002 he went on to develop the now successful internet language company Yabla INC and the development firm Cadoa Arts & Science. He is currently the senior instructor of the new iPhone 360 Development course at SAE Institute, the leading institution for creative media education. Derek is also Tech Partner at a Brooklyn based Design+Tech company, theConspiracy, where he has been developing a line of cloud products & development tools to help developers and marketers bring extensible applications quickly to mobile and web 2.0 platforms.