DEV Community

Cover image for Advice for New Coders: Fundamentals or Frameworks?
Ben Halpern for CodeNewbie

Posted on

Advice for New Coders: Fundamentals or Frameworks?

Hello, experienced coders and newbies alike! You've likely witnessed the dilemma faced by newbies or are facing this yourselves: When getting started, should you prioritize mastering the fundamentals or plunge into the world of latest frameworks and technologies? How can you strike the right balance between mastering the fundamentals and staying updated with the latest frameworks?

Follow the CodeNewbie Org and #codenewbie for more discussions and online camaraderie!

Latest comments (32)

Collapse
 
dominionworkz profile image
Quincy Bulla

I was told this by seasoned devs:
"Learning a framework without understanding its underlying language and concepts makes it harder" So what I've done was to focus in on the fundamentals to get a grasp so "when" I'm even entertaining the "frameworks" I will have a "frame of reference". Management of the FOMO (fear of missing out) since coming into this industry to me seems like a roller-coaster ride of new things coming often. However, I have lots of things bookmarked, saved on YouTube for later feeding of info, lol. Life learners unite!! Lol

Collapse
 
ska737 profile image
ska737

I think the key here is the word, "mastering". I think the benefit is to get a sold knowledge of the fundamentals, not mastering them. Knowing where to look for the information more than having the knowledge already.

Knowing the Frameworks that you are looking to use, or are already using, is FAR more beneficial. You can have an extensive knowledge of your language, but if you don't know how to correctly use the Framework, then the code you write will be inefficient and behave in unexpected ways.

Collapse
 
gemafawell profile image
Gemini Powell

FUNDAMENTALS.

a) how can you really exercise expertise in a framework if you don't understand what it's built on?
b) it actually makes learning frameworks EASIER when you know the basics first. You can't really Django without Python, or React or Next.js or Vue or Angular without a pretty solid Javascript in your pocket... But with it, you can learn them FASTER.

Collapse
 
emi_black_ace profile image
Jacob Van Wagoner

Fundamentals first. Frameworks are there to make fundamentals easy to do, not take away the need to understand how and why you would want them.

Collapse
 
shaarifkhan profile image
shaarifkhan

I think one has to first understand that the both are very essential in the journey of learning programming.
I have seen people not really focusing on the fundemental aspects of the programming let alone framework's fundemental.
Also there are some people who likes to deep dive in the fundamentals of a language but dont focus much on learning the framework itself.

I think these both two approaches can be summed down to two approaches in learning anything.

One is the top-down approach and other one is bottom-up approach.

One has to identity it for himself what suits him.

One another techniques is outside in, in which you start from the very high level birds eye view and alongside that you keep on learning about the fundementals. I find this technique the best of amongst the others.

Collapse
 
dillonb07 profile image
Dillon Barnes • Edited

Learning the fundamentals is the most important thing to do. Frameworks are used to enhance the fundamental skills and make it easier to do things quickly. I'm a web developer, so I'll give an example using React, NextJS and Tailwind.

Here are my thoughts as a graph

Image description

Basically, if you learn frameworks first, when you run into an error you have no idea how things work so it will be much harder. But learning the fundamentals first means you have a better understanding of how things work.
It's also harder to pick up new libraries/frameworks if you don't know the fundamentals.

Collapse
 
nasheomirro profile image
Nashe Omirro

As someone who did both fundamentals first and framework first, it depends on what you want to do, if that's getting a job then I'd say fundamentals, I would imagine fundamentals for experienced developers are important for when hiring a developer, let alone a junior, if you could not answer a question that to them is basic then they'd probably doubt your skills.

If you want to build things however then just go for whatever floats your boat, the benefit being that you go straight for the juicy parts, for example I got introduced to postgres when I decided to use supabase, a weird starting point since I don't even know the fundamentals of postgres but I already have a database that I can connect my web application to. The way I'm learning postgres right now is kind of blackbox-ish, and there are many gaps in my knowledge about it, but I still understand enough to utilize supabase. Although no one would probably hire me for a backend position

Collapse
 
raibtoffoletto profile image
Raí B. Toffoletto

I I personally see code as language, so before reading poetry I need to understand the language and learn how to put words together. Learn JS , than TS and then specific framework as React. I'm currently learning dotnets EntityFramework, something I haven't really used professionally, but I have a good C# / OOP / dotnet base so makes the process much simpler 🙂

For me there's no point in looking at react if don't understand what "components.map(c => )" is actually doing.

HOWEVER this is my approach, do what feels right to you. There are people who learn by video, I learn by reading. Find your path 😉

Collapse
 
nycbasic profile image
Sam

Hands down fundamentals, have to understand JS concepts and how JS works under the hood of frameworks, so you know what design patterns are best for your use case, unless you don't mind spaghetti code!

Collapse
 
kurealnum profile image
Oscar

Well, it'd be really painful to learn a framework without learning the underlying language. However, learning a language takes a lot of experience, which comes from a lot of practice.

I think it's good to start working with a framework if you really want to understand a language, just because it gives you something to do Just make sure you understand the language a little bit at least!

Collapse
 
darkterminal profile image
Imam Ali Mustofa

For new coders, striking the right balance between mastering the fundamentals and staying updated with the latest frameworks can be a challenge. Here's some advice to help you navigate this dilemma:

  1. Start with the fundamentals: Building a strong foundation in the fundamentals of programming is essential. Understand core concepts like variables, data types, control structures, and algorithms. Learn a programming language thoroughly, as it will provide you with the fundamental principles that apply across various languages and frameworks.

  2. Emphasize problem-solving skills: Focus on developing problem-solving skills rather than just learning specific frameworks. Mastering the fundamentals will equip you with the ability to approach and solve problems effectively. Frameworks may change over time, but problem-solving skills are transferrable and essential in any coding scenario.

  3. Gain hands-on experience: Put your knowledge into practice by working on small projects or coding exercises. Practical experience helps solidify your understanding of programming concepts and enhances your learning. Start with simple projects and gradually take on more complex ones as your skills grow.

  4. Stay informed about industry trends: While mastering the fundamentals is crucial, it's also important to stay informed about industry trends and new frameworks. Keep an eye on emerging technologies and popular frameworks within your area of interest. Understand the purpose and use cases of different frameworks, but don't rush to learn them all at once. Instead, focus on learning frameworks that align with your career goals and complement your existing skills.

  5. Follow a structured learning path: To strike a balance between fundamentals and frameworks, follow a structured learning path. Begin with fundamentals, progress to more advanced topics, and then start exploring frameworks. This approach ensures that you have a solid understanding of the underlying concepts before diving into specific frameworks.

  6. Continuously learn and adapt: The tech industry evolves rapidly, and staying updated is essential. Dedicate time to learning new frameworks and technologies, but avoid getting overwhelmed by the constant influx of information. Choose one or two frameworks that are relevant to your goals and invest time in understanding them deeply. Maintain a curious and adaptable mindset, ready to embrace new technologies when they align with your career objectives.

  7. Seek guidance and collaborate: Engage with experienced coders, mentors, or online communities to seek guidance and collaborate on projects. Learning from others' experiences can help you make informed decisions about which frameworks to explore and how to prioritize your learning journey.

Remember, while frameworks can enhance productivity and efficiency, they are built upon fundamental programming principles. By prioritizing the fundamentals and gradually incorporating frameworks into your skillset, you'll be better equipped to adapt to new technologies and make informed choices throughout your coding journey.

Collapse
 
bitwizcoder profile image
Muhammad Noman

Thanks for your comprehensive clarification.

Collapse
 
maddy profile image
Maddy

Frameworks are built on fundamentals!

Collapse
 
olddutchcap profile image
Onorio Catenacci

Fundamentals.

Learn the fundamentals and you can learn frameworks more easily.

Learn the fundamentals and you can debug code when you use the framework incorrectly.

Learn the fundamentals and choices that the designers of the framework made will be easier for you to understand so you can use the framework more effectively.

Collapse
 
chantal profile image
Chantal

I would advise you guys to first master the fundamentals cos if you don't, trust me they will haunt you for the rest of your coding journey.

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️

It depends 100% on what your goals are.

Learning the fundamentals (what even are those? Vanilal JS? C? Assembly? CPU Architecture? Mining Copper?) will always give you a more solid foundation for a "smoother" learning experience later on.

Starting with the frameworks will get you from 0 to productive a whole lot quicker, meaning you invest less time to start seeing returns in the form of paid work.

I'd say in an ideal world, learning the fundamentals first is always favourable, but for many people that just doesn't fit neatly into their financial reality, so for those cases, there's nothing wrong with prioritising productivity first and catching up on the basics later on. Just don't forget on eventually catching up until it bites you in the butt that you skipped it, because on any career path that's actually going somewhere, this will happen at some point.