How can you leverage existing programming languages to learn new ones more effectively?
Learn from the community’s knowledge. Experts are adding insights into this AI-powered collaborative article, and you could too.
This is a new type of article that we started with the help of AI, and experts are taking it forward by sharing their thoughts directly into each section.
If you’d like to contribute, request an invite by liking or reacting to this article. Learn more
— The LinkedIn Team
Learning new programming languages can be challenging, especially if you want to apply them to systems design problems. However, you can leverage your existing knowledge of programming languages to learn new ones more effectively. In this article, you will discover how to use four strategies to transfer your skills, compare and contrast different languages, adapt to new paradigms, and practice with real-world scenarios.
One of the first steps to learn a new programming language is to identify what skills you already have from your previous languages. For example, if you know Java, you can use your familiarity with object-oriented programming, data structures, syntax, and control flow to learn C# or Python. You can also look for common patterns, concepts, and features that are shared by different languages, such as variables, functions, loops, arrays, and classes. By transferring your skills, you can reduce the learning curve and focus on the unique aspects of the new language.
-
Elvis Aghaulor
Full Stack Developer | Angular | JavaScript | .Net | C# | Nodejs | ExpressJs
Though the question should be with How does your knowledge of programming languages make it easier for you to learn other programming languages. The reason why it's so from my perspective is because most programming languages are built on the same basic principles. So it's just you learning the syntax of these principles in a new language then you can move on to specific features just available in the new language you're learning. So the learning journey becomes much easier because you're now basically learning a new syntax and not learning the basic principles afresh.
-
Anirudha Babshet
Software Engineer II at Chewy
Transferring existing skills can happen only when the intention of learning is to recreate and reproduce. Take a classic example of a print statement, everyone writes "Hello World" to begin learning a language. Now thinking about how the print statement worked internally is the treasure hunt. Then the next step can I create my own print statement. That's the mindset that would train one's brain to be language agnostic.
Another strategy to learn a new programming language is to compare and contrast it with your existing languages. For example, if you want to learn Ruby, you can compare and contrast it with Python, which has a similar syntax and philosophy. You can also use online tools, such as Rosetta Code, to see how different languages solve the same problem. By comparing and contrasting, you can learn the strengths and weaknesses of each language, the trade-offs and design decisions they make, and the best practices and conventions they follow.
-
Govind Arun
Principal Architect - Embedded Product Engineering at Quest Global, Strategist & Leader
Learning the first language helps in understanding 'Principles of Programming Languages'. We just need to use the right order. In our accdemic curriculum we learned in the following order and learning the first one was always helpful for the subsequent ones: 1. Pascal - imperative and procedural programming language 2. Assembly 3. Micro-controller 4. C - general purpose computer programming language 5. DSP - Specific
-
MBA John
full-stack developer
One thing I have found useful is outlining the philosophy in problem solving, syntax semantics of the programming language I already know and the one I'm learning; make a comparison of both programming languages and take note of what I already know and what I don't know.
A third strategy to learn a new programming language is to adapt to the new paradigms that it introduces. For example, if you want to learn Haskell, you need to adapt to the functional programming paradigm, which is different from the imperative or object-oriented paradigms that you may be used to. You need to learn how to write pure functions, avoid mutable state, use recursion, and work with higher-order functions and lazy evaluation. By adapting to new paradigms, you can expand your horizons, improve your problem-solving skills, and appreciate the diversity of programming languages.
-
Ismael Domínguez
Computer Sciences Researcher, Software Engineer, Backend Developer and another hobbies
It is important to have the intention to continue learning, and to have an open mind, accept new ideas and relearn what has been learned. You can't fill a full jar.
-
Anirudha Babshet
Software Engineer II at Chewy
The simplest intention of programming languages is to enable humans to provide instructions to a machine! There are many different ways these instructions can be provided it can be declarative, procedural, imperative, functional and object oriented. Every programming language may focus on one or many paradigms which makes it unique. Learning programming languages understanding paradigms and patterns will definitely help transfer of skills while learning every programming language.
A fourth strategy to learn a new programming language is to practice with real-world scenarios that are relevant to systems design. For example, if you want to learn Go, you can practice with scenarios that involve concurrency, distributed systems, microservices, or web development. You can also use online platforms, such as HackerRank, LeetCode, or CodeSignal, to test your skills with systems design questions and challenges. By practicing with real-world scenarios, you can apply your knowledge, gain confidence, and showcase your abilities.
-
Malepati Bala Siva Sai Akhil
Staff Engineer at Intel | Ex-VMware | MS in CS at USC
This is one of the most important aspects, since generally programming languages provide a vast set of functionalities, with the recent needs of developers being able to be polyglot, it is very difficult to know each and every functionality when learning new programming language. One should always try to understand the major aspects of a programming language, but along with that, working on a real world example utilizing similar public references, for example from prominent public GitHub repositories would be very useful. In the process, one should also focus on understanding well defined and common paradigms and patterns used in the real world scenarios (for example libraries or code snippets to accomplish specific aspects of a system)
-
Anirudha Babshet
Software Engineer II at Chewy
Starting off with some basic resources like tutorialspoint or w3schols. Some resources have online compilers so no setup required. Of course then climbing the ladder to hackerank and leetcode. But it's all about building a brain for pattern recognition and not completing the problems within each of the resources.
-
Honey Sukesan
Senior Software Developer in Embedded software / Automotive & Healthcare domains / Software design and development / Continuous learner / Programmed in C, C99, C++03, C++11, C++14 / Linux / QNX / RTOS
Following resources from polyglot programmers would also help as they might have already been through the learning curve and has shared tips/tricks when moving from one programming language to another. The most important thing to learn any programming language is hands-on coding. Nothing can beat your hands-on experience with a project. Identify a real-world problem, try to solve that using the programming language you want to learn, research on the issues you encounter, ask queries in forums/read materials/blogs etc. Moreover, never give up until you solve the problem.
-
💻 Sasa Savic 💻
Founder at Savicsoft
If you are experienced in one programming language, it shouldn't be hard to transition to a different one. The core principles are the same in every language. That said the tricky part nowadays is not the language itself but the frameworks and tools that come with it. Those are going to take most of the transition time.