I built an app to learn German (and then I didn't use it)

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

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, where users can track their vocabulary progress and review statistics.

After taking a look at the Dashboard, the user can start reviewing words by clicking on the “Review” button, which presents words for translation practice.

At the end of the review, the user can see the results of the review and take a look at the incorrect answers.

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).



Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • A ViT-based Siamese Network for Visual Reasoning in the KiVA-ICCV Challenge (2nd-place solution!)
  • I defended my master's thesis on Diffusion-Based Evolutionary Algorithms
  • My fork of karpathy/nanoGPT
  • I took on the MESS 2024 Computational Optimization Challenge
  • Training a transformer to predict the gender of German nouns