Everyone has heard the cliché that everyone these days has an idea for an app. I can tell you as a computer science student that it’s true. I consistently have friends and family pitching their ideas to me and I’m sure if you’re reading this you have one too. Well you’re in luck, because this guide will help you narrow down an application or program idea, pick a language to code in, and hopefully point you in the direction of getting started on becoming the next big thing in the tech world.
Throughout the Instructable you will come across text in Italics (like this).These are some general warnings and personal thoughts that I believe are worth considering.
Table of Contents
- How to come up with an idea
- Picking the language that is best for you
- Learning the language
- Downloading an IDE
- Where to go from here
- Resources and Links
Step 1: Glossary
The first step in creating an application is understanding some frequently used terms.
- Language- A way to communicate instructions to a computer
- Program/Application - A series of commands given to a computer in order to execute a task
- Medium - The platform on which a program runs. i.e. a smart phone
- IDE - Integrated Development Enviornment. A program that allows a user to write instructions for the computer
- Syntax - The format and style of the computer instructions
Step 2: Coming Up With an Idea
Most people have some app idea sitting in the back of their head, but it's okay if you don't. It's really easy to come up with an idea with a little thinking and planning. I included two examples to help you get started.
I. Identify a problem
The first step in creating an application or program is to find a need. This can be the lack of a similar application on the marketplace or even something you just want to code for fun. Don’t stress too much about creating something original, because with programming you can take an existing idea and add your own fresh take on it.
II. Think about the audience
After you have come up with a vague idea of what you want to program start thinking about who is going to be using it. Maybe you plan on taking the world by storm with the hottest new game or you just want to make a statistics calculator to help you and your friends do your homework. Narrowing down your user base will help you determine what medium you want your application to be on.
III. Determine a medium
Once you have a specific audience in mind you can choose what medium you want your application to be on. This can range anywhere from a mobile phone to an entire website dedicated to your program. This choice will help you determine what language to code in.
Unfortunately if you want to use an iPhone as your medium this guide wont help much. iPhone programming requires a specialized language and I believe it is not suited to beginners.
Step 3: Picking a Language
When it comes to choosing a language to code in there almost an infinite amount of choices. However, when starting off there are a few easy to learn yet very powerful languages. The specific language chosen will be mainly based on the audience and medium we discussed earlier as well as the functionality of the application. Refer to the above table as a quick guide to the languages and read more about each below.
Python is a relatively new language compared to the other three I'll be discussing. However, it is a very useful language. It has the easiest syntax to learn and this is a big draw for many people, but this lack of structure can sometimes be confusing for newer coders. I would recommend using Python if you want to do something heavily mathematical or to automate something.
Java is the gold standard in beginner languages. Most introductory level coding classes are taught in Java and there are a few good reasons for this. First of all it has a very well defined set of rules for syntax which help create good coding habits. Second it is a good choice for almost any type of program. However, this is also its downfall as it is not as specialized as other languages. I would recommend Java if you want to continue coding beyond this one project. It is also the language required for any Android programming if that is your goal.
C++ is a great language to learn if you are interested in a somewhat deeper understanding of how computers work and how what your coding translates intro the instructions for the computer. It is by far the most powerful of the languages I discuss here, but only requires a little more effort to learn than Java. I recommend this for aspiring game developers and perhaps those that already have some Java experience and want to expand their coding knowledge.
HTML is the website language. If you want to make a website to inform your audience on a subject or maybe to keep track of meetings and events for a club this is the language for you. The downside of the language is it lacks the ability to do much more than display things, but it's extremely easy to learn and very flexible when it comes to how you want to display information.
If you look at the examples from the previous step we can determine that we would want to use Java for the Tip Calculator due to it's ability to make it mobile on Android devices. As for the Area Calculator we could either use Python due to the mathematical nature or C++ if we wanted a more robust piece of software.
Step 4: Learning the Language
Above are examples of Code Academy and LearnCPP
The first step once you have chosen a langue is to learn the basics. In order to do this I highly recommend using Code Academy. This website offers lessons in most of the languages I mentioned earlier (Python, Java, and HTML) These lessons are built into the browser and require no additional downloads. For C++ I recommend a site called LearnCPP. This website however does require the installation of an IDE which I will cover in the next step. One thing to remember with coding is that learning never stops so I included some more resources for language specific learning further on down.
Step 5: Downloading an IDE
These are examples of a download page for and IDE and an actual IDE
Coding require the use of software called an Integrated Development Environment which is most often referred to as an IDE. This software helps you write code and run it and is required for larger programs and applications. Often the downloading and installation of these can take some time. If this seems like too much of a hassle there is an online alternative called ideone that acts as an in-browser IDE and supports most languages. However for large projects I recommend downloading a full-fledged IDE for the language you have chosen. I included links to my recommend ones in the next section.
Step 6: Where to Go From Here
At this point you have gathered all the information and resources necessary to start programming. Earlier on you identified a problem and now you can use the new language you learned to start tackling this issue. Of course the introductory classes I pointed you towards will not cover everything you need to finish your new application, but that's half the fun of coding. There is always a new challenge to overcome and new knowledge to be gained. In the next section I have included links that should help you on your path to finish and use your first app.
Step 7: Resources and Links
- StackOverflow - The number one resource for programming. A website with answers to most common questions and even some fairly advanced one. The best place to start when you have a question.
- Google - It might seem dumb to mention, but google can truly be a programmers strongest tool to answering questions. If you come across any errors you don't understand, googling them can solve a majority.
- Learn Python - A great resource to learn Python similar to Code Academy.
- Learn Java Online - Another good java learning resource. Created by the same group as Learn Python.
- Tutorials Point - This resource for C++ is a great resource when looking for specific areas of programming.
- W3 Schools - A longstanding guide to starting out in HTML.
Personally I used both Tutorials Point and W3 Schools when learning C++ and HTML respectively. However, I now believe them to be slightly inferior to my earlier suggestions of LearnCpp and Code Academy respectively.
- Eclipse - A widely used IDE. Originally designed for Java, but it now available in different forms to suit C++, Python, and HTML.
- Android Studio - The IDE to use if you plan on developing for an Android device.
- JGrasp - My first IDE. Very barebones, but helps to enforce and teach good coding habits.
- Python - Python offers their own IDE to go along with their language. Fairly bug-free and heavily supported.
- NetBeans - The premier IDE for coding in C++
- Brackets - A newer take on an IDE for HTML. Offers a lot of visual feedback to speed up coding.