Hello, experienced coders and newbies alike! You've likely witnessed the dilemma faced by newbies or are facing this yourselves: When getting start...
For further actions, you may consider blocking this person and/or reporting abuse
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.
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
@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!
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
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.
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
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.
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!
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!
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.
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.
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.
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.
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 😉
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:
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.
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.
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.
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.
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.
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.
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.
Thanks for your comprehensive clarification.
Frameworks are built on fundamentals!
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.
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.
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
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
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.
Fundamentals first, frameworks next. At the end of the day, frameworks are just implementation details. They are merely a transitory phenomenon. There will always be implementations better than yesterday's. Fundamentals are the "why", and Frameworks are the "how". The why is always important than the how.
Frameworks offer significant convenience, benefits, and safety. You should absolutely use frameworks and libraries where you can, especially ones where you benefit from good test coverage.
You should also learn the fundamentals. I know how to write SQL and the MySQL client is super usable, but Sequelize offers so much simplicity and value. The test coverage offered by Sequelize is super valuable.
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.
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
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.
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
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.
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!
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!
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.
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.
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.