Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

MickeyT

macrumors member
Original poster
Apr 26, 2010
92
0
Newcastle, United Kingdom
There have probably been ten a penny of people writing that title and asking what I'm about to ask, so I apologise.

However, I would like someone who has the knowledge and experience of computer programming to either encourage me or shoot me down and save me some time and money.

I have been interested in learning a computer language for a while. Six months ago I nearly spent £4000 on a C# course that promised to have me Microsoft certified within 12 months. I was convinced that it was possible because I understood the concepts in each book that I read. However, a developer on a similar forum warned me off courses such as the one I was about to embark on and made it clear that .NET was complex and required years of experience before one might even consider themselves competent.

The desire to learn did not subside despite the fact I put my aspirations to one side and decided it was simply not going to be possible to understand C# and the .NET environment without tuition.

Recently, I bought a beginners book for writing iPhone applications. Despite the fact that I'm sure the iPhone environment is complex and rich, the book again made me feel like I could do it, and the Xcode/Cocoa Touch environment in particular seemed more intuitive than what I had briefly grappled with in Visual Studio.

Which brings me to my question: with work, research and dedication can someone with no computer science qualification or background teach themselves (without a tutor) Objective C and, ultimately, a programming environment (in this case Xcode and Cocoa Touch)?

If this is an unrealistic aspiration then I'd rather save myself the cost of a Mac and avoid the inevitable let down when I ultimately discover I can't achieve what I want to achieve. I do not have delusions of grandeur and understand that there will be concepts that will be challenging, but is it a surmountable task for someone with a bit of intelligence but no prior experience? I see it as a hobby to begin with, but the iPhone also provides a realistic outlet for my work if I ever produced something that was good enough. Books will always make you believe it's dead easy, so I want someone who is a developer or who has the experience to lay it on the line for me.

Again, apologies if this has been asked a thousand times before, but I personally like to know that if I put the work in on my own that anything is achievable, rather than always be mentally limited by the fact that I'm only ever going to be an amateur unless I go back to university or something (which is not an option).

Thank you for any advice.
 
Which brings me to my question: with work, research and dedication can someone with no computer science qualification or background teach themselves (without a tutor) Objective C and, ultimately, a programming environment (in this case Xcode and Cocoa Touch)?

In a word, "yes" ...

I see it as a hobby to begin with, but the iPhone also provides a realistic outlet for my work if I ever produced something that was good enough...

Here's where you're going to run into a problem. Getting to the skill level required to make a decent iPhone app demands more commitment than just being a hobby.
 
Depending on your attitude to it, your commitment and, somewhat, how your brain is wired it is probably possible. The last part is, I think, important. For some people programming (in general, regardless of language/environment) just clicks and they can start to think in the correct way to write and structure code. Some people don't ever reach that and can make it work through sheer hard effort and stubbornness. And some people seem to just have their brains wired the wrong way to ever program no matter how they are taught.

If you are going to do this ensure that you understand what you are reading: don't just copy/paste or type the examples in and if it works think that you've learnt something. Understand what each and every statement does, why it is there and what would happen if you changed it.
 
There are high school kids who have managed to write innovative (and certainly non-trivial) computer games only a few weeks after (intensely) starting to learn to program. And there are college graduates (somehow?) with a computer related degree who can't answer the simplest interview questions and/or code themselves out of a paper bag.
 
I decided a few weeks ago to start to learn Objective-C to develop iPhone apps. Before this, I wanted to learn C++, even bought a book, but it was horrible and I only read a few chapters.

The book I just got is "Programming in Objective-C 2.0" by Stephen Kochan. This is an excellent book that will get you started with Objective-C. It is written for people who have little to no programming experience. I know PHP which I've learned from this book is very similar to C, but that is a web language; however, this book has been the best book I can find on the subject and has even taught me ways to better go about writing in PHP also.

