DEV Community

Cover image for Advice for New Coders: Fundamentals or Frameworks?
Ben Halpern Subscriber 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!

Oldest comments (32)

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

Why not both but not at the same time?

I am not a front-end developer but if wanted to become one, this is I would do.

  • Google for things like why react? site:dev.to to understand what the fuss is all about
  • Write down whether I find that interesting or not
  • Follow the getting starting with react tutorial on the react website
  • Try to think of something simple and meaningful I could build with it
  • Find a mentor and ask for guidance on how she would build that, ask if she can scaffold a project for me
  • Write down unit tests to understand better typescript features I'm not familiar with
  • I'm afraid with CSS so I would use tailwind css to get started faster because that one was designed for humans
  • I would focus on a part of CSS like flexbox and try to understand it from the ground up

But more importantly,I will do that one step at a time, making one experiment at a time instead of feeling overwhelmed.

Because Life is a Picture, But You Live in a Pixel — Wait But Why

Collapse
 
gemafawell profile image
Gemini Powell • Edited

SAME TIME THOUGH, a thought:

CSS: Flexbox, Grid, go home - then Bootstrap and Tailwind. Knowing how it connects makes it easier to program.

React: how can you build a React component and know what it does if you don't understand at least enough JS to get to the conversation about the DOM in the first place (which opens the shadow-dom and then introductory React conversation)?

It's important to do some of the work simultaneously if you want to build a good base, but you've got to have a rudimentary understanding first or it all looks foreign from jump... React tutorials today largely start with a JavaScript refresher.

Collapse
 
alinp25 profile image
Alin Pisica

I don't think that you will go a long way before realising that you need the fundamentals, no matter which path you choose. Yes, you can focus on learning a specific framework, but there will come a time, sooner or later, when you will realise that you are missing some important concepts.

Just think about starting learning React. Yes, you will manage to make some cute web apps just following the tutorials... But when you will end up with some useEffect dependences that trigger one another, or state managing and entering the callback hell, that is the moment when you will want to step back and take another look at how things go under the hood.

Yes, there are lots of people that make apps just by following guidelines... But do you want to end up with just another Bootstrap/Wordpress app? (No hate towards Bootstrap or Wordpress)

I would go for something in between. Get some basic knowledge. There are plenty of resources out there. Go for freecodecamp, do the basic stuff... Learn some algorithmics basics... Iterating an array, backtrack a matrix to solve a tic tac toe game, do some basic api fetching using postman just to understand the way everything connects, learn to build a C project from scratch, get some hands in bash (just to list and iterate through some documents)... Maybe they will look boring at the beginning, but they will come a long way. In parallel, in order to get some visual feedback, yes, you can go through with a framework... But never, I repeat, NEVER, underestimate the power that low stuff gives you.

Collapse
 
giuliano1993 profile image
Giuliano1993

I think it is really really important to get the basics right first, then you can move to the framefork. If your starting as a developer, you need to understand the mechanisms that moves the language you're using. Without that, past the basic features you'll get stuck, without knowing how to debug and if the errors is from the language or from the framework.
You don't necessarely need to get deep into your language of choice at first, but the basics should be solid before moving to any framework.
You can surley learn the advanced stuffs with time and practice, and that allow you to keep pace with everything, but all that only constructing solid basis

Collapse
 
luciacenetiempo profile image
Lucia Cenetiempo

I understand the dilemma of balancing fundamentals and keeping up with the latest frameworks. It's crucial to build a strong foundation while staying open to new technologies. By prioritizing fundamentals and selectively exploring frameworks, you can maintain a solid understanding while adapting to industry trends. Remember, continuous learning and practical application go hand in hand for success in frontend development.

Collapse
 
maurerkrisztian profile image
Krisztián Maurer

Learning a framework without understanding its underlying language and concepts makes it harder and slower. E.g. start by learning JavaScript, Node.js, and TypeScript before diving into Nest.js. This foundation will not only make learning Nest.js easier and faster but also enable you to learn other related concepts more quickly, as many things are built upon these fundamentals.

Collapse
 
pengeszikra profile image
Peter Vivo • Edited

