What does using App Inventor 2 teach developers

Everyone says appinventor is for learning. Please explain what appinventor teaches? Will the ability to arrange blocks be useful in writing programs later, e.g. in Java? I don't think appinventor teaches programming, it is rather a tool used by non-programmers to create programs. And at school it is rather for fun and as a curiosity that you can build a working application from the bricks.

Based on our analytics, we estimate that just over 70% of our users in the last year are educational users.

App Inventor is designed to teach computational thinking (Wing, 2006, Brennan & Resnick, 2012) and computational action (Tissenbaum, Sheldon, & Abelson, 2019) using a constructionism-based approach (Harel & Papert (Eds.) 1991, Ablex Publishing).

App Inventor does not just exist as a standalone tool. There are a number of curricula built around it (e.g., Mobile CSP, PLTW, CoolThink), and books on App Inventor (e.g., Wolber, Abelson, Spertus, & Looney, 2014) have been translated into a number of languages.

Different programming languages have different ways of organizing information. Even for a given programming language, there are sometimes competing methodologies for organizing code (e.g., the traditional ant layout for Java projects vs Maven vs Gradle). If App Inventor teaches people to think about how they want to lay out their code, then they can also think about how others lay out their code, what the pros/cons are of different approaches, etc. Any program of sufficient size in App Inventor will need some thought put into its organization and may require refactoring, such as using the "any component" blocks. Learning how to think more abstractly should transfer to other languages (I don't have time to look for citations). The blocks themselves represent abstract syntax of the underlying language (Scheme/YAIL in App Inventor). Other editors, such as MakeCode, will even show a JavaScript representation of the blocks.

Lastly, programming is not just about emitting a sequence of characters to be interpreted or compiled by a computer. There are skills like debugging, decomposing a problem from a complex process into smaller, implementable chunks, and so on that can be learned in any language and in some amount transferred to other languages. I first learned Apple Basic on an Apple 2e, eventually going on to learn C++, various flavors of assembly, JavaScript, LISP, etc.

Different languages have different paradigms (functional vs imperative, for one), but that doesn't mean you have to learn the concepts from scratch every time. If people gain any of those skills from a more visual language such as App Inventor, then we have succeeded. If they solve some larger problem in their communities using the app they build, then we have succeeded. We don't expect most people who build apps in App Inventor to become software engineers, but we hope that the critical thinking skills they develop while learning how to build apps are useful to them on whatever path life takes them.


What App Inventor also teaches, besides all the technical stuff :wink:, is:

With MIT App Inventor, anyone can build apps with global impact

When you look at the latest Hackathon you see a lot of very young people trying their hands on how to translate an abstract challenge into an app.

I mentored a number of developers in making an app. Looking at the video's that accompanied the apps you can see the enthusiasm, the involvement with the subject and the fun they had.

And i hope that they will take all these things with them for the rest of their lives. If App Inventor can be part of that fire that starts to burn when they discover they can develop apps themselves then the developers of App Inventor did a great job.


Maybe my post is off-topic but let me put my thoughts here.

You can know limits of something when you try to explore it so to learn what App Inventor is, you will have to learn it first.
Here everything depends on your logic building power.You can do almost anything in this world and nothing is impossible.
I have seen (in a very short period of time since I joined) that a lot of people use App Inventor as commercial development platform.

P.S. I usually don't write long posts so sorry if I missed something. :sweat_smile:


Just moving blocks won't teach you how to code, but putting those blocks in the right place will.

Example: By placing blocks, many users have learned how to construct an IF THEN ELSE/ELSE IF condition. Or the concept of EVENTS and PROCEDURES.


I share the various comments, I will add my own: just a regret that inventor cannot "translate" the blocks into android language to really have a gateway with higher level programming.


Let me add my two cents here (I've been using App Inventor for six years now).

App Inventor teaches programming

You learn an imperative and structured programming language without having to worry about the syntax of the underlying language. Variables, loops and conditional statements are important in many programming languages. All that is taught in an abstract form, while you still get immediate visual feedback. Plus, you learn other useful concepts like DRY, KISS & MAYA

App Inventor teaches logic

AI users have to think about how to design a clear, understandable user interface and in which order things have to be done. The users have to think about what they want to archieve and how that can archieved with the blocks. To say it with Evan's words:

App Inventor teaches technology

When you use App Inventor, you will most likely meet some of today's technology: Databases, wireless connectivity, social interaction, sensor data, media formats, etc. App Inventor users are encouraged to learn about the things that drive today's technology.