You Want to Make an App? Here's my Advice
Sometimes I find this a little frightening because it feels like everyone is edging in on my territory. Most of the time, though, I remember to feel grateful that I'm in a field that is so popular. It really is amazing to me that people all over the place are getting interested in learning to program. It's pretty validating when so many people want to know what you know.
It's easy to see why, especially from an outsider's perspective, learning to code and making your own app would be so appealing. If you have a computer, an internet connection, a working brain and a little cash you have all the tools you need to get going. It's possible to learn everything you would need to know using free tutorials online. The software you'll use is freely available. No external permission is required: you don't need a license or a certification, and you don't need an agent or a publisher. And of course everyone you know is already talking about it. And if you're good (and lucky&em;or maybe just lucky), you can make something today that is used and enjoyed by millions tomorrow.
As a result, I get emails fairly frequently asking for help on how to get going. Sometimes it feels like everyone wants to make an app. That's a good thing because it means that more people are becoming active problem solvers. Anyway, here's my advice.
Prepare for the fact that it will be difficult
The apps you use every day are almost all created by teams of people, of various specialties, who have hundreds or thousands of hours of experience doing what they do. Furthermore, the apps themselves have invariably been through numerous iterations and improvements by the time they become successful enough that the general public finds them. What that means is that most of the apps on your phone are version 2.0's, or honestly more like version 10.0's. It's unrealistic to expect that your first effort will match theirs. And even though you don't need to be as good as the professionals to make something great, you will have some new skills to learn as you go.
Make it fun, and make it realistic
See the point above. If you're asking for advice about building an app that means you've already got an app idea, and that's important. It's not important because of the idea; even though it seems like the idea's the most important part, it's really not. Everyone's got ideas. It's the execution of them that matters. But having an idea (even a bad one) is great because it gives you focus. Now when you are teaching yourself to code you have a solid reason for doing so. When you learn about a new part of the iOS SDK you'll be able to see how you might want to use it in your app.
This is the part that makes it fun. You get to see your app coming together as you put more time into it. You'll need to find the part that makes it fun for you. If you're lucky enough that you enjoy coding, you'll have a leg up. But if you don't like coding, find the part about the building process that is fun for you. If it's not fun you won't be motivated enough to put the necessary time into it.
Making it more realistic means embracing the point above this one. Your first version is not going to be as awesome as your initial vision. And it won't have the same polish as professional work. But making that first version is the first step to making the version that's in your mind. I'm not saying to aim low and stop once you get there. I'm saying to start simple, and then make it better. But really: start simple.
There are two important statements that relate to building an app that are both wholly true and unfortunately totally at odds with one another. They are: No product that was never released was ever a success; and Every product can be improved. Because there's an endless amount of little fixes and tweaks you can make, it can be really hard to actually release something to the public. Once you release it you can no longer tell people about your great idea; your product has to be able to convince them on its own. That's a difficult thing to do, because see the first point above. But I'll reiterate the first statement: No product that was never released was ever a success. Get your product out there. Work like hell to get it over the finish line, even if it's missing 90% of the features you intended. Get it out. Then make it better. Be wary of new features that delay your launch. One of them might be the one that delays your project indefinitely. And a product that was never released...you get the idea.
Pick One, or Pick Zero
Because you're in a death match here, getting your project over the hump and out the door before too many new features weigh it down indefinitely, you have to be ruthless about deciding what you want. Always ask yourself why a particular feature is necessary. Look for ways to cut corners. Lean on established cut-and-copy solutions that you can use for now. Remember, the goal is to get this released. Then make it better.
So every time you have a new feature, choose the simplest option. Want your users to be able to log in using Google, Twitter or Facebook? Don't implement them all. Pick one. Add in the others later. Or, better yet, ask if you really need to have a login system at all. Can you make a working version of your app, just to get v1 out the door, without needing to log in users? Maybe. It's always faster to do nothing than something, if you can. There are vanishingly few apps that were successes because of their login systems. Focus on the features that are most unique to your app. For the rest, Pick one. Or zero.
You Can Do It
I've presented a somewhat bleak picture above, and that's because the truth is that most app ideas wither under the weight of lack of time and experience. But the good news is that some of them do flourish. And even though it is difficult, your first assumption was correct: You just need tenacity and some intelligence to make it. The rest is free or cheap. And everyone who has ever made a successful app started out knowing less than you do.