Context
I learn German. I took some courses in Barcelona, but I had forgotten almost everything when I moved to Vienna. I have been self-learning German for over a year, and it is working quite well for me. My techniques reduce to:
- Listening to podcasts. At my peak motivation level, I was listening to over 1h of German podcasts per day. All of it was Easy German, which I 100% recommend. I love the podcasters and their project. What they do is good work. I have no proof of this, but I like to think that even if you don’t actively listen and have it in the background when doing something else, it helps.
- Duolingo and Babbel. Both are very nice, but different. I have a 600-day streak in Duolingo, and I used Babbel only for a couple of months (because you have to pay).
- Babbel is nice to learn in a structured way. If you have time, maybe pay for a month and finish all the grammar courses. Babbel has a nice “Vocabulary Review” functionality that I was using for a while and that inspired my app.
- Duolingo is nice to refresh and learn structures by repeating things like crazy. But it really works. For instance, I know how to decline articles and adjectives because I’ve seen it so many times in Duolingo.
- Tandem. I don’t do this very regularly, but I have a Tandem partner, and we meet at least once a month. It’s nice to speak broken German for 20 minutes straight without giving a fuck.
- Living in a German-speaking country helps learning German🤷🏻
The idea for the app
I was at my peak motivation level for learning German, and I had been using the Vocabulary Review tool from Babbel for a while. I thought that it would be very nice to have full control of that tool and that by using consistently I would finally reach the next level in German.
The app I built
It took me less than a week have the app working. I used Streamlit. I love it, and I would always go with a Streamlit app for these kinds of simple projects that require a UI.
This is the GitHub repo of the project: jsalvasoler/deutsch_lernen (github.com)
There is a nice explanation of the tool in the readme of the project, and I will just summarize it here.
- The main page of the application is the Dashboard page. This is a screenshot of what it looks like:
- After taking a look at the Dashboard, the user can start reviewing words by clicking on the "Review" button. This is a screenshot of what it looks like:
- At the end of the review, the user can see the results of the review. The user can take a look at the incorrect answers. Here is a screenshot of what it looks like:
What happened with the app
The funny part of the story is that I used the app for two weeks, and then I abandoned it. 🤡
I guess because of a combination of the following things:
- It was summer vacation, and I didn’t want to spend a lot of time learning German actively. During the uni semester it’s easier because you are studying and working all day long anyway.
- I never deployed the app, so I couldn’t use it on my phone
- The UI was decent, but so lousy compared to Duolingo, Babbel, or any other “real” app.
- I learned that the “reactivity” or “smoothness” of a UI can make a huge difference on the user experience. If I translate a word correctly, I want some nice animation, not just a ✅ emoji. This not the strength of Streamlit.
- You are never going to be addicted to an app with a bad UI
- Memorizing vocabulary is boring
- In the end, I wasn’t sure that memorizing vocabulary was what my German was missing. And now (a year later) I think this was true. I learned vocabulary through podcasts even faster than with memorization, and in a more natural way (you contextualize the words better).