Here We Go Again: Why Is It Difficult for Developers to Learn Another Programming Language?

@article{Shrestha2020HereWG,
  title={Here We Go Again: Why Is It Difficult for Developers to Learn Another Programming Language?},
  author={Nischal Shrestha and Colton Botta and Titus Barik and Chris Parnin},
  journal={2020 IEEE/ACM 42nd International Conference on Software Engineering (ICSE)},
  year={2020},
  pages={691-701}
}
Once a programmer knows one language, they can leverage concepts and knowledge already learned, and easily pick up another programming language. But is that always the case? To understand if programmers have difficulty learning additional programming languages, we conducted an empirical study of Stack Overflow questions across 18 different programming languages. We hypothesized that previous knowledge could potentially interfere with learning a new programming language. From our inspection of… 

Tables from this paper

Novice Reflections During the Transition to a New Programming Language
As computing students progress through their studies they become proficient with multiple programming languages. Prior work investigating language transitions for novices has tended to analyze
What questions do developers ask about Julia?
TLDR
A systematic investigation of the questions that developers ask about Julia can help in understanding the challenges that developers face while using Julia, and recommend enhancing support for developers with Julia-based tools and techniques for cross language transfer, type-related assistance, and package resolution.
How Graduate Computing Students Search When Using an Unfamiliar Programming Language
TLDR
This study conducted a study on how computing students search for code in an unfamiliar programming language with 18 graduate students working on VBA tasks in a lab environment and found that students typically search to explore APIs or find example code.
“You have said too much”: Java-like verbosity anti-patterns in Python codebases
TLDR
A collection of Java-Like Verbosity Anti-patterns and a pilot study of their presence in representative open-source Python codebases are presented and discussed as a call for action to computing educators.
Docable: evaluating the executability of software tutorials
TLDR
This work conducts an empirical study on software tutorials, finding a naive execution strategy achieves an overall executability rate of only 26% and a human-annotation-based execution strategy, while doubling executability, yields no tutorial that can successfully execute all steps.
Rules of Program Behavior
TLDR
It is submitted that the RPB framework is valuable to practitioners and researchers as a tool for design and communication and can inform, among other things, the ongoing exploration of “notional machines” and the design of assessments and visualizations.
Benefits and Drawbacks of Adopting a Secure Programming Language: Rust as a Case Study
TLDR
A range of positive features, including good tooling and documentation, benefits for the development lifecycle, and improvement of overall secure coding skills are found, as well as drawbacks including a steep learning curve, limited library support, and concerns about the ability to hire additional Rust developers in the future.
Recommending Code Improvements Based on Stack Overflow Answer Edits
TLDR
Matcha, a code recommendation tool that leverages Stack Overflow code snippets with version history and code clone search techniques to identify sub-optimal code in software projects and suggest their optimised version is proposed.
A randomized controlled trial on the effects of embedded computer language switching
TLDR
This study investigates this practice through a randomized controlled trial conducted under the context of database programming, indicating that the productivity impact of polyglot programming is complex and experience level dependent.
RustViz: Interactively Visualizing Ownership and Borrowing
TLDR
This paper introduces RustViz by example, shows how teachers can use it to generate visualizations, describes learning goals, and proposes a study designed to evaluateRustViz based on these learning goals.
...
1
2
...

References

SHOWING 1-10 OF 72 REFERENCES
Instrument Designs for Validating Cross-Language Behavioral Differences
TLDR
Three instruments are designed that can help identify and validate meaningful behavior differences between two languages to pinpoint potential misconceptions and provide guidelines for researchers and educators in systematically validating programming misconceptions when switching to a new language.
It's Like Python But: Towards Supporting Transfer of Programming Language Knowledge
TLDR
This study investigates the theory of learning transfer using a new tool called Transfer Tutor that presents explanations for R code in terms of the equivalent Python code, and finds that participants leveraged learning transfer as a cognitive strategy, even when unprompted.
Empirical analysis of programming language adoption
TLDR
This paper uses survey methodology to identify the factors that lead to language adoption and reports that open source libraries, existing code, and experience strongly influence developers when selecting a language for a project, and developers prioritize expressivity over correctness when considering intrinsic aspects of languages.
How should compilers explain problems to developers?
TLDR
Because error messages present poor explanations, theories of explanation---such as Toulmin's model of argument---can be applied to improve their quality, and three practical design principles are contributed to inform the design and evaluation of compiler error messages.
Learning second and subsequent programming languages: A problem of transfer
TLDR
It is discovered that most episodes involve planning and that in solving a given subproblem there are typically many cycles of language‐independent tactical planning followed by language‐dependent implementation planning.
Two studies of opportunistic programming: interleaving web foraging, learning, and writing code
TLDR
It is found that programmers leverage online resources with a range of intentions: They engage in just-in-time learning of new skills and approaches, clarify and extend their existing knowledge, and remind themselves of details deemed not worth remembering.
C# for Java Developers
TLDR
This guide reveals the similarities and differences between the two platforms these languages support, and shows you how to leverage your Java experience to get up to speed in C# development with a minimum of difficulty.
Programming Plans and Programming Expertise
TLDR
An experiment that investigated the effect, on experienced programmers, of highlighting the plan structure of a computer program, while they were performing both plan-related and unrelated tasks suggests that the actual content of programming plans does not generalise across different languages.
Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers
TLDR
A taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages, organized by their primary goal, either to teach programming or to use programming to empower their users.
...
1
2
3
4
5
...