It is common for programmers to switch programming languages--quite often, new work happens to involve a new programming language and the programmer has to just dive into it. Many have experienced this, along with the ups and downs involved.
This article presents the results of a qualitative study focusing on the facilitation (existing knowledge helping with new language) and interference (existing knowledge causing confusion) encountered by experienced programmers who are learning a new language.
The findings confirm that both facilitation and interference do happen. As revealed by the semi-structured interviews conducted as part of the research, programmers learn the new language on their own (without formal training) and learn only the parts they immediately need (just-in-time learning). This tends to cause issues when concepts in the new language are different, possibly without the programmers noticing. A particular issue is when the new language uses terms already used in other languages, but uses them for different concepts.
Programmers learning a new language often turn to online searches and discussion forums. The researchers also performed an analysis of Stack Overflow posts that confirmed their hypothesis about interference: in many of the posts analyzed (61 percent), the programmers made wrong assumptions about the new language, presumably based on language(s) already known.
This article offers recommendations for designers of new languages and language ecosystems to make future transitions between languages easier. One such recommendation is to provide documentation specifically targeting programmers transitioning from another language, anticipating likely language conversions.
The article is an enlightening read for seasoned programmers who have already experienced multiple language conversions, and would also be highly recommended to designers of new languages and language ecosystems. The well-documented research methods could also be very helpful to researchers starting their own qualitative research project on programming language learning and use.