Google's App Inventor began as an educational tool to teach people fundamental programming concepts by helping them easily create simple Android apps. But the response — many were excited by the idea of making an app without needing much programming knowledge — turned App Inventor into something more. The App Inventor development team realized they had gained a new audience of hobbyists and creators, and so subsequent App Inventor updates have transformed it from a "toy" educational system into a more robust tool that lets you build more complex Android apps.
David Wolber (@wolberd), a professor at the University of San Francisco, has been teaching students how to use App Inventor. Based on his course materials, he co-authored the book 'App Inventor.' He also provides feedback and suggestions on the continuing development of the App Inventor kit to the project's lead, Mark Friedman, and creator, Hal Abelson (who is also a co-author of the 'App Inventor' book).
In the following interview, Wolber discusses App Inventor's evolution and its applications.
What are App Inventor's major strengths and weaknesses, technically speaking?
David Wolber: I've taught beginning programming for years and there are a lot of smart, creative students who get bogged down with the syntax and cryptic error messages you get when you type in code. They come to computer science excited about technology and immediately face these weird, frustrating mechanics.
With App Inventor, beginners can build really cool apps within hours. Instead of typing code, you plug puzzle pieces together. They only fit together if they're supposed to. Instead of remembering and typing commands, you choose from the high-level functions (puzzle pieces) provided. And your first programs aren't printing "hello world" on the screen — they're reading the GPS sensor or sending a text to a group of friends.
App Inventor includes high-level function blocks, but there are also all the programming constructs you find in a textual language: if statements, while loops, etc. There aren't blocks for every conceivable Android function, so there are some limitations, but the limitations aren't inherent and the App Inventor team adds new blocks all the time.
For some time in the past only highly technical people could set up blogs and wikis. Then tools like WordPress, Blogger and Google Sites transformed things so that anyone could create a blog or wiki. I see App Inventor doing the same thing — it's going to allow all types of people, not just the techies — to create apps for this incredible new mobile world.
If I weren't so busy teaching, I'd start a prototyping and mobile app company based on App Inventor right now. The company would take in ideas and use App Inventor to turn them into interactive, working prototypes within hours. App Inventor is that good, and turn-around time is that fast. I wouldn't be restricted to hiring only experienced, expert programmers.
What's the most common mistake people make when using App Inventor for the first time?
David Wolber: Probably the most common mistake that beginning programmers make, with any language, is to have long coding cycles without testing. I'll see a student with 30 or 40 App Inventor blocks in their app and I'll ask them, 'How's it going? Does it work?' and they'll answer, 'I think, but I haven't tried it.' Even with App Inventor, this 'big bang' approach is a strategy that leads to big bugs.
The book addresses software engineering principles: testing your app early and often being a key one. The great thing is that App Inventor provides fantastic tools for doing this — you can plug your phone into your computer and literally test your app as you build it.
How much of a gap is there between the skills acquired through App Inventor and the skills needed to develop apps professionally?
David Wolber: With App Inventor you'll learn the key programming concepts — conditionals, iteration, functions, parameters, etc. — just without some of the headaches of a text-based language.
I've had a number of students transition from my App Inventor course to a course based on Python and they've thrived. It helps to have a firm basis on the concepts, and because they've had success and built some cool apps with App Inventor, they're motivated and ready to tackle programming with a text-based language.
App Inventor also provides an introduction to the Android operating system. You're not going to learn the same exact commands that are available with the Android SDK, but you'll get a feel for how things work, which will help if you do progress to that level.
If you're already an experienced programmer, you should know that App Inventor won't really help you learn the Android SDK. App Inventor doesn't yet generate code, so you can't go to the SDK level if you reach a limitation.
Having said that, I encourage established programmers to learn App Inventor. It's a great tool to have in your arsenal, especially if you believe in user-centered design and getting feedback early in the development process. There is simply no faster way of creating a mobile app than with App Inventor.
What types of apps work best with App Inventor?
David Wolber: The most exciting apps that App Inventor facilitates are those that take advantage of the technology inside the Android device. In the book we show you how to create social apps that process SMS texts: you can build a 'No Text While Driving' app that automatically responds to texts that come in and speaks them aloud using Android's speech synthesizer. You can also build a 'Broadcast Hub,' an SMS texting app that a group in Helsinki customized for event communication with a group of more than a thousand people. And you can build 'Android Where's My Car?,' an app that remembers a location for you and gives you a map later so you can get back there. These apps are easy to create in App Inventor because there are high-level blocks for all that technology.
App Inventor is also great for creating games and educational software. One of the first apps students in my class build is 'MoleMash,' but they personalize it, so they're mashing a picture of a relative or teacher. Later, they build quiz apps and study guides, which come out great because it's easy to add video and sound.
Which App Inventor-created apps have surprised you?
David Wolber: The app that surprised me most was one a man made to propose to his girlfriend. She's a Harry Potter fan, so he made it seem like a Harry Potter quiz with videos and images he clipped in. She had no idea it was a 'personal' app, until the last question was 'will you marry me?' with their favorite song playing. I liked it because it illustrates a key to App Inventor: you can build apps with very personal utility.
Will App Inventor apps eventually become widely adopted applications?
David Wolber: They haven't yet made it easy to deploy App Inventor apps to the Android Market — you have to jump through some hoops. But this limitation will go away and you'll be able to deploy with a single click.
The potential for building widely adopted apps is definitely there, and the App Inventor team is busy adding more functionality so you can program anything with it that you could do with the Android SDK. They're also working on a 'Component Designer' so programmers, using the SDK, can add new components and blocks to App Inventor. I have no doubt App Inventor will be used to build apps for the Market, and will be a common part of the app building arsenal.
The other interesting development is that an App Inventor gallery is being built, which is sort of an open-source alternative to the Android Market. The gallery will be a place where people upload the apps they've built, including the source code (source blocks). So you'll be able to download apps and if there's something you don't like or want to personalize, you can download the blocks and change it with App Inventor. It will be the world's first 'customizable app store.' App Inventor and the gallery will definitely lead to apps that are widely used.
- Creating SMS Texting Apps with App Inventor
- App Inventor and the culture wars
- Video: App Inventor in action
- Gaming education
- Innovation, education and Makers