Does Duolingo for programmers exist?

I have personally used Duolingo to learn German for quite a while. And recently I asked myself if anything that “looks like” and “feels like” Duolingo but for programming languages learning exists? It would make me spend not that much time learning programming and would improve my learning experience and make it much more enjoyable and efficient.

If you do know what Duolingo is, you may skip this entire paragraph and move forward. Otherwise this paragraph is for you. So, Duolingo is a website and, of course, a mobile application that allows you to study foreign languages on the go by asking simple grammar puzzles and interactive single- or multiple-choice questions. It also has a gamified skill tree that you can progress through in the process of learning. It allows you to track your progress explicitly and clearly understand what you are learning. From the other side you can earn “experience” that lets you see how your progress correlates with that of your friends or other duolingo users. The last but not the least is that such kind of learning actually requires not much of your time, you can practice 15 minutes a day, during a coffee break, or while commuting home — and its efficiency will be equal to the one you could get by taking private lessons with a tutor. On top of that there is a button called “Strengthen skills” that is doing some magic. Duolingo knows the areas you are weak in and allows you to improve your knowledge in them with that button. “Strengthen skills” functionality allows you to train skills you need most, it knows your personal Achilles’ heel. So yes, if you haven’t tried Duolingo yet, you should definitely do it. But this article is about learning programming languages and other IT-related stuff.

You may suspect that this article will again be about such monsters like Coursera, EdX, Treehouse, Udacity, Codecademy, etc. But no! It is NOT.

I agree that abovementioned platforms are cool, friendly, and even smell good, but…. We don’t like these guys for one simple reason — it takes too much time to learn something new using them. I normally do not have that much free time which I can devote to studies. Personally, I’m working as a software developer, and like every other person who has a fulltime job, family, friends… I understand how hard it is to find a free time that I can devote to studies — it should be around 10–15 hours per week for a course on Coursera, making it 1–2 hours a day… But I want to learn something new or at least repeat programming stuff regularly, and I want to train my skills like I normally do with Duolingo for German.

So what are the main requirements we would want from such a service for learning to program?

  • Let’s consider the most important ones from my point of view:
  • it should take a small amount of time
  • it should be efficient — I should see my progress and understand what has changed from the previous time
  • it should have a clearly structured high-quality content
  • it should be interactive and funny for me to use it (i.e., some gamification should be utilized)
  • it should be adaptive — I want either to learn something new or to improve my knowledge in the areas I have gaps in
  • and, of course, the cheaper it is, the better

I have done some research and prepared a list of top-5 most interesting programming learning apps that can give us what we want (well, at least partially).

Smarterer

Pros:

  • Big amount of content, a lot of different courses
  • Good dashboard with your personalized statistics and your position in overall ranking
  • You can see related tests
  • Fresh and funny UI for answering tests and usability
  • Owl is definitely a plus ^___^
  • You can leave comments to questions
  • You can share results to social media and review old answers

Cons:

  • There is no overall ranking of users
  • Community creates courses, so their quality is not that high but is still on a good level
  • Lack of explanations and theoretical part
  • You can answer very limited number of questions per session and should wait around two weeks till you can retake the test
  • It looks like there is no adaptivity at all or, even if it is there, it works in a GMAT way meaning that you will be asked fewer questions if you constantly fail
  • In general, it seems to be one of the best places to take tests, but it was recently acquired by Pluralsight and will get closed soon (July 16, 2016)
  • No gamification

By the way, it has no Android or iOS app.

Memrise

Pros:

  • Has Android and IOS apps
  • It’s free
  • Big amount of content, a lot of different courses
  • Theory is presented through cards
  • Good dashboard, you can create daily goals
  • Overall leaderboard
  • Gamification (goals, levels)
  • Good UI and UX
  • You can create groups and study with friends, or you can teach somebody
  • You can create your course (but looks like it is more of a con, but if you want to create a very specific class that doesn’t exist yet — it is a good option)

Cons:

  • A lot of courses. Content is very unstructured. Complete chaos — it is hard to find what you want (from ten Java classes — one is worthy to take). A majority of the content is of low quality (community creates courses).
  • When you want to find just tests, you will get courses with videos sometimes. But we have Coursera, EDx, Udacity and others for video courses
  • Cards system — you don’t see standard test, in most cases it is just a repeating set of cards with basic concepts
  • You can not share your results with social media
  • There is no way to leave comments to questions

Its usage is to learn some very basic theory concepts with cards system

Quizful.com

Pros:

  • High-quality content (even though those are demo courses). Most of the questions connected to explanations or theory rules, and that help to understand the correct answer. Eight demo courses are available as of now, plus there exists a “help to translate” mode (you may assist in translating questions from Russian to English to make them available to a broader audience).
  • Good UI and UX
  • Content is clearly structured
  • Good Dashboard
  • Friends, you can compare your results to them
  • Freemium model (> 30% content of different difficulty is always gonna stay free). Everything contributed to the site remains free as well.
  • Translations — you can contribute to the service content and get the full version subscriptions for free in the future
  • Long reads is not a huge deal, but still I think it’s a plus.

Cons:

  • No history of answers
  • You can not share your results with social media
  • Content translated from Russian (it is a young start-up doing pivot), and some questions have grammar mistakes. But after commenting them, owners fix those issues. So community can control it
  • No Android or iOS version. Looks like Android and iOS “are coming soon”, but it is unclear when (no date provided on the site).

Service based on a freemium model. But while being in Alpha phase — it is entirely free. It looks like the site is under active development — so maybe some additional features will appear soon. Overall, it looks very promising.

Cerego

Pros:

  • Modern and revolutionary design, good UI/UX
  • You can create courses yourself (it may either a general-audience course or a very specific one). Memrise has the same advantage, but this approach has one significant drawback — since more and more courses are user-created, it becomes harder and harder to find a high-quality one
  • Great statistics with memory bank, you can see how some theory facts connected to others
  • It looks like it’s adaptive
  • They do have Android app but seems nobody is using it — 500 downloads
  • It’s free/freemium

Cons:

  • There are not so many programming courses, and they are still created by community (10 courses.\ Free)
  • Bad quality of content (it is too easy)
  • It is quite good for learning very basic programming theory (the same as Memrise), but it isn’t that useful for practicing questions with code
  • It not designed for learning to program
  • Strange and unclear learning flow.

GradeStack

Pros:

  • They do have Android and iOS application
  • You can learn theory with small facts and then take a quiz based on the material learned
  • Quizzes have answers and explanations to them at the end

Cons:

  • Poor UI/UX
  • Tests are with fixed amount of questions, and there is no adaptivity
  • No overall ranking, no friends to follow
  • No option to share results
  • There are not so many programming courses (3 courses.\ Free)
  • Medium-quality content — good to learn theory, tests are medium as well.
  • Even though it does have an Android app, it has some bugs and errors.
  • Development stage and content creation process is unclear.

If you know more services of such kind, please don’t hesitate to write several lines about them in comments.