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

techguy15

Suspended
Original poster
May 24, 2015
101
99
Ok so I'm hoping you seasoned developers can offer advice. I've never done any type of coding or computer language but I would like to learn. I'd like to learn how to develop for iOS. My questions are:
1) what's the minimum Mac (and iPhone) I can use for doing Swift, C, etc (whatever you recommend I learn)?
2) is learning how to develop apps very difficult?
3) is it true that developing for iOS is easier than Android?
4) about how long before I could get into an entry level job as an iOS developer?

I appreciate any of my questions answered plus any additional info you can provide to help me. Thank you all
 
Note: I am in 2nd year of college computer science degree. I am not what you would call seasoned at all, about 3 years total. I am a noob. But here's my two cents.

1. A mac that can run the latest OSX will be fine. An i5 and 8 gigs of ram will keep you happy for a long time. Like this or this. (I posted those to give you a rough estimate of prices, doesn't have to be those in particular.) You don't necessarily need an iphone but if you want one, I would say the 5s is a good phone because it has the 64 bit processor meaning that Apple will continue to support it with iOS updates for a while longer. If you already own any iphone that can run the latest iOS you can just use it. Or xcode has the ios simulator built in.

2. Everything is difficult until you put the time and energy into learning. I am still pretty noob-ish after a total of almost 3 yrs studying alone and in a classroom setting. Some people will get it faster than others though. It's best to just throw yourself out there and see how you do.

3. depends what you mean by easier. Is Java harder than Objective C/swift? Pros and cons on both sides. But it really doesn't matter, you will need to know both eventually.

4. You could freelance at any time. Most companies I have looked at want someone with a degree and ~5 yrs experience of some sort, but that all depends of course. There are plenty of people who did what you are doing and made some of the most amazing software out there. School isn't required to succeed.

Where to learn: Khan academy can show you the basics of HTML and javascript so that you can get a taste for what it's about. I haven't been on there in a while so I don't remember everything they offer, but if you see something you like go for it. Best of all it is free. Then you can check places out like codeacademy and udemy. And make sure you aren't just sticking to objective c and swift. Study other languages too.
My last suggestion, don't go copying from youtube tutorials until you understand the basics. it's counterproductive
 
I'm a noob as well, but more like techguy15 than shftoptk, I think. I am actually a physician with a lot of education, and even a lot of math and science education (B.S. and M.S. degrees are in aerospace and biomedical engineering, respectively), but I have NO degrees in computer science. Furthermore, the only COURSES I've ever had in computer science or computer programming were one semester my senior year of high school (Fall 1984, learning BASIC and PASCAL on IBM PCs running DOS) and one semester my freshman year of college (Fall 1985, the required "Engineering 103" course learning FORTRAN-77 on IBM PCs running DOS as well). So, I've only learned the basics of 3 relatively "dead" computer languages. But, like the OP, I want to learn how to make iOS apps, and maybe even some apps for the Mac. So, I've done a lot of thinking and planning about this, but not very much DOING. I've enrolled in a few UDEMY courses, I've done about 50% of the Coursera course "Programming for Everyone" which teaches the basics of Python, and I'm currently doing the "Learn Python" track at teamtreehouse.com, which I think is MUCH better and easier to follow.

Why learn Python, you ask? Well, lots of people (many from here at MacRumors) suggested that people like me learn programming fundamentals using either Python or Javascript before trying to tackle Swift, Objective-C and Xcode. And I must admit, I do finally feel like I'm getting a handle on this whole "object-oriented programming" thing, which is a very new and strange concept to the uninitiated. When they start talking about classes, objects, instances, methods, inheritance, etc., it's very easy to get lost in the sea of jargon and not understand what the heck is going on. It's almost like the terminology was created to intimidate people! In reality, the whole idea of object-oriented programming is to allow people to make computer models of real life THINGS, and then allow us to write programs which simulate, manipulate, and model those things in ways that make much MORE sense than just using algebraic variables to represent everything. I feel like I'm finally starting to get it, and I think that using Python has made it easier for me than it would have been if I had jumped right into Swift and Xcode.

So, that being said, just this past week, I started watching videos from the codewithchris.com website, which seem to be GREAT at explaining things at the newbie level (since he was once a relative newbie himself). Also, I'm of the belief that the brain learns BETTER when you try to learn similar things from two different perspectives simultaneously. I think of it like taking Physics and Calculus at the same time...they're two different classes and they teach two different subjects, but using your brain to understand both at the same time will actually help enhance your ability to understand each one independently.

So, that's where I am right now. My goal is to get through Team Treehouse's tracks "Learn Python" AND "iOS Development with Swift 2.0", as well as the CodeWithChris video series before the end of the summer (it's hard when you work full time doing something totally unrelated). But, I think if I can hammer through all of this material, do the challenges and practice the programming independently, I should be able to get SOMETHING published in the App Store before the end of 2016. I'm trying to learn this so I can pass information on to my soon-to-be 9-year-old daughter, so that she too can start making apps. I told her it would be a much more lucrative summer job when she's a teenager than babysitting or scooping ice cream, not to mention how it might help set her up for college admissions and a future career in STEM.
 
  • Like
Reactions: techguy15
I deeply disagree with the idea of learning python or Javascript first in order to prepare yourself for iOS development. If you want to learn Swift, then learn Swift. It's not a difficult language. My first language was Objective-C, which everyone says is a difficult language, but I learned it just fine just like a lot of people. Swift is even easier. It really doesn't matter what language you start out with, just don't waste time.

To answer your questions:

1. Use what you have, or can easily get. If you don't have a mac, you can likely get another hard drive or something and turn your PC into a dual boot hackintosh, it's pretty easy to do these days. If you are going to buy a mac, make sure it either has user replaceable RAM or get 16GB of RAM. But whatever you do, do NOT get stuck with 8GB. 8GB is fine for learning, but for actual commercial development it is very painful. Just don't buy a new machine with 8GB.

2. No, it's not nearly as difficult as you think. It's actually pretty easy. What's difficult is staying focused, doing it week after week. That's the important thing: stick with it. Set aside an hour every day and focus. Take lots and lots of notes.

3. Android development used to be about as easy as iOS, back when we had Objective-C. But Swift is way easier. So yes, these days, IOS is somewhat easier to learn. But the truth is that if you can learn one programming language, you can learn any of them.

4. It depends how quickly you learn. Spend at least a year learning. Do not bother with iOS development if your main interest is money. Developers who don't care about programming are extremely easy to spot and are never ever as good as developers who love programming.

My main suggestion for learning would be www.bitfountain.io, their courses are excellent. I learned Objective-C from one of their courses and I have never looked back. Take plenty of notes. For every minute of watching the course video, I spent at least 5 minutes taking very detailed notes. For me, that was the best way to learn. Also, spend a lot of time just playing around with the code you've just learned, try combining things you've learned, try new things, etc.
 
Just a heads up on what happens when you dig into the job market. When a certain tech is new, they'll take people with <1 year. After that tech becomes 5 years old, they'll want 3 or 4 years. I've seen some C programming jobs that want 10 years.

Go look at the job listings and you'll see how many years they are asking for now, you can add to that as time goes by.

This is also controlled by supply/demand. Right now LA has 35,000 listings for iOS, SF/Bay Area has about 2,000 listings.

There's also the issue of where you go for the jobs, a smaller city might not be able to get 4 years, so they'll take 2 years.

In programming, most want people that know what they are doing because a programmer can really screw up a project. Others will take a more entry level person.

Another issue is the area you get into, games vs business software. In Games, it's fast paced and there's a lot to know about game dev. In business software, you have a whole different skill set.

On the up side, Swift is new and will allow people to get in with fewer years programming.

The market is red hot and doesn't look like it's going to slow down any time soon.

My advice is to pick an area to specialize in fairly soon, don't waste too much money on the test device, you really don't need one for quite a while. Start with Swift and keep going with as many tutorials as you can. Go to StackOverflow for answers and don't give up when you don't understand. The early part can be really hard to get thru.

As far as time goes, the more free time you keep at it, the sooner you'll get ahead, but I'd look at about a year or more.
 
  • Like
Reactions: techguy15
I really appreciate the replies guys! Thank you! I've been browsing for a used mac (I don't have enough for a new one) and I'll take into consideration the specs you mentioned. I may just dive into a language and go from there like you said.
Secondly, yes I think about money but I also like the idea of just learning what makes games work. For example, when I play Clash of Clans or a similar game my thinking is "I wonder how this was created, what went into it and why it works etc". I like the idea of learning WHY and HOW certain programming works. I suppose money would be secondary.
Last, thanks again for all your guys input. I'm an Android guy I admit...but you Apple folks have been more responsive on this site vs the Android one I frequent. You all may turn me into an Apple person lol
 
@AxoNeuron's advice is pretty solid.

To give you a bit of background on the route I took. I have no formal education in computer science (although I wish I had taken that route). I initially picked up some not so good books on development, and it took me a while to discover that they weren't so good, because when you know nothing it's very difficult to work out whether it's you or the book that's not good enough. Eventually I managed to get hold of a couple of really good books, and it took me 8 months working pretty much every evening in my spare time to get my first app on the store, and a little over 2 years to get a job as a developer.

Most stuff has been covered already here, so I won't repeat, but there's a couple of things I can add:

Java is a very easy language, and I actually think that it's maybe slightly easier to pick up than Objective C or Swift, so if it's Android development that you're really interested in, then don't let that put you off.

The only thing to consider about Android development is that I've found there to be generally more iOS work than Android. This is mainly because iOS apps are still more profitable than Android, so it's the highest priority platform for most clients I've worked for. I've worked on many apps that have an iOS and Android version, and the iOS version will generally have about double the size user base than Android.

One of the other misconceptions that I had and other people have when they're starting out is that programming languages are all completely different beasts. They all share many of the same concepts, so don't worry that you will have learnt the 'wrong' one. It doesn't take Objective C developers a year to be able to work in Swift, more like a few days to get started, so you can easily pick up another later.

As an example, it took me nearly a year to get feel really comfortable with Objective C, and one of the applications I wrote was a chess app. A little way down the line I decided to port it to Android, and it took me 2 weeks of evenings to submit the port, including learning the basics of learning Java and the Android sdk enough to get the job done.

My advice would be to get a good book or online resource on the language that you want to learn (so java not android, or swift not iOS), and give it a couple of months to become comfortable with it before you get in to all of the UI tools, because that stuff it cool, but it will only distract you. I'd go for a paid resource too, like a book, or online course, and then flesh it out with free online resources, because they will offer a full structured learning route.
 
  • Like
Reactions: techguy15
1) Any computer can be used for learning programming. A ton of professional programmers learned to code on an Apple II and similar PCs. You can learn basic programming on an iPhone or iPad. There are several dozen easy learn-to-code apps in the iOS App Store, as well as a Python interpreter.

