I Have an Idea for a Killer App, but Where Do I Start?

iphone_blogheader
Android Home Screen with one spot missing

My app would be perfect right there!

You know the signs: you can’t stop thinking about it as you fall asleep at night. Your mind wanders back to it when you know you should be concentrating on your work that currently pays the bills. You’re even a little distracted watching Breaking Bad on Netflix. You can’t help but feel like there’s a gaping hole in the home screen of your smartphone. You have an idea for a killer app, and you can’t put it to rest until you build it. But you don’t know the first thing about programming and have no idea how to get started.

We at Treehouse are here to help! If you want help fleshing out your idea to actually build a business around it, then check out our Business content, especially the stage From Idea to Execution in the How to Build Your Company project. But if you want to dive right in to actually building something, then read on for a high-level overview of where to get started with a number of different approaches to building your app.

“The important thing to remember is that whatever you feel inspired to build, you should build it now. Just start.” – Execute

We’re going to take the approach of starting quickly and building a minimal viable product (MVP), a concept popularized in the book The Lean Startup by Eric Ries. As such, the most important question to ask yourself first is…

Question 1: What kind of app do I want to build?

Answering that boils down to two other questions:

  1. How do I want people to use it?
  2. What technologies do I know or want to learn?

For the first question, do you want people to use it as a web app on a regular desktop or laptop computer? An app on a smartphone that they get from an app store (usually known as a “native” app)? Or what about a web app optimized for smartphone usage? Your ultimate goal may be to have all of these options available, but that’s too much to tackle if you’re just starting out by yourself. Pick one and concentrate on it, but keep other options in mind as branching out might affect the way you design it.

The second follow-up question (What technologies do I know or want to learn?) can also play a big role in how you want to proceed. In the rest of the article I’ll try to provide information for whichever route you decide.

A Note about Software Architecture

If you have any information that you want stored on the web for your app; login credentials, photos, scores–whatever, then you’ll want to consider a service-oriented architecture.

Huh?

I don’t want to go too far into the weeds here, but making the right decision up front can save a lot of time and heartache in the future. “Service-oriented architecture” means that you develop your system such that information and functionality are available over the web as service calls that any app or program can make and use.

Imagine your idea involves photos being displayed for the user. If you start out with only a web-based approach, you might make the mistake of tightly integrating your website with the database of photos, and each photo might be returned to the browser with HTML and JavaScript around it to make it work just right on your site. But what happens when you decide to build an Android app? Now you want to request those same photos from your app, but all that HTML and JavaScript does you no good.

Instead, you break down the simplest data you need in the simplest format possible (often JSON these days) and make that available as a request for whoever wants it. Now each client (a web browser, a smartphone app, a TV app, etc.) can ask for that data and manipulate it however required for that particular user interface.

Question 2: Do I need a new computer?

Probably not! The only type of app that might require you to purchase (or borrow) a new computer is an iOS app, which can only be developed on a Mac. For a web app or Android you can use any Mac, Windows, or Linux computer.

Better computers certainly make the development move a little faster, but it’s not necessary to get a new computer unless your current one is unbearably slow for development. I have an old HP laptop running Windows 7 that is still decent for Android development, and last year I used a friends old Snow Leopard Macbook for iOS and it was great, too. So you don’t need to worry too much about future-proofing, but you do want to get the best computer you can afford.

Macintosh SE on white background

If this is your computer, then it might be time for an upgrade.

Question 3: What developer tools do I need?

For web apps, you can get by with any old text editor like NotePad, TextEdit, or Sublime Text 2. Smartphone apps or apps for other types of devices usually require special programs called IDEs, which stands for “Integrated Development Environment.” These tools allow you to write code and build projects that can run on phones, tablets, TVs, or other types of hardware.

For smartphone apps, the development tools themselves are free for both iOS (Xcode) and Android (Eclipse). Microsoft is also making life easy for developers to get started developing apps for Windows Phones–Visual Studio Express 2012 is free and is similar to XCode and Eclipse. And you don’t even need a smartphone to test on for these platforms (though they help). All these tools contain virtual phones you can run on your computer and use to test your app. Testing on a device is better and faster, but the virtual phones are great and free!

If you are developing a smartphone app you might want to consider some non-native solutions like PhoneGap or Titanium that allow you to write apps for Android, iOS, and the web all at once. We don’t currently cover those tools at Treehouse, and they each have their own pros and cons, but I’ve seen good (not great) apps built with those tools.

Tools like these allow you to write native or hybrid (web apps wrapped in a native shell) apps using web technologies like HTML and JavaScript. The tools create versions of the app for multiple platforms, and you can even upload the different versions to places like Google Play and the App Store. This can be a great solution for some apps or to get started quickly, but ultimately you will probably be best served by crafting native apps tailored to each platform.

Question 4: How much will it cost?

Registering and hosting web apps usually requires small monthly or annual fees, but the tools themselves are usually free or cheap.

The tools for smartphone apps are free, too, but publishing apps in app stores costs a little bit. Apple and Microsoft charge an annual fee of $100 and Google charges a one-time fee of $25.

Question 5: How do I start writing the app?

If you’ve never written an app before, then you’ll probably want to use a resource like Treehouse to work through some lessons on how to build a simple web, Android, or iPhone app. As fun as it might be to jump right in and play with code, you’ll need at least a basic understanding of how apps are setup.

We have also covered some of these starting steps here in the blog for Android and iOS. There are other posts on the blog that might help you out; just click on iOS or Android in the navbar at the top of the blog to see all the posts in each category. We also have some Quick Tips on YouTube that might be of assistance.

The first thing you’ll want to do if using a new platform, be it web, Android, iOS, or Windows Phone, is to create a simple “Hello, World!” program to make sure your development environment is set up and working properly. “Hello, World!” programs are great first steps because they are the bare minimum you can do to run a full-fledged program. Below are a few good articles and videos about how to write “Hello, World!” programs for the various platforms we’ve been talking about:

One great resource for learning how to code certain types of functionality in apps is the sample code that’s distributed with tools and platforms. Want to use the camera? There are sample projects to show you how! Want to make your app location-aware? There are sample projects to show you how!

For Android and iOS, download, explore, and use the code available in the sample projects: Android | iOS. There is also fantastic documentation available on developer sites for Android, iOS, Windows Phone, and other platforms.

Best of luck with your app, and happy coding! If you make something cool, drop us a note in the Comments below!

*Macintosh SE image courtesy of Shane Doucette under the Creative Commons license.

Free Workshops

Watch one of our expert, full-length teaching videos. Choose from HTML, CSS or WordPress.

Start Learning

Ben Jakuben

I'm a dad to a few, husband to one, son to two, brother to one, and friend to many. I spent nine years in software development before finding my dream job with Treehouse. Lately I've been focused on mobile development (primarily Android) as well as how to be a better father/husband/son/friend. Firmly committed to the belief that the world is evolving to a better place. Find me on Twitter @benjakuben.

Comments

26 comments on “I Have an Idea for a Killer App, but Where Do I Start?

  1. I have no knowledge of developing, but I thought it would be exciting to try to teach myself to create an app. I began watching Amit Bijlani’s video and was encouraged by the possibility that I, with no experience at all, could possibly learn to do it. When I got to the part about downloading XCode 4, I realized I couldn’t download it on my Snow Leopard os. Then I found out I could download XCode 3 after registering as a developer. Me? But I did it. After some difficulty downloading (It hung up running script and I found out I needed to quit iTunes that was running in the background on the Activity Monitor), I was ready to go. This was already a lot for me! When I got to the video portion explaining how to begin using XCode, I saw that my XCode 3 has a completely different setup. Ughh! Now the tutorial doesn’t apply to what I’m trying to use. Is there another tutorial available for XCode 3? I would love to continue with this challenge.

  2. i need a partner to help me with a new app..i will pay for softwears if need be i just need some one that know what their doing and can be trusted…here my email kenroyharris@aol.com

  3. Thanks man . This helps a ton . In the midst of coding on an extremely quick scale . Have an awesome idea for an app and this helps out. Thanks for the links as well .

  4. Do I need a new computer – YES! a shiny new makbuuk PRO uber eins YES YOU DO NEED IT :)

    • Lots of awesome apps are free! Hopefully you will learn the tools you need to build your app!

  5. Great article. I’ve been sitting on an idea for a web/mobile app, but I don’t enjoy backend development, so I guess I’ll be looking for a good developer at some point.

    • Thanks! You made me realize this article could use an update. For a backend, check out the highly useful backend-as-a-service provided by Parse.com. We recently release an Android workshop about this and the upcoming iOS project deals with Parse extensively.

  6. I have an idea for an app but have absolutely NO knowledge of coding. Is it possible to have someone create the initial version then go from there? Help me get started??

    • Absolutely! Depending on the complexity of the app, that could be a great way to get into it. If you can find someone to create a Minimum Viable Product for you, and maybe even show you how they wrote the code, then you could branch the code (create a copy of it) and play around with it to learn. Looking at others’ code, especially if they are there to explain it and answer questions, is a great way to learn.

  7. Guys I need a bit of help in the right direction killer idea need to know where to go And how

  8. i have a great idea for an app…but i dont want to build it or go through all the software building hassels…any ideas where i can find an app developer that i can pitch my app idea to?

    • Not sure…maybe elance.com or odesk.com. Those are two big freelancing sites. Maybe even post stuff at local colleges–students are great resources for freelance work and often have great skills and need experience.