Advice for a beginner iOS developer?

Hi, HN! I recently got into iOS development, and I absolutely love it. Last year, I fiddled around with Python, web design, some Java, and even a very tiny amount of Android development. I knew for a while that I wanted to move towards iOS development, but I thought that because I didn't have a Mac, my dream was just a dream. Well, I came to a pretty huge turning point in my life last year, and that shift completely changed my view on what can be reality. I ended up trading my gaming laptop with a friend for a Macbook Pro. After a bit of testing a few methods of learning Objective-C (I tried Stanford's iOS Development class on iTunes U, but I was only able to get through the first assignment), I got Big Nerd Ranch's Objective-C Programming eBook and literally blew through it in a week. I loved it! Immediately afterwards, I bought BNR's iOS Programming eBook, and am now blasting through that. It's an extraordinarily awesome feeling to tackle and accomplish the challenges within the chapters. I also have a few ideas that I cannot wait to build after finishing the book.

Anyway, I apologize for my novel, but now I'll get to the point. Can any current iOS developers share some advice?

Here are the main things I am looking for:

- What are the best ways to get noticed? (My main goal is to work for a startup - I am 18, and a freshman in college as a CS major, but I am open to taking a hiatus if the opportunity came up. I also started meeting developers in my area, and blogging is beginning to be a natural activity for me.)

- What are your experiences with building/marketing your first (few) app(s)?

- What are the biggest things I should look out for as a beginning iOS developer? Any and all advice is highly appreciated!

Side note: I am not solely interested in iOS development but it is 99.9% of my focus right now. I hear, "Software engineering is an industry where you will adapt and constantly be learning," quite often, and that is exactly what I want to do!

  • "I am 18, and a freshman in college as a CS major, but I am open to taking a hiatus..."

    Finish school first. The degree (and the knowledge you'll gain while you pursue it and the free time you'll have to pursue other avenues of interest) is priceless. It's easy to want to rush through college and be a Gates or a Zuckerburg but realize that there are tons of people that dropped out of college and are worse off for it.

    Working at a start-up is a very risky venture and you're only going to drastically increase your long-term financial risk by not having a degree going into it. One may argue that the knowledge you'll gain at the start-up will be worth more than a degree but my counter is that you'll be closing doors to other (more-traditional) opportunities by not finishing (it is substantially harder to go back to school if you take a hiatus for a number of reasons beyond admissions).

    As far as "getting noticed" goes, scrub that mentality right now, prove yourself first. If you spend 10 hours a week the next 3.5 years writing apps (and polishing your abilities) and giving them away for free without ads you'll have proven yourself, getting noticed at that point is just pointing to an existing body of work. (If you don't know what app to make just clone every game you've ever liked but make sure it has an awesome UI).

    Mind you, these are just my two cents. In my life I've found that as long as I set a metric for "progress" and work to meet it I've been able to accomplish my goals. Best of luck.

  • I agree with RandallBrown, get something out there and show the world that you can finish an app. It'll be good experience too.

    As for getting noticed, if you get you get fast at developing, I'd recommend participating in a hackathon and developing a simple, but useful, app with a random team. It's a great networking opportunity, and I still get startups and recruiters trying to hire me from my last hackathon (over a year ago now) in New York (I wasn't event looking for work).

    My main experiences in building my first apps were:

    1. Novel UI is usually not very intuitive, using what Apple gives you will take you far. People know how to use the basic UI elements, trying to teach users new behavior is hard (learned this the hard way).

    2. Managing data will be messy if you don't use Core Data. I highly recommend going back to Stanford's iTunes U course and watching the one (two maybe?) on Core Data (and watch the Grand Central Dispatch one too if you're unfamiliar with it). Believe me, Core Data is awesome and once you learn to tame it you will learn to love it. Far better than rolling your own data storage/management.

    3. Getting people to use your app is hard - make something useful. People download plenty of apps, but only open a handful of them. Don't bank on being another Instagram (there are plenty of clones), but make something really useful. TurboScan is a good example of this. Their UI is rather horrid, but its really good at doing what its meant to do. Its an app that is truly useful, and has made it to my (and my closest friends and family's) first screen. I probably use it 1-3 times a day because its actually very useful.

    Good luck with your iOS adventures, love to see what you'd produce.

  • I recently graduated and got a position doing iOS development for a start-up. I'm nearing completion of my first app and two iOS concepts I've found to be of vital important are Core Data and GCD. Being able to persist the data you're working with and manage it in a multithreaded context are keys I've found to creating a good UX.

    For learning, I've browsed the Stanford slides, but I mainly read www.stackoverflow.com. Determining the issue at hand and then seeing how other developers have solved that issue, I've found, is the easiest way for me to learn.

  • Build some cool stuff and send out your resumes if you want a job. Smaller startups are going to be harder to get in with if you don't know someone, but not impossible.

    A really great way to differentiate yourself is to build and publish an app. It doesn't have to be popular or even that great. Just showing you can build something from start to finish is a big deal.

  • Keep meeting developers in your area. meetup.com and google and yahoo groups are good. Sign up for linkedin.com and add your contacts. Start shipping apps. The developers you meet will lead you to paying gigs.