The book doesn't go that much into Cocoa or Xcode. The bulk of the book uses the Foundation framework, but the ending chapters walk you through creating a simple fraction calculator with a graphical interface on the iPhone. There are lots of recommendations for further reading (books and websites), each separated according to the path the reader wants to take: learn more Objective-C, learn more about C, dive into Cocoa, and iPhone app development.

If you've never programmed and are intimidated, I recommend this book. You don't need to know about computer science, but you will need to understand concepts of algebra (ie. variables, functions, etc.)
 
Again, apologies if this has been asked a thousand times before, but I personally like to know that if I put the work in on my own that anything is achievable, rather than always be mentally limited by the fact that I'm only ever going to be an amateur unless I go back to university or something (which is not an option).

Thank you for any advice.

I've been responsible for hiring programmers for a while now.

I really don't think programming is something that can be effectively taught in a classroom setting. Most of the best programmers I've known have been self-taught. You learn the basics (hello world) and then you go from there. To be honest, it's either something that interests you and you just "get", and therefore you will invest time in it, or not.

I can't count how many university trained java people I have flat out passed over because while they spewed out the exact definition of inheritance or reflection, they completely lack any portfolio that shows what those concepts actually mean.

Some of it is definitely just having the "knack" for it as well. Anybody can be taught to play every chord on the piano. It takes someone with the "knack" to be able to play a song or compose a symphony.
 
Go for it.

I don't have a CS degree (I majored in Film) and I make a living as a programmer, all self-taught. I just learned from books. I did take college courses for graphic design, which was my original line of work (still is to a degree).

For me though it was a more of an organic process, gradually increasing my programming aptitude, as I did some basic and c when I was a little kid, learning from books. After college, with my graphic design skills I got into designing websites, learning HTML, CSS and JavaScript. Later learning ActionScript for Flash and learning ASP (classic ASP) and PHP. Eventually learning C# and Dot NET (and picking up more languages since then, like Objective-C/Java/Python, etc).

Only the first language is hard. The rest should be easy to pick up. But don't rush it too much. There is a lot to absorb the first time. Aaron Hillegrass, from his popular and very good "Cocoa Programming for Mac OS X" warns that when absorbing new information, be sure to get good rest and sleep. It's good advice.

My only caveat is that you need to have dedication from learning on your own. I starting learning programming when I was a little kid (8 years-old) from books so I'm used to it, and computers back then were only command-prompts, no GUIs. Some people can't do it from books and get headaches, and quit frustrated. But one advantage is that now you can also learn from videos too. Also there is the Internet now so there is a lot of online help via forums, blogs, etc.

My biggest tip is to actively use forums. Ask questions, but even better, answer questions. I usually learned the most when I was trying to help others, as it forced you to really understand concepts and do fact checking (but that maybe because of my journalism classes, if you pass on knowledge to others, its your duty to make sure that it is fact).
 
I'm in the same boat, MickeyT. I have little experience and a desire to learn.

The only difference for me is that the initial costs are much lower as I already have a Mac. I've also done some very minimal programming before (BASIC when I was a kid) and currently do a lot of SQL (not really a programming language, but I think it requires a similar mindset).

Anyway, all of my computer related learning has been largely self-taught. I suspect that if I work at it, read the right books, I should be able to at least cobble together an app... and eventually I might even be able to make a decent app.

So yeah, I say go for it... even if it's not iPhone specific programming that you go for.

--sam
 
You seem to have at lease two of the requirements to learn programming. The first, desire, has been with you for a while now. The second, understanding the concepts, by your own admission, also seems to be there. The question only you can answer is, do you have the patience.

Learning to program so that you can create even semi-complicated applications requires time. Long term commitment. This isn't uncommon for many things. Most people just stop at understanding the high level of things because their desire to dive in doesn't match their curiosity. Are you willing to be in a continuous learning mode? You need to answer that for your self.