But if you want to develop iOS apps, you will need a Mac that can run the latest OX S and Xcode without bogging down (any Macs made in the last 3 or 4 years with an SSD will do, IMHO).

2) The skill necessary to develop an app varies a huge amount. Their are ways to develop simple apps that require almost zero programming skill, all the way to full-featured ones that require teams of graduate student level skills or experience. IMO, Java is no easier than Swift.

3) IMO, it's easier to develop a polished app on iOS these days due to less device fragmentation. A simple or template app that only runs well on a few device models is probably equally easy on either OS platform.

4) The Stanford iOS course has almost 1 year worth of CS pre-requisites. That level of knowledge (plus apps of your own actually available in the App store plus experience or courses in modern software practices) is a very common minimum level of skill/experience to get past an interview at many companies. But it varies.
 
Last edited:
  • Like
Reactions: techguy15
I deeply disagree with the idea of learning python or Javascript first in order to prepare yourself for iOS development. If you want to learn Swift, then learn Swift. It's not a difficult language. My first language was Objective-C, which everyone says is a difficult language, but I learned it just fine just like a lot of people. Swift is even easier. It really doesn't matter what language you start out with, just don't waste time.

I wish someone told me that BEFORE I started messing around with Python and Javascript!!! But I will say, after my experience, I totally agree with AxoNeuron here. I am nowhere NEAR the programmer that 99% of people in this forum are, but Swift seems to be as easy (if not easier) to understand than the other languages, much more capable (at least in terms of programming for Apple devices), and the Xcode Playground functionality is the perfect environment for playing around with your code and experimenting a little, without the hassle of saving, compiling, debugging, running, etc... It's really a great learning environment! I think someone should consider rewriting some of the books/tutorials/videos/courses out there for Python, Javascript, etc. for Swift, and see how solving the same problems would work using Xcode and Swift to do the same tasks. I don't really understand why people told me to learn with one of those other languages first. I have to believe they didn't really understand Swift/Xcode, or maybe there's something I'm missing. But, definitely listen to AxoNeuron's advice on this: If you want to learn to write apps for iOS, then go straight to Swift. I wasted a fair amount of time learning Python which I don't think I'll use again.
 
