Good programming skills are one of the core competencies that engineering and computer science students are expected to develop. It has also become more and more expected from not only computer science students, but also everyone else, to have a certain understanding of code and how to make simple changes and easily identify issues and problems.
However, students and teachers agree that learning programming is a hard task, especially for first year students (Verdù, Regueras, Verdú, Leal, De Castro & Queriós, 2012). Novice students need to be adequately motivated in order to learn programming in a successful and effective manner. This only increases the need for effective playful learning when learning how to code. The need for effective playful learning is even higher for self-learners. They need to be able to understand the different aspects of code and how different single elements apply to the whole code.
Codeacademy is doing a great job in introducing different coding languages to an absolute beginner. The website has courses that do not just teach you in levels or chapters but instead give you a goal to achieve (code a website, make this page prettier, organize this information, etc.).
By giving the self-learner a goal that is tangible and is achieving something that he or she is trying to achieve by learning how to code anyway you give them a great motivation for learning. This can be translated into games that teach code. Any game that is trying to achieve a goal, may it be coding a website or moving a single item to a different spot, will give the self-learner an incentive to continue learning. This way a learner will be more interested in learning more and more tricks and will ultimately in his journey learn how to code.
Verdú, R., Regueras, L.M., Verdú, M.J., Leal, J.P., De Castro, J.P., Queirós, R. (2012). A distributed system for learning programming on-line. Computers & Education, 58(1). 1-10.