If you only have a Windows machine, then download Microsoft's Visual Studio Express and find a beginner book geared toward that. Buying a Mac seems like a big investment in something you don't yet really know if you'll willing to commit to it. Search for "visual studio express" in Amazon and review the books listed. Programming concepts are transferable, so this would be an inexpensive path to your future of programming.
 
I see it as a hobby to begin with, but the iPhone also provides a realistic outlet for my work if I ever produced something that was good enough...

Here's where you're going to run into a problem. Getting to the skill level required to make a decent iPhone app demands more commitment than just being a hobby.

Hobby was perhaps not the best word to use. As I feel I should respect the discipline of programming (so as to avoid sounding like one of the many people who frequently underestimate the job of writing an app or a program) I don't want to put any pressure on and say that I will create this app or write that programme or achieve super stardom; I simply want to know that if I read and practice and enjoy learning new things that it won't be wasted effort because I will be limited by not having been on a proper course.

Incidentally, I have already been writing what are probably primitive programs at work in visual basic for application for a couple of years. So I am completely comfortable with what I perceive to be the basics: instance variables, objects, classes, functions, subroutines, pointers, properties, multi-dimensional arrays, collections, events and all the program flow statements.

VBA doesn't seem to really allow you to delve any deeper as, for example, inheritance doesn't appear to be supported, there is no constructor overloading etc.

So I see the iPhone environment as somewhere that will allow me to take the next steps, but at the same time it seems a smaller and less complicated environment to grapple with than, for example, Windows (please correct me here if I'm wrong). And, from the pictures in my book, Apple's knack of creating pretty intuitive user interfaces is even apparent in the SDK software (unlike Visual Studio as I recall). I totally get the chapters I've read so far.

So that is where all this renewed vigour has come from. And I'd like to thank all who have replied because it's given me a real motivation to have a go - if I ever have any questions then its clear that this forum is pretty welcoming.
 
If you only have a Windows machine, then download Microsoft's Visual Studio Express and find a beginner book geared toward that. Buying a Mac seems like a big investment in something you don't yet really know if you'll willing to commit to it. Search for "visual studio express" in Amazon and review the books listed. Programming concepts are transferable, so this would be an inexpensive path to your future of programming.

I totally get what you're saying - I've been toying with that very issue. My next laptop will be, without question, a Mac. I was going to get one now as opposed to in, say, a year's time purely for the ability to use the iPhone SDK, which I don't mind because its my interest and so that's fine.

When I looked at Visual Studio previously I was under the impression that I would have to understand the entire Windows environment. I'd read about C# and I was comfortable, but the environment within which I would put it to use was a different animal again. And then to actually create a programme that had any meaningfulness I had to be able to save my data somewhere, so I bought a SQL book. There seemed to be too much that I had to master just to be able to cross the start line.

The iPhone environment seems, from first impressions, a bit different because there isn't as much going on inside the phone as there is inside a Windows PC (again - stop me if this statement is misplaced). I've not read the chapter in my book about Core Data yet, but it was briefly described as a wrapper around SQL Lite, which means that you don't have to know SQL to use it (if I'm wrong then please tell me).

It just seems more surmountable than the Windows environment.
 
I had to learn C# and ASP.NET in 3 months for one job, in order to roll out a pretty complex site that needed to be done with Dot NET and MS SQL, rather than PHP/MySQL. It wasn't hard, but I did bang my head several times trying to learn things the MS way. It proved be a worthy project and investment, as a year later, with 3 more ASP.NET projects under my belt, we landed a $100,000 project for C# and Dot NET. So point being, you can tackle it, C# and Dot NET if you want too. it's not that insurmountable. especially since you already have programming knowledge.

But go with your passion. If right now it is iPhone/Mac programming, then do that. Passion and enthusiasm go a long way in effective learning.

As far as cost of entry, you could buy a Mac Mini. They are cheap and they are fine for iPhone development and plenty of developers use it. On the chance you decide to quit iPhone development, you can always sell the Mac Mini. They retain their price on the used market very well and you can sell it easily and recoup a lot of your money back.
 
