Want to be an iPhone programmer?
July 20, 2009
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.
Lowering the standard… (programming)
June 3, 2009
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.
PHP OO thinking in a flash!
May 24, 2009
I’ve been dong some extensive PHP OOP lately and found that it is easier to discard many principles of OOP such as the Single Responsibility Pirnciple. Single Responsibility (in a nutshell) is every object / function has one main responsiblity. It is challenging to break the usual thoughts of procedural programming where everything is programmed from top down. Essentially, having a procedural style of programming means you are thinking like a computer.
Well, how can one start thinking about objects as people? So far, I’ve found PHPFreaks OOP (3 parts to it), Object Thinking, Code Complete 2, and Pragmatic Programmers: Journeyman to Master very good resources.
I think of every object as some type of room, person, or other metaphor. Some objects will be books (Data aggregators, structs), People (Managers, workers, etc.), and rooms (Lists, arrays, stacks, etc.). The point is if you think of an object as different materials, then you tend to see the classes, functions, and properties you need to write onto paper. Example is: I have a room full of books. I need this person to retrieve a book from a room and tell me what is the author’s name. Book has the authors name, room has the book, person need to search the list to retrieve the book and finally ‘gimme’ the author’ name. It is one way of looking at OO thinking, so you can come up with different associations and bound together.
You are using the real world as a model and attempting to replicate it, always remember that.
Programming Tutorials are boring.
May 23, 2009
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.