It's not a difficult language.

Tell that to all the smart kids who flunk out or drop out of university CS classes. And many who stay and somehow pass the courses still can't code their way out of a paper bag by themselves. Most programmers who have never taught large beginning programming classes to wide audiences have no clue how difficult it is to learn any programming.

All programming languages are difficult to learn. The programming languages designed for teaching young kids are a bit easier.
 
Tell that to all the smart kids who flunk out or drop out of university CS classes. And many who stay and somehow pass the courses still can't code their way out of a paper bag by themselves. Most programmers who have never taught large beginning programming classes to wide audiences have no clue how difficult it is to learn any programming.

All programming languages are difficult to learn. The programming languages designed for teaching young kids are a bit easier.
I remember back in college, so many students had no clue what they were doing. My major was business, MIS, it didn't include as much programming as it did business and there were so many students that had no clue how to program.

I've seen it in jobs over the years, programmers that really don't know what they are doing. I've seen them crash servers, put out code that doesn't work, it compiles but doesn't account for something and doesn't get the job done.

It's worse when more and more people come in thinking "STEM jobs are great, I want a STEM job"
 
  • Like
Reactions: AdonisSMU
A better question rather than how long until I can get a job as a developer is how long until I realize I don't want to be a developer?
 
A better question rather than how long until I can get a job as a developer is how long until I realize I don't want to be a developer?
That's the question few ask.

Many don't realize that programming is a life-long learning process. What it takes to get into the "exercise wheel" never stops. Look at what it took to become an app developer just 4 years ago. Look at the requirement now. Think about the requirements in 4 more years...
It never stops.
 
That's the question few ask.

Many don't realize that programming is a life-long learning process. What it takes to get into the "exercise wheel" never stops. Look at what it took to become an app developer just 4 years ago. Look at the requirement now. Think about the requirements in 4 more years...
It never stops.
That's true. Things are always changing. Sometimes for the better even!

But really learning that first programming language is the hardest part. It gets much easier the further along you go. I've personally gotten to the point where I can get a basic proficiency of a language after a day or two. For the most part they all share the same basic tenets, for loops, primitives, etc. Becoming an expert takes much longer. But if you enjoy puzzles, making systems work as efficiently as they possibly can, and dreaming up new ideas entirely, then programming is the job for you. If you enjoy it enough it can not only be your job but your hobby as well.

After learning iOS development I've moved in to Android development...but I've also moved in to lower level programming in C/C++ for embedded devices and arduinos and such. I recently built a quad copter drone, used a lot of the same programming techniques to make the flight stability algorithms work well and fast. That's the best thing about programming, you can really do anything you want with it.
 
  • Like
Reactions: AdonisSMU
That's true. Things are always changing. Sometimes for the better even!

But really learning that first programming language is the hardest part. It gets much easier the further along you go. I've personally gotten to the point where I can get a basic proficiency of a language after a day or two. For the most part they all share the same basic tenets, for loops, primitives, etc. Becoming an expert takes much longer. But if you enjoy puzzles, making systems work as efficiently as they possibly can, and dreaming up new ideas entirely, then programming is the job for you. If you enjoy it enough it can not only be your job but your hobby as well.

After learning iOS development I've moved in to Android development...but I've also moved in to lower level programming in C/C++ for embedded devices and arduinos and such. I recently built a quad copter drone, used a lot of the same programming techniques to make the flight stability algorithms work well and fast. That's the best thing about programming, you can really do anything you want with it.
That brings up a very good point. Maybe Swift was designed to be more of a "first language".

With playgrounds and simple syntax, a new programmer can get more response from the learning process.

Back in the old days, it was Basic, Pascal, etc.. Trying to understand pointers and other advanced things can discourage newer programmers.

Someone starting from ground zero, used to have a very steep climb, so many things to get wrong, many probably just gave up.
 
I deeply disagree with the idea of learning python or Javascript first in order to prepare yourself for iOS development. If you want to learn Swift, then learn Swift. It's not a difficult language. My first language was Objective-C, which everyone says is a difficult language, but I learned it just fine just like a lot of people. Swift is even easier. It really doesn't matter what language you start out with, just don't waste time.

To answer your questions:

1. Use what you have, or can easily get. If you don't have a mac, you can likely get another hard drive or something and turn your PC into a dual boot hackintosh, it's pretty easy to do these days. If you are going to buy a mac, make sure it either has user replaceable RAM or get 16GB of RAM. But whatever you do, do NOT get stuck with 8GB. 8GB is fine for learning, but for actual commercial development it is very painful. Just don't buy a new machine with 8GB.

2. No, it's not nearly as difficult as you think. It's actually pretty easy. What's difficult is staying focused, doing it week after week. That's the important thing: stick with it. Set aside an hour every day and focus. Take lots and lots of notes.

3. Android development used to be about as easy as iOS, back when we had Objective-C. But Swift is way easier. So yes, these days, IOS is somewhat easier to learn. But the truth is that if you can learn one programming language, you can learn any of them.

4. It depends how quickly you learn. Spend at least a year learning. Do not bother with iOS development if your main interest is money. Developers who don't care about programming are extremely easy to spot and are never ever as good as developers who love programming.

My main suggestion for learning would be www.bitfountain.io, their courses are excellent. I learned Objective-C from one of their courses and I have never looked back. Take plenty of notes. For every minute of watching the course video, I spent at least 5 minutes taking very detailed notes. For me, that was the best way to learn. Also, spend a lot of time just playing around with the code you've just learned, try combining things you've learned, try new things, etc.
Based on your recommendation I am taking this course as well as an in person course here in NYC I signed up for awhile back to supplement my reading and video watching. My #1 goal for this year is to learn SWIFT and develop an iOS App that hits the iPhone/iPad App Stores. I'm currently a front end dev right now so mostly use javascript, css, html, angular all day long during my day job....and play with SWIFT and ReactJS on my off time.
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.