What Do App Making And Solving World Hunger Have In Common, And Why Do We Give Up?
Learning how to code apps is a very popular topic these days. Look at any course site: Udemy, Team Treehouse, Lynda, Khan Academy, even Stanford Online and you’ll see hundreds of thousands of students enrolled in courses that teach them how to code apps. You’d expect that these courses produce a number of fresh app makers, but that’s not the case. Why not?
Reviewers Should Become App Makers, If They Finished The Course
A fraction of students take the time to review a course and they often reward it with a high score. The most popular coding course on Udemy has close to 2.000 reviews, with a 5 out of 5 score. Other smaller courses still reach an average of 8.000 total participants, with a similar percentage of students leaving a course review.
You would expect that the end goal of such a course is to teach coding, and instruct a student how to make their own apps. You can also assume that most students who leave a review, finished the course. A review system would be very flawed when the average amount of consumed course contents by reviewing students is too low to give a credible rating.
Based on the conditions above, I did a random Google and Facebook search for the people that left a review for this popular Udemy course. Very few of them are actually app developers. Even when you take in account obvious reasons for quitting a course (lost interest, didn’t want to become an app developer), I am suspecting that most course participants never actually become app makers (*).
Why Do So Many People Give Up?
Why do so many people give up on learning how to make their own apps?
As an app developer I’m very passionate about igniting the curiosity for computer science, engineering and making apps in others. In my opinion, the world needs more app developers. The way we connect with our friends today is the result of the engineering work of our parents and grandparents, even the work of our peers. New technology gets invented every day and its road to adoption by the public is getting shorter and shorter. We live longer, sleep better, get more work done in less time. All thanks to the people that invented new technology.
But… we also pollute more. The larger part of the world has no food, no fresh water and no direct source of education. The world needs innovators, inventors and heroes if we ever want to make it to the year 3000. In order to become an innovating inventor, you need to be able to solve problems with your head.
An app making course can’t teach you to solve world hunger, disease or corruption. But it can teach you how to solve problems. It can ignite the spark of engineering and enable anyone with a courageous heart to take on the big problems of this world.
Then why are so many people giving up on learning how to code? Because the system used to educate them is fundamentally flawed!
Traditional Learning: Dive In Deep First, Apply Later
Let’s take a look at the figure below, Figure 1 and 2.
In both figures, mastery and reward are plotted against time. A student starts at the lower left corner of the graph, and gradually works his way into mastery (blue line) of a topic over time. At the same time, the student develops a sense of reward (green line): is it worthwhile to learn what I’m learning?
With the traditional method learning how to code, as shown in Figure 1, the reward is almost inversely proportional to the level of mastery. As you learn, you lose motivation and inspiration because you’re burning energy. In Figure 1, the reward comes at the end: you’ve learned enough to create something practical, you get to reap the produce of your learning.
In tangible terms, it means an app making course will learn you first about variables, functions, classes, arrays, collections, dictionaries, types, compilers, memory management, view controllers, MVC and other paradigms, the Cocoa Touch SDK, closures, optionals, conditionals, for-loops, while-loops, for-in-loops, and then… lets you create an app with all that you’ve learned. First you learn a lot, and you get the reward for it in the end.
New Learning: Combine Learning With Applying
A new learning method, shown in Figure 2, does that differently. It recognizes that you deplete your motivation and inspiration if you don’t get rewarded for your learning effort.
During such a course you’ll alternate between learning a topic and applying that topic. In a real-world course, you’d first learn about strings and variable types and after that make a small app applying the newly learned topics.
Figure 2 counteracts the loss of motivation by alternating between learning and applying. The sense of reward decreases much slower and never reaches the danger zone of dropping out of a course. Unfortunately, the learning is much slower too: the application of a learned subject takes time, and that time is not spent mastering the subject. A student could still drop out, simply because of a hard time restraint: the student has no time left. Also, it’s a perfect-world scenario: the figure assumes the alternating application phases are rewarding enough to replenish the sense of reward.
Why We Drop Out: Our Sense Of Rewards Gives In Before We Master A Topic
Both figures have a red bar at the bottom: the danger zone. When a student receives no direct reward for his or her learning effort, their sense of reward decreases and ultimately reaches a level that is unsustainable. The student loses faith in the course or in their own learning ability, because the energy it takes to learn is never replenished. It takes the student too long to get to the reward, their motivation gives in first.
When looking at the topics taught in several learn-how-to-make-your-own-apps courses, the learning curves of Figure 1 and 2 come to mind. For these courses, the first few topics are far too deep.
These courses dive first into the whole deal: functions, variables, strings, integers, arrays and dictionaries, for-loops and while-loops. Second, they teach you how to make an app with those topics. Very often these example apps are variations on “Hello World”, or show you how to create a simple calculator or an app that has just one button. That isn’t fun, and it’s certainly not rewarding!
A Solution: Learning-By-Doing That Folds Onto Itself
Is there a solution? Yes! Let’s look at Figure 3 below.
Two properties of the graph immediately stand out:
- On average, the sense of reward increases over time
- On average, the speed of learning increases over time
Figure 3 is essentially the same as Figure 2. Mastery of a subject builds over time, and learning something uses up energy. This energy has to be replenished by a sense of reward, in order to stay motivated to complete a course. Vertical (or “deep”) learning of topics is alternated with horizontal (or “shallow”) application of topics.
Figure 3 is an improvement of Figure 2 by just one factor. When learning, they’re not exhausting the sense of reward but they’re adding directly to it. The sense of reward, on average, improves over time. The learning speed, on average, increases almost exponentially. Figure 3 solves the delayed-reward problem of Figure 1, and at the same time solves the it-takes-too-long-to-master problem of Figure 2.
But this is just theorizing, right? Absolutely. Therefore, I’ve identified one single factor that can enable exponential learning: building on what’s already learned.
Not by introducing an even harder topic, but combining all topics into an application of these topics. It is learning-by-doing that folds onto itself, reinforcing the topics that were learned previously and using them as building blocks for newer topics. New topics include and require mastery of earlier subjects, they don’t just advance on them. It’s how a master, who’s already an expert, learns: mastery is the point where you can learn a new relevant subject with almost no effort and apply the new knowledge immediately to any situation.
At the same time, topics can be introduced gradually. You don’t need to know Integer-types when all you do is putting text on the screen. You don’t need to know how the entire delegation paradigm works, before you can put a table view cell on screen.
Fundamentally, any exercise or example project used in a course should feel real. No one wants to learn how to create a calculator, we’ve got plenty of calculators. It’s far more interesting to learn how to make a Pinterest-like application, or to learn the fundamental building blocks of a Twitter-like back-end. Being able to create what you see around you gives is a powerful motivator.
Learning how to code can give a powerful feeling: “I can see the the technological building blocks of the world, and I know how to fix them.”
Solving World Hunger With An App?
I hope this article about learning inspired you to pursue the sustainable kind of coding courses.
Ultimately, no app can solve world hunger by itself. But I hope, that one day a suitable invention emerges that was created by an inventor that was once a mere app maker.
(*) Incidentally, a high number of reviewers that had a real avatar photo (as opposed to the default image) were real app makers…
Learn how to code iOS apps with me. We'll focus on app architecture, best practices and fundamental topics.
Become an insider. Get access to our members-only courses and private community. » Learn more
Most Popular Content
- How To Make An App (In 9 Steps)
- How To Develop iOS Apps On A Windows PC
- How To: Pass Data Between View Controllers In Swift (Extended)
- Creating A Simple iOS Game With Swift In Xcode
- How To: Build A Real-Time Chat App With Firebase And Swift
- How To: Random Numbers in Swift
- Understanding The "Use of Unresolved Identifier" Error In Xcode
- Understanding The «Unexpectedly found nil while unwrapping an Optional value» Error
Comments & Questions
Got a comment or question? Let me know! I read and respond to every one. Thanks!