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

SirCrispy

macrumors newbie
Original poster
Feb 17, 2014
5
0
Programming and computers have always been my biggest interest in life but I never dove into it because I always thought you needed to be a genius to program. I hate what I do now and I'm putting every effort forth into learning programming and making it a career. I have knowledge in HTML/CSS but I want to focus on app development (and maybe app game development) and been learning Objective-C. But the reason for this post is because before I even dive into a language, I want to know what I need to know to become a successful programmer. I could learn objective c all day and code an app, but what happens when objective c becomes obsolete? I don't have 40 grand a year to go to college, but I'm willing to invest money I make now into learning what I need to know weather it's online courses, certifications, or even lessons from professionals willing to teach. I just bought a MacBook Pro and http://www.amazon.com/gp/aw/d/0672337002, and going on www.programmingbasics.org to learn fundamentals. Any pointers in the right direction or links to courses/content that would teach me what I need to know would be extremely appreciated.

Pretty much, my plan is to get into an entry level programming position ASAP (I'd rather make 10$ an hour doing entry level programming stuff than the 14$ an hour I make now doing stuff I hate) because I'd be learning everyday I go to work. Even if I have to focus on java right now to land that position soon, and then focus in objective c after.

Thanks a lot guys and sorry for the long post, trying to get my life on track and hoping to learn here!
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,563
6,061
Are you familiar with the movie Ratatouille? It's all around a wonderful movie, but the reason I bring it up is for the quote from the chef, "Anyone can cook." Others mock him for his firm belief in it, but it's actually a really important message that can be generalized to "Anyone can [insert your action of choice here]". Anyone can program. It's important to note that while anyone can, it neither means that everyone will or that everyone will find it easy, merely that it is possible for anyone to do it should they put sufficient effort into it.

The most important 1 minute of Ratatouille, if you aren't familiar with it or need a refresher.

Anyways, enough of telling you you can do it. You need to pick and describe a specific project you want to work on and we can point you in the right direction to get started.

I could learn objective c all day and code an app, but what happens when objective c becomes obsolete?

Langages are trivial. The first one will take a few months, the second a few months less, the third a few weeks, the fourth a week, and the fifth and beyond in a few days. If obj-c becomes obsolete someday, and I doubt that day will come within the next several years, then you'll have your first language down already for when you move onto the next. Except, chances are, you'll naturally learn other languages over time.

Programming languages are not natural languages - they aren't full of bizarre rules that came to be over centuries of people misusing or ad-hoc changing them. They've been carefully created to be as easy to learn, read, and use as possible (except Esoteric Languages, which were carefully created to be as difficult and useless to use - nobody actually uses them, they just exist to be the punch lines of programming jokes.) Furthermore, the people creating new languages tend to already know other languages and borrow from those other languages while creating their new ones.

Obj-C, D, C#, and C++ (and many others) borrow from C, which borrows from B. Java and JavaScript (which, despite the similar names, have absolutely nothing to do with each other) borrow from C++. Python borrows from Dylan which borrows from Lisp which borrows from Scheme.

Actually, you know what, rather than me trying to list all the different ways different languages are related, here's a graph someone else already made to explain it:

http://griffsgraphs.com/2012/07/01/programming-languages-influences/

The point here is that once you know a few languages, you understand what the designers of other languages were thinking when they made their new language, what improvements they were trying to make, and so you can anticipate all the differences you find.

If you're looking to make native iOS apps, you must learn Obj-C. If you'd like to make games that run on any platform, iOS, Android, Wii U, Xbox 360, PS3, OS X, and so on, I suggest you learn how to use Unity* instead. If you want to write apps with GUIs that run on OS X and Windows, Java* is probably the way to go. If you want to learn how to program just because, Python is probably the best language on the face of the planet. If you want to have an app that runs on a website, JavaScript* may be the best language. If you want to make a native Android app, you need to use Java*.

* Just because it's a common beginner mistake to assume they're the same or related in some way, I want to emphasis the face that Java and JavaScript have nothing to do with each other. If it helps, you can refer to JavaScript as ECMA Script which is a more technical name for it which I think most programmers know but avoid using because it's awkward to say as opposed to JavaScript. Further confusing the matter, Unity uses a language they call JavaScript - this language is definitely not JavaScript but a new language they created and for some reason chose to use the name JavaScript for. I and many others refrain from calling that language JavaScript but instead call it UnityScript - I suggest you do the same.
 

SirCrispy

macrumors newbie
Original poster
Feb 17, 2014
5
0
Are you familiar with the movie Ratatouille? It's all around a wonderful movie, but the reason I bring it up is for the quote from the chef, "Anyone can cook." Others mock him for his firm belief in it, but it's actually a really important message that can be generalized to "Anyone can [insert your action of choice here]". Anyone can program. It's important to note that while anyone can, it neither means that everyone will or that everyone will find it easy, merely that it is possible for anyone to do it should they put sufficient effort into it.

The most important 1 minute of Ratatouille, if you aren't familiar with it or need a refresher.

Anyways, enough of telling you you can do it. You need to pick and describe a specific project you want to work on and we can point you in the right direction to get started.



Langages are trivial. The first one will take a few months, the second a few months less, the third a few weeks, the fourth a week, and the fifth and beyond in a few days. If obj-c becomes obsolete someday, and I doubt that day will come within the next several years, then you'll have your first language down already for when you move onto the next. Except, chances are, you'll naturally learn other languages over time.

Programming languages are not natural languages - they aren't full of bizarre rules that came to be over centuries of people misusing or ad-hoc changing them. They've been carefully created to be as easy to learn, read, and use as possible (except Esoteric Languages, which were carefully created to be as difficult and useless to use - nobody actually uses them, they just exist to be the punch lines of programming jokes.) Furthermore, the people creating new languages tend to already know other languages and borrow from those other languages while creating their new ones.

Obj-C, D, C#, and C++ (and many others) borrow from C, which borrows from B. Java and JavaScript (which, despite the similar names, have absolutely nothing to do with each other) borrow from C++. Python borrows from Dylan which borrows from Lisp which borrows from Scheme.

Actually, you know what, rather than me trying to list all the different ways different languages are related, here's a graph someone else already made to explain it:

http://griffsgraphs.com/2012/07/01/programming-languages-influences/

The point here is that once you know a few languages, you understand what the designers of other languages were thinking when they made their new language, what improvements they were trying to make, and so you can anticipate all the differences you find.

If you're looking to make native iOS apps, you must learn Obj-C. If you'd like to make games that run on any platform, iOS, Android, Wii U, Xbox 360, PS3, OS X, and so on, I suggest you learn how to use Unity* instead. If you want to write apps with GUIs that run on OS X and Windows, Java* is probably the way to go. If you want to learn how to program just because, Python is probably the best language on the face of the planet. If you want to have an app that runs on a website, JavaScript* may be the best language. If you want to make a native Android app, you need to use Java*.

* Just because it's a common beginner mistake to assume they're the same or related in some way, I want to emphasis the face that Java and JavaScript have nothing to do with each other. If it helps, you can refer to JavaScript as ECMA Script which is a more technical name for it which I think most programmers know but avoid using because it's awkward to say as opposed to JavaScript. Further confusing the matter, Unity uses a language they call JavaScript - this language is definitely not JavaScript but a new language they created and for some reason chose to use the name JavaScript for. I and many others refrain from calling that language JavaScript but instead call it UnityScript - I suggest you do the same.

Wow... This is the most useful info anyone has given me. Thank you so much for taking your time to write this. I did aee ratatouille and loved it, and I am familiar with the fact that Java and JavaScript are completely different.

So pretty much I should just get to learning languages, or learn the language I need to start what I want to do (obj-c) and move on from there? Or are there fundamentals I should know before even learning languages? And what would I need to know to land an entry level programming position somewhere?
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,563
6,061
Wow... This is the most useful info anyone has given me. Thank you so much for taking your time to write this. I did aee ratatouille and loved it, and I am familiar with the fact that Java and JavaScript are completely different.

So pretty much I should just get to learning languages, or learn the language I need to start what I want to do (obj-c) and move on from there? Or are there fundamentals I should know before even learning languages? And what would I need to know to land an entry level programming position somewhere?

There were a few points of fear I wanted to dispel, about programming being something you couldn't do or about obj-c being a waste of time.

I believe at the top of the list of the topics on these iOS programming forums there's a list of resources you can use to begin learning to program for iOS.
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
The popularity of languages come and go usually based on what they are able to do or what platform they work on as well as how flexible they are.

COBOL is near dead as far as growth goes, ObjC is growing because of both the platform (mobile) growth and what it is able to do.

It's a general language that supports C, C++, ObjC all in one. Meaning the compiler used in XCode supports all of these.

I wouldn't worry about ObjC dying off any time soon.

I'd be more concerned with what it takes to get a job using ObjC. Most growth in ObjC is from iOS so as far as getting a job, most opening are ObjC/iOS.

That means you need to go beyond ObjC and have a working knowledge of iOS in order to be where the highest demand is.

Most programming jobs are based on years of usage and that is usually based on how old the language is.

2 years ago, you could get an iOS job with 1 year programming. Now they usually want 2 years. Soon they'll ask for 3 years...

If you look for C/C++ jobs, you might see 7 years required.

Don't be put off by this moving target because they usually want to see your work. Coming into ObjC/iOS when it's been around for several years doesn't mean you are out of the drawing, you just have to be good and prove it (usually with an app in the appstore).

If demand slows (not likely) or there's a flood of good programmers on the market, it'll be harder to find work. It's a standard supply/demand curve.

It's really an issue of if you are good or not, this is usually controlled by how much effort you put in.

If you like programming, you'll probably do well, if you just want a job, it'll be much more of an uphill climb.
 

SirCrispy

macrumors newbie
Original poster
Feb 17, 2014
5
0
Thanks for the reply and information. Programming is just fun to me, I love coding and then seeing the result. I work 40-50 hours a week and when I'm not at work I spend most of my time learning programming for the past month or so. I'm taking a course on ios7 app development on udemy, and reading a beginner programming book.
 

iizmoo

macrumors 6502
Jan 8, 2014
260
34
Most of prigramming is like trying to build a lego castle, you start off with a number of identical pieces of a few different sizes, and then try to build a castle with complete turrets and a drawbridge. Real life just mean there's someone with a whip and you're building a castle based on what they like.

The fun and interesting part is trying to fit the pieces together. If you're someone who enjoy that type of work, you'll do well. People who become engineers are mostly born to do it, college just sharpen the edges, but if you're naturally inquisitive with an innate ability to solve problems, you'll find programming fun.

Unless you want to work for the R&D unit at some place like Google, or SpaceX, the other 99% of us in industry does lego construction type of work. I use that analogy because regardless of how big a lego structure you're trying to create, all the pieces start out the same, and most of the problems is in trying to fit really small bits together. It's very managable, some hairpulling and lots of Mt.Dew included though...

Go to community college and state university if you don't have the mean. That's what I did, and I only ended up with 15K in student loan at the end. The really expensive schools give you a degree more likely to land you the first job, and usually a better professional network, but they don't really train people to become better engineers, nor necessarily help your career all that much once you're mid career in.

While college is not necessary to become a programmer, it forces you to study a lot of subjects you're unlikely to touch upon in real life, and those topics will make you a more rounded person and help facilitate looking at problems from different perspective that otherwise you would not have. With the economy the way it has been, I usually recommend most people trying to get into industry as they're finishing up college instead of waiting until they have a degree.
 

SirCrispy

macrumors newbie
Original poster
Feb 17, 2014
5
0
Most of prigramming is like trying to build a lego castle, you start off with a number of identical pieces of a few different sizes, and then try to build a castle with complete turrets and a drawbridge. Real life just mean there's someone with a whip and you're building a castle based on what they like.

The fun and interesting part is trying to fit the pieces together. If you're someone who enjoy that type of work, you'll do well. People who become engineers are mostly born to do it, college just sharpen the edges, but if you're naturally inquisitive with an innate ability to solve problems, you'll find programming fun.

Unless you want to work for the R&D unit at some place like Google, or SpaceX, the other 99% of us in industry does lego construction type of work. I use that analogy because regardless of how big a lego structure you're trying to create, all the pieces start out the same, and most of the problems is in trying to fit really small bits together. It's very managable, some hairpulling and lots of Mt.Dew included though...

Go to community college and state university if you don't have the mean. That's what I did, and I only ended up with 15K in student loan at the end. The really expensive schools give you a degree more likely to land you the first job, and usually a better professional network, but they don't really train people to become better engineers, nor necessarily help your career all that much once you're mid career in.

While college is not necessary to become a programmer, it forces you to study a lot of subjects you're unlikely to touch upon in real life, and those topics will make you a more rounded person and help facilitate looking at problems from different perspective that otherwise you would not have. With the economy the way it has been, I usually recommend most people trying to get into industry as they're finishing up college instead of waiting until they have a degree.

Thanks for the reply and putting things into those terms. I was looking at a Programming Certification course at my states Community College and its aout 8 grand total with books and everything, it's a 12month (or 24 month if part time) program http://www.ccri.edu/catalog/pdfs/comp-ps/cpct.pdf

Thats not much to be in debt after, especially for the field and money involved in it. Of course im getting into it for the money (if there was no work im sure we'd all love to relax with our families and sleep all day) but out of all the job fields out there I LOVE programming and software development. Ive always been interested in it and learned HTML/CSS a year ago but I wish I continued, I probably would have been working in the field already. Now im back at stage 1 learning objective-c.
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
The value of the degree/cert is really up in the air. When I got mine, the classes offered were outdated for the times.

This is more the case now than ever because tech moves rapidly and it's costly for a school to invest in something with such a short life expectancy.

The value is also determined by demand. I was in the middle of tech back in the DotCom bubble. We had people come in a programmers that couldn't debug a simple loop. One high level programmer down our servers because he didn't check if the program was already connected.

A large company went down because a certified consultant wiped out all of our data because he didn't check the SQL script and was in a hurry.

They are now out of business because of a few people that had papers saying they knew what they were doing, yet they didn't have a clue.

The mobile bubble is just like the DotCom bubble or the housing/banking bubble...
 

SirCrispy

macrumors newbie
Original poster
Feb 17, 2014
5
0
So pretty much in the programming world it comes down to actual knowledge and not a cert/degree?

Say someone who doesn't have a degree/cert but very knowledgable in programming has a better shot than someone with a degree/cert but not as knowledgable?
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,563
6,061
So pretty much in the programming world it comes down to actual knowledge and not a cert/degree?

It varies from place to place. I'm wrapping up my last semester at school - I'm getting the final 17 credits (of 137) to graduate with my BS and I'm already more than half way through the semester. I applied for a full time position at a company you've heard of (regrettably, a competitor of Apple's) and they made me an offer for once I graduate. I told them I'd also be interested in working there part time while I wrap up my degree in the next 8 weeks, so they sent me another offer.

For the full time position beginning in late April, they'll offer me $40/hour* with profit sharing and benefits.

For the part time position beginning now and running until late April, they'll offer me $24/hour with nothing else.

*It's actually a per year amount - I just converted it to hourly so that I could easily compare it with the part time offer.

So they seems to think my value is going to nearly double between now and the end of April, just because I'll have a complete degree in hand rather than 90+% of a degree in hand (plus those 8 more weeks of employment experience... I already have 60 weeks of programming employment experience, plus several years of personal programming experience, so I'm not sure how much those extra few weeks are factoring in.)
 

1458279

Suspended
May 1, 2010
1,601
1,521
California
So pretty much in the programming world it comes down to actual knowledge and not a cert/degree?

Say someone who doesn't have a degree/cert but very knowledgable in programming has a better shot than someone with a degree/cert but not as knowledgable?

It's really hit and miss. It depends on the market, if there is very high demand like in the DotCom bubble era or the mobile bubble, then many tend to overlook the degree and years of programming and just look at if you can get the job done.

When things level out (hard to know when that will happen) and supply catches up to demand, they go back to regular requirements.

You can look at dice.com and see what they are looking for. Look at the C jobs, they won't talk to you without YEARS of professional programming. Look at iOS 2 years ago and you would have seen 1 year or an app in the store.

Last I checked, iOS was about 2 years AND an app in the store. The "app in the store" would need to be MUCH better than what they wanted 2 years ago. Don't think a "sample code" app from a book will get you a job at this point.

If it takes you about 2 years to complete the education, expect the requirements to go up unless there is a big change in the supply/demand.

I've seen in the past where a BS or MS was asked for, I don't know if that's still standard, but it sure doesn't hurt.

When I got my BS in MIS, about 2/3 of the classes had nothing to do with programming. MIS isn't a pure programming degree, it's a business degree focused on project management more than coding skills. You still code, but you have to study systems analysis and design, and other skills in addition to coding.

I actually think it's a better degree, coding has changed over the years, we don't learn Quick sort/Bubble sort any more, it's built in now.

In order to advance, you'll want skills more in line with systems design and less about zeros and ones.

This is probably different if you are designing games, you can have a hellva career just making game and knowing all the hard core coding that requires.

One point to take away from this is that it's a moving target.

If you make an app, any app, and put it in the store, you can say 2 years from now that you've had apps in the store for 2 years. Even if it's not the most complex app, it's still looks good for you.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.