What I’ve learned from the iOS projects done in 2011

No Comments

Summary: In 2011, I’ve done 5 client iOS projects: 2 complex ones, 2 average ones and a minor one. In this article, I would like to make a retrospection on what I’ve learned.

 

Rather than iterating the technical details that I’ve learned over these projects, which, by the way, were so much that I would not have even thought about back in 2010, I would tell something abstract enough (aka no-brainers), that most of iOS dev guys can take right away, hopefully.

Bad things done, that I will try to avoid doing again:

  1. Be over optimistic when give project time estimations to my clients.
  2. Not do prototype to validate feasibility of all features, with current iOS technology, within given time.
  3. Not give my fellows enough coach, letting them do too much cowboy coding and fixing the ugly at the end of day.

Good things done, that I will keep practicing:

  1. Code with styles and comments, in order to make my source code readable to someone else, especially to novice iOS developers. If you know your code will be read/maintained by other developers, believe me, you will write your code differently.
  2. Focus on the every details and try to be perfect when it comes to user interface, this is, after all, the only thing our clients can touch, feel and say something (good or bad) about.
  3. Use git, either on solo projects or working with team.
  4. Use testflight service, use their SDK to track crashes during ad-hoc test.
  5. Try to adopt 3rd-party source code to meet client requirements, don’t re-invent the wheels. Oh, I love github.
  6. Use project-wise UIViewController template class to do common tasks like returning to home screen, jumping to help/info page, showing networking calling status, showing common errors, setting supported orientations, etc. Subclass the template class to implement the specific use cases.
  7. Adopt good architecture for network-bound app. I used to use singleton class with delegation call-backs as the silver bullet, until the ever-growing server APIs callings turned my singleton class into spaghetti code and caused some odd glitches. Luckily this article emerged and enlightened me.
  8. Use NSArray/NSDictionary objects parsed from server-returned JSON value straight in the code, instead of wrapping into an extra modeling class. It saves great effort when refactoring server-side APIs.
  9. Use two Xcode targets to build ad-hoc and app store distributions separately, each target bears its own bundle version and bundle identifiers. This pays off in later version iterations.

I think this summarizes most of what I’ve learned. Hope some points make sense to you as well. I will blog more about the technical stuffs I’ve learned. Bye for now.

Older Entries