There are many people who look to become an iPhone programmer because of stories about becoming rich quick. Woahhh, stop right there… How are you going to program something worthwhile when you’ve never programmed before or finished anything possibly worthwhile. Beginning to program for the iPhone doesn’t mean “Let’s start on a application, just need to learn the basics,” it means having an understanding of the platform and dealing with problems that will come up. Learning a language and using a language are two distinct skills like reading and writing. If anyone could program for the iPhone and become rich quick.. I should be a rich man right now! You cannot expect such a dream of becoming rich to come true unless you put the work needed into it.

You need to learn Objective-C, interesting language, and understand the nature of Cocoa Touch. Remembering the functions do nothing for you and besides that’s why REFERENCES are created. Becoming a programmer means you need to use the references, no matter what. I have the feeling of not using references as well because I’ve been using a language or an SDK for some time, but sorry references are essential to any programmer. Don’t believe me? Ask any knowledgeable programmer.

Developing an application requires time, skill, and patience. Why try to develop a full featured application or something out of your league as a first project? Not knowing what is being done or how to use the language in different ways leads to absolute failure. What do I mean in different ways? Know any C++? Right, maybe not. The keyword const can be used in different positions or even using macros or typedefs in a variety of ways might be essential to making your application compilable. It has happened to me before. You need time to figure out what you want to do and plan. Patience is absolutely essential to the process and you will lose interest in what you are trying to accomplish here. Developing small parts of an application is always better.

Full fledged iPhone applications go beyond the initial release, it needs to be maintained afterwards. If you are looking to release an iPhone application and expect not to maintain it, then do not expect good reviews. Actually, I do not expect your application to become anymore of a hit then it could be.

Some type of support is needed for an iPhone application. Mysterious things might happen whereas a user might want to submit a bug report, if there is no support email or web site to submit this to then why should your application be a hit of any kind? If it is a hit now, say goodbye to your spot once there is mass criticism about a bug that cripples the application. Once a bug is publicized there will be criticism and it will be on the internet likely FOREVER. You have been warned.

Technically speaking, you can do whatever you want with the iPhone, but you have to deal with the limits of the iPhone as well. With the current memory in the iPhone it takes clever programmers to figure out how to minimize memory usage of their application. You do not need to know everything there is nor should you be worried about knowing everything about a programming language, SDK, device, etc.

I do suggest Beginning iPhone Development: Exploring the iPhone SDK for Mac users. Buy it from eBay if anything. Stay commited to it and do not expect to understand everything the first time around especially if you are a newbie. I had no idea what a message or selector was, when I went through the initial part of the book, until I looked more into them. Not sure if I exactly know what they are, but I do know how to use them now.

I’ve been looking at assembly for sometime and I felt yesterday that it was the time to learn it. Yeah! Finally! I am not expecting to do something useful with it yet. I think the reason why is self explanatory, this is assembly man or woman!

Many people seem to think newbies want to learn a programming language in seconds or days. Maybe some do… My take on the matter is that newbies just want to do something in a programming language, which is one of the reasons why many newbies resort to copy and paste methods. There are simple things that newbies can do and some are be patient, read, write, learn, and stop looking for instant gratification. When you program something useful then you can look for all the gratification in the world. Until then, sit put and learn. From what I’ve seen, tutorials seem to throw things at the newbies because it is assumed that the person reading the tutorial knows this stuff. I think it should be a universal truth that most people will not start from the beginning of a programming language until they see they can do something useful with the programming language. That CONTRADICTS the reason of learning a programming language then. Learning a programming language in an attempt to do something useful with it, yet doing something useful now means you will have done something useful, therefore there is no point in starting from the beginning! Of couse, there are many different takes on this matter, but this is just my view.

I remember those days of looking at ‘How to create win32 windows’ tutorials and being overwhelmed with code and explanation of things I never seen. The code wasn’t esoteric; all of it was readable. I could not understand some of the explantations because I had no idea what some of the basics were. I asked myself questions like ‘wtf is a HANDLE?’, ‘wtf is a word, DWORD’, ‘what is an _stdcall?’ or even ‘what is all of this’. Sure a HANDLE could be explained as being an object that refers to an address in computer memory, but what would I have understood from that? I wanted to know how do I use it rather than what it was. That is a symptom of no patience!

Today, I look at assembly and say: “I know some of this stuff” because I’ve looked at assembly code time to time and read explanations on what the code did and meant rather than read from a book. Books at helpful in ways, but do not usually have good styles to adapt to.

So my advice for attempting a new programming language is to look at other people’s code from time to time. See if anything can be redone in a simpler way, or if there are apparent bugs. The most important thing when looking at something you do not understand is to LOOK IT UP. I mean seriously, what is so hard about looking things up? GOOGLE IT. BING IT! They work just fine. Sure, there are certain things that are ambigious, but usually there are so many apparent references to look at that there are no questions asked! Unless, the question being asked is about efficency, common use, or something of the like. To me, asking ‘what is print’ or ‘how to make cout or cin work?’(many examples show how to use them!!) are stupid and should be avoided. More advice: Read articles, write code, write thoughts on a book, practice design. It really depends on preference, whether you are learning a language to read and write or just to read. If you are looking to read another programming language, write minimal code… at least.

Anywho. Just my thoughts. Many experienced programmers are correct that newbies ask many stupid questions and i agree! Who says there is no such thing as a stupid question? The patience of some of these programmers is astounding. <— see keyword patience.

There used to be a time where computer programming used to be limited to a handful of people. Today, computer programming is for anyone interested. A question I have not seen asked is “Why are we lowering our standards in regards to what language a newbie should learn?”

Many reasons, but I’ll list a few. Easier languages allow for increased productivity when programming, faster way of grasping programming basics, and less problems for newbies.

  • Aren’t companies the ones looking for increased productivity? I thought increased productivity comes from a team effort on a project rather than the language itself, maybe I am wrong.
  • Sure, something like C# would be a faster way to gain the basic skill needed to advance, but do you understand the basics? Understanding is more important than just using.
  • Newbies will always find problems, no matter what. I know some newbies want to be ‘daring’ and go for lower level languages first, but I lower languages ‘kind of’ force you to learn the basics. Without the basics, you are good as gone. Problems are basic, finding them is tedious, fixing them is easy, but thinking is the challenging part.

I jumped from PHP to C++, which was possible since PHP has a simliar syntax structure to C and C++. Why is it that newbies are told to get into Python, Java, or C# then go on to C++? It is still a matter of choice and depends on motivation of the person. Lets’s say a person chooses C++ and is motivated to learn it, then it is more than probable that person will learn it as opposed to the person driven by an impulse to suddenly build something (like an MMO!) on a computer.

Some people want only the basics, some the advanced, and some just want to build. Totally understandable, but when someone is looking to learn C++ I’d suggest looking at history and reading about programming motivations the see if C++ is needed for the job.

Me: Yeah, of course they are boring.

Dude: “But why?”

Me: Well, tutorials are made by programmers who are still learning themselves, even though the learning process never ends.

Dude: “What do you mean the programming process never ends? I want to be the best!”

Me: I wonder if there is such a comparison method for grading programmers. Does not make sense to say there is a best programmer. Anyway, you need to learn concepts from tutorials. Don’t just read what the tutorials says and write the code. Write about what you are learning from the tutorial and other thoughts you may have. Even the craziest ideas should be written down. You never know if you get back to a past idea to see if it was a solution to a current problem.

Dude: “Ok, right…. I am not the type to go through past notes to see if there is a solution. I really don’t understand the tutorial I am reading now.”

Me: Find other tutorials and look at what you are supposed to be learning.

Dude: “Why find other tutorials? You said in your SDL post to stick with one tutorial.”

Me: Yeah, I know that, but tutorials are not foolproof. Some tutorials are good and some aren’t. gamedev.net is a huge resource of games related topics. Not everything they post are tutorial, most are articles. Articles are written to spread information about experiences. So, what do you think you are doing when you write about what you have learned?

Dude: “Ah, I see. I got it. Writing about what I learned is a good idea. What if the tutorial lesson is short?”

Me: Write a little on what you have learned, then write about possibilities of what you have learned up to that point. Honestly, if you think a certain tutorial is a waste of time, then skip it entirely or just plainly don’t write about it. Some lessons are informational only, so that means just read it through.

Dude: “Sounds reasonable so far. I have nothing.”

Me: Good Luck. Most people (or Americans) want quick results, don’t fall into that trap. You’ll fall hard and probably lack the willpower to get back up.

Dude: “Fine fine… (To self: This guy is bogus)”

Me: Yeah, follow me on twitter now. Buh bye.