hey mate. i was in your similar shoes. got a book, sat down and made two apps that are holding their own in the app store right now.


this was my first attempt which is kinda pointless but has a good following:

mr. mailman

this is my second one and is quite a bit more popular.

what google knows app

was quite a few sleepless nights on the second one, as its a but more involved, bit sure mate. you can do it.

if you ever need help or want to talk code pm me or something.

cheers.

j
 
It's worth noting that the SDK is free. Go to developer.apple.com, make a free account, and you can download XCode and the 3.2 SDK. It includes an iPhone and iPad simulator, so you can write your entire app, test it and whatnot, and then when you're "ready for sale", toss down your $99.
 
I am just starting myself to get ready to write an app I have an idea for. It's for my fathers self owned company and I think he would love it. That's my drive to learn as much as possible. I am still in the process of reading Programming in Objective-C 2.0 by Stephen Kochan as others here have recommended. It's a fantastic book and really teaches the content of C in a well organized manner. Specifically for iPhone development, Apress Beginning iPhone Development by Dave Mark/Jeff LaMarche.

I think once you have an idea for something you want to create, you learn so much along the way.

I am a college student with two courses of C++ programming a course of Java under my belt. The C++ courses I took two years ago so I am starting anew to make sure I understand the concepts correctly.

Best of luck! I need it too. This topic has me thinking, are there any really good developer help forums out there (specifically iPhone/Objective-C related)? I am going to start searching now but if anyone has any recommendations that would be great.
 
IMO, save yourself some money and boot up a hackintosh for learning the basics. Once you've advanced to a level where you feel your skills merit a serious investment, then pick up the mac.
 
...are there any really good developer help forums out there (specifically iPhone/Objective-C related)? I am going to start searching now but if anyone has any recommendations that would be great.

The two forums here are decent. StackOverflow looks good, and Apple has several mailing lists which is probably where most developers ask questions and post responses. The Mac Developer Network does great podcasts which are available via iTunes. There are many many Mac developer bloggers, several of which you can find via Cocoa Blogs.
 
A Year to Learn C# .NET???

First I commend you on being brave enough to consider programming. It is hard and grueling but very rewarding. First, it shouldn't take years to learn C# .NET. I wrote C# code very quickly for some utilities we needed to count lines of code in source which would exclude comments, blank lines, etc. I also wrote a program which housed a group of utilities on tabs. I have said all this to say that I was able to get my first program running in a couple of weeks. Objective C is not difficult but does require an adjustment due to the syntax. I come from a background in C/C++ and found learning C# and the .NET framework to be relatively simple.
The best advice on learning a new language is to come up with a project or a piece of a project that you really want to create and focus your learning on what is required for the given project. Once you have the first one done, then you can add new features based on your interests.
 
I'm typing this on a 13 inch Macbook Pro that I've just bought today - thanks everyone for the encouragement. As a final post (at least on this particular thread), is OS 3.2 the correct SDK to download (as it is only for the iPad)? If not where do you go to access the previous versions of the SDK?
 
I'm typing this on a 13 inch Macbook Pro that I've just bought today - thanks everyone for the encouragement. As a final post (at least on this particular thread), is OS 3.2 the correct SDK to download (as it is only for the iPad)? If not where do you go to access the previous versions of the SDK?

The SDK for OS 3.2 is the latest you can get without being a paid developer.

I would also like to throw in my words of encouragement. I started out with a very, I mean very, basic knowledge of programming. It has taken a while due to life to learn what I have learned, though I wouldn't trade this experience for the world. Get in the regiment of setting aside a certain amount of time each day to learn. For instance, I would try to read a chapter per day in one of the books that I have. Sometimes I would need to read the chapter 1-2 more times to understand some of the concepts.

I truly believe anyone can learn to program; as others have eluded to some are "wired" for it so it comes naturally to them.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.