
I’ve mentioned this in my online courses as well as classroom courses and its usually overlooked. I think its an important design technique for those of us who are Visual Learners.
What’s a Visual Learner?
Many people, prime examples are asian students, are great at math because they are quick to grasp abstract tasks. They can read a sentence or paragraph and understand everything the first time. Not me!
I’m the kind of person that has to read concepts 10 times over and still have trouble applying it. I need visual representations of concepts in order to understand them. As a matter of fact, I review iOS and Cocos2D books and my comments are usually “We should insert a sketch here showing how a block of code is passed to a method and executed at a given time…”.
We visual learners have a hard time organizing concepts in our mind unless we write things down or sketch what we believe is being said.
Coding in 3 Steps:
1. Draw it!
Creating an app or game is just like understanding an abstract concept. I usually start out drawing a storyboard on paper. I need to see a sketched drawing of what the app’s views are going to look like. I usually draw views and some important controls that transition between one view and the next. I also try to visualize the flow of data from one view to another. This can get a little tricky but if one sheet of paper won’t do, Ill usually end up with 4 sheets taped together, a whiteboard of which I take pictures of or Penultimate. Unfortunately Penultimate runs on an iPad whose screen I wish were bigger 🙂

2. Comment it!
This is where the magic happens. I will basically open up Xcode, create the classes I drew out as objects and comment all my ideas. What Ill do is go into a class and create its methods, at least the methods I think it should have. Originally these method names were simple, such as:
somehowGetDataFromFlickr
somehowShowDataInConsole
popAlertToUser
makeCopyOfData
showListOfDataToUser
but eventually, as I picked up more knowledge, learned that many tasks are repetitive patterns and understood UX and coding techniques, those names evolved:
downloadDataFromWeb
parseDataIntoFoundationObjects
notifyUserDataDownloaded
notifyUserDataIsParsed
shareDataWithObservers
logDataInCoreData
updateUIScreenWithNewData
So now I know, in layman’s terms, what I need to do. This would, at first, take me to Google.com and eventually to StackOverflow.com. I would basically append “How to…” that proposed name method and “…in iOS”. This would give me some code samples and I would begin researching the examples I found. Eventually I learned how to read Apple Documentation (How to Read iOS or Mac OS Programming Documentation) and Apple documentation took precedence over Google and StackOverflow.
What I would do next is take a particular method and insert comments of what that method should do:
-(void)downloadDataFromWeb{
//1. NSURLConnection
//2. Get data from delegate methods
}
Then I would begin coding right underneath each comment.
3. Code it!
Finally I would take examples from any source I found online and download them and tinker with them until I made sure I understood what they do. In time this is replaced by understanding how OOP works and its many useful patterns. This is when coding gets to be a pleasure!
So it takes a while, but you WILL eventually have FUN coding. But its a lot easier to get to the fun part if you are a Visual Learner and use Comment Coding to get you there with a decent bit of sanity left 🙂
Enjoy Coding!