When the haze of the last project has just worn off. When you’ve finally played enough video games and caught up on your favorite TV shows. When you realize that reading about programming doesn’t quite equate to programming. It has come time to decide on what your next project will be.
Sure, you’ve learned a lot of lessons from your last project. You’ll actually define an application statement before you write a single line of code. This time you’ll actually design the whole interface up front. MVC finally makes sense, now that you’ve completely screwed it up once. You’ll be thinking about usability from the get go this time. No off the cuff crap like last time.
Apple has a nice writeup on what an application definition statement is, go read it if you don’t already know. The reason apple has the writeup is because they coined the phrase. If you’ve watched any of their developer videos from WWDC then you’ll be familiar with how much they evangelize good development practices. I particularly like this one, if you keep coming back and looking at it throughout the application’s development it will help to focus you. It’s also nice to refer to when a friend asks what you’re working on. You’ve got a concise description of your application devoid of technical jargon.
If you’ve got a CS degree or just suck at drawing then your first instinct when starting a new project is to open an IDE. That’s a really great way to end up with a completely useless piece of junk that barely solves your problem. If you want to actually sell your project then you’re going to want to spend some (preferably the majority) time up front mocking up your entire application. I learned this the hard way when I made No Dice, I only did pencil mockups and never actually made a complete mockup using some sort of design software (Photoshop, Keynote, Omnigraffle, the list goes on).
The reason a complete upfront design is necessary is because once you’re actually writing code it becomes difficult to do any meaningful interface design. You’re much more likely to [UIColor whiteColor] some backgrounds instead of actually making some nice textures. When the coding part of the brain takes over it wants to complete the prototype and make something work. If you don’t already have the graphic elements ready it’s nearly impossible to keep the design pretty and usable.
For the longest time I couldn’t wrap my head around this concept. It took completely coupling data with a view and then needing to save the data to a file to finally realize how important it is. One of the best places to look for good MVC design on the iPhone is Apple’s own code examples, notably The Elements. This periodic table app shows many cases where MVC design can be employed to speed up the application and reduce code bloat.
What resolutions have you made after completing your last project? I’d love to hear them because I’m surely forgetting lots of them.