Friday, June 3, 2011

Reflection

I have come to the end of my two week project so I would like to take this post to reflect on what I have learned.
1. Nothing is what it seems. Even tasks we can do easily by hand are complex to program.
2. Programming Apps is all about building, checking and rebuilding until the final product is satisfactory.
3. Take breaks while working. Ideas sometimes come while one is eating lunch.
4. DO RESEARCH!
5. Look around, anything can be the inspiration for an app.
6. Sometimes it's ok to move on when a problem is particularly troubling. It is important to feel productive and not get discouraged.
7. Programming apps is difficult. Don't underestimate the effort it will take.
8. There is always more than one way to approach a problem. Ask friends and colleagues about how they would solve the problem.
9. If you want to be an app designer, don't go half way. Learn how to program. If you discover you hate programming then find a partner that writes code, but doesn't have app ideas. But understanding the limitations of programming will help you have realistic ideas.
10. HAVE FUN! Don't make apps to get rich, make apps to improve lives and have fun.

While there are many other things I learned (like marketing an app), these are the highlights. I have enjoyed finding 2000 ways not to make an app. Part of this project helped me discover that being an app inventor doesn't mean every idea or program is successful. Being an inventor means taking risks and trying new things. Inventors must hope for success and not be discouraged but failure. Ultimately, we need people who are willing to take risks. Without risk takers, there would be no invention. That is the most important lesson of all.

Coming Soon to Google's App Inventor for Android

Yesterday, I mentioned that languages like Java may be better for programming apps and it turns out that Java is the language to use. I was exploring Google's App Inventor for Android, looking for a way to upload code I had written by hand, when I stumbled upon the FAQ page. That was one of the questions. Google claims to be working on a way to upload Java code to the Block Editor so that more complex apps can be developed. So if you are looking to use Google's App Inventor for Android, then you should learn/use Java to write your programs. However, you must also note that there are several limitations in using Google's service. One is that the app can only be so big before it cannot be uploaded to the Android Market. Google is currently working on the problem, but it is still a restraint at this point. Also, while you may soon be able to upload Java code to the site, you will not be able to download anything off the site for use with other software. You can share the programs you create through Google's App Inventor for Android, but only one person can work on a specific account at a time. This limits the ability of multiple people to create an app together, but it still can be done. Personally, I am really looking forward to being able to upload code to the site because then I can write the basic functions of my app in code, then handle all the visuals on Google's App Inventor for Android.

Thursday, June 2, 2011

The Difficult and Complex Beauty of Code

I have said this before, and I will say it again. If you really want to be a successful app builder you need to learn code. Common misconceptions non-programmers have about code are that it is all zeros and ones and that it is too difficult to ever be conquered by the average person. To clear up the first one, I will explain that while the programming language machines understand is only zeros and ones, most code is not written using zeros and ones. There are several programming languages (Java, C++, etc.) that programmers use. Theses languages are then converted into machine language by specific software. I use C++ Language when writing programs. It is one of the oldest languages, but it's simple and powerful. C++ is more basic than languages like Java, so it may be easier to use Java to make apps. Be sure to do your own research before you decide to focus on one language. But since C++ is a basic code that other programming languages are built off I figured it would be beneficial to understand C++ before learning more complex languages. The software I use to program is excellent. It's is Microsoft Visual C++ 2010 Express. It helps you find mistakes in the code, builds the programs whenever you need, and it's free!
Code is beautiful, in that what you write is what you get. However, the difficulty arises in that humans make mistakes. An error in a piece of code could be as simple as leaving out one semicolon in the entire program or having a colon instead of a semicolon. These errors are often minute and difficult to find. That is why it is very important to take your time while writing programs and check over everything carefully. The Microsoft software I use highlights recently edited code and puts red squiggly lines under things that the software already knows will create an error in your program. This is a HUGE time saver! However, some errors still occur and can be difficult to locate. Personally, I find errors easily using the Microsoft software, but some programmers I have talked to suggest printing out the code and scanning it by hand if it is a particularly long string. For aspiring app builders, programming classes and books are easy to find. There are plenty of online classes that you can take or you can go to a community college. The basics of programming doesn't need to be learned in a high class institute. I took an online course and found it better than most classes I have taken in a classroom. Take a class where there is a teacher to call/email with questions. With the start of a basic programming class, you will be closer to understanding the beauty of code.