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.


Anyone can be a Developer.
Earn a Techdegree and get the job-ready coding skills you need to launch your new career in tech.