Maybe Nest.js is not the the best framework for beginers, because that is use decorators which is not part of pure JS. So without babel that code is not able to run.

I think best practice is learn fundamentals is learn pure JS first, best without HTML. I recommended to use devtool console only. If someone is familiar the string, array, object, JSON. Learn JS / TS on codewars

Collapse
 
mdledoux profile image
Martin Ledoux • Edited

@pengeszikra, a couple thoughts.

First, let me address your 2nd paragaph:
I do agree with your idea of learning JS (or TS first), to get the language down before dealing with manipulating the DOM (rendering HTML) - just learn the language! Just learn how to program - don't worry about the UI yet. Hower, I might suggest installing node.js (and maybe even ts-node) and do it from the terminal, and so that you can run files as scripts. If the goal is to learn TypeScript, you can't do that directly in the browser console.

This brings met o my next point, addressing your first paragraph:
I would push back on that paragraph a bit - the article was intentionally vague, so IF the goal of the anonymous "newbie" is to learn TypeScript, then Nest.js (for backend) or Angular (for frontend) would be fine frameworks to learn.

Unlike most things in this discussion (where learning the underlying tech is very important), it's probably fine to get going with TypeScript without starting with pure JavaScript. (in the backend, there are already TS-fist runtimes, and that may come to the browser sooner or later)

And to your point, yes, babel may be involved, but I don't see how that is at all relevant or concerning - the frameworks take care of that all for you - you can use those frameworks without even knowing that babel is grinding away in the background.
For that matter, Angular also used webpack (and now uses esbuild), but I'm quite unaware of that as I work on my projects. My point is, this concern isn't really a roadblock.

Cheers!

Collapse
 
ben profile image
Ben Halpern CodeNewbie

I personally think you have to go with whatever direction better lets you understand the other direction.

Some people need to have that practical application, some people do better with fundamentals first. Take a main direction but don't neglect the other side.

Collapse
 
mdledoux profile image
Martin Ledoux • Edited

This is a good point - a chicken-and-the-egg question.

However, I wonder how many people who think they need to start with something very practical are mistaken, and end up impairing their growth-rate and learning curve.
I have worked with people who skipped these steps, and while they're very good at getting things done, they often aren't done well, and end up very unmaintainable.

They usually also don't know what they don't know - and it becomes normal to go on not knowing that they're a bad programmer, not recognizing the mess they leave. I don't mean to sound harsh - I was this bad programmer at one point, but certain conditions led me to realize it. I looked around, and wasn't sure that the people around me had ever had this eureka moment.

Collapse
 
brnms profile image
Bruno Santos

I would recommend learning and mastering the fundamentals, but I know that when it comes to find a job frameworks are always required, in this case I would suggest to learn both, but focusing more on fundamentals

Collapse
 
sohamboratee profile image
Soham • Edited

Now I struggle to explain myself a bit, so just hear me out... Why not learn the fundamentals, while also trying to create your own version of a framework?

For example take JavaScript, I have learnt DOM manipulation and OOP, I would research a bit about React, see how it runs under the hood, and try to create my own version. It doesn't have to be anywhere near as good as React or with all the features. This way you learn by yourself how to best optimize your code, make important decisions about how it's designed, etc.

Do you have to create your version of a framework everytime? I'm not sure, it's up to you. But learning-wise this method has helped me tons!

Collapse
 
ranggakd profile image
Retiago Drago

I believe you should prioritize the fundamentals first. Along the way, you can try the cutting-edge frameworks while continuing to learn the fundamentals.

Or my brother says
In my opinion, establishing a strong foundation in the fundamentals is paramount. As you solidify these skills, it's beneficial to also experiment with contemporary frameworks, which allows for an efficient and comprehensive learning experience.

Collapse
 
danku profile image
Daniel McMahon

A common trend tends to be developers listing Frameworks on their CV rather than core languages, however the more senior/experienced developers tend to go the opposite way - Frameworks while popular are ever changing in popularity and being able to work Framework agnostic i.e. have a really strong foundation in the base language and work around that will stand to you more in the long-term. That said depends on your job, if you're going for a React position always helps to mention your React experience!