DEV Community

91sameer
91sameer

Posted on

I think there is too much to learn in programming

I am confused there is soo many things to learn. I don't think I can learn enough to become a good programmer

Top comments (36)

Collapse
 
nicozerpa profile image
Nico Zerpa (he/him)

Hi! I have bad and good news (but the good news outweigh the bad news.)

On the one hand, you're right. There's lots and lots of things to learn. I've started learning my first language (JavaScript) when I was 13, as a hobby. Now, I'm 31 and I'm still learning about the language.

On the other hand, you don't need to know everything to be a good programmer. I became a professional dev at 18 years old. At that time, I knew far less about JavaScript and other languages than I know now, but that didn't prevent me from get jobs and build amazing things in my career.

Think of programming languages as tools. The more tools you have, the more things you can do. But you already can do many things with the tools you already have.

Collapse
 
theowlsden profile image
Shaquil Maria

Think of programming languages as tools. The more tools you have, the more things you can do.

Exactly. You use the tools to build something, but YOU are the one building it. It's more about building your critical thinking and your resilience to figure things out, than about learning something specific.

Collapse
 
sargalias profile image
Spyros Argalias

There is too much to learn, but the same applies in any industry. If anything, in programming, you can know far less before you can get a job (compared to a 3 year university degree).

In fact, a friend of mine started learning a few months ago and he's doing really well. He should be able to get a job soon.

My advice is to start learning only what you need. Everything else can come after. You don't need to know everything to be a good programmer. You just need to be good at a few things, such as HTML, CSS, SASS, JavaScript (if you're doing front end). Know the basics of some other things, such as git, security, accessibility. Make a small portfolio of anywhere from 1 to 3 projects (some courses go through projects as well). Then, you can start as a junior developer and keep learning from there :).

You still have to work hard though :). It takes many years to get good at any field.

Collapse
 
cariehl profile image
Cooper Riehl

I remember thinking the exact same thing when I started programming. I looked at all the awesome things other people had made, and then I looked at my simple "hello world" C++ program, and thought "there's no way I'll ever be that good."

That was 13 years ago, when I was in 8th grade. Now, I have an undergrad degree in computer science, and I've been programming professionally for over three years. And I still look at all the awesome things other people are making, and I still wonder if I'll ever be that good. But at the same time, I'm able to reflect on the past 13 years and acknowledge just how far I've come.

You're correct that the world of programming is massive, and it can feel overwhelming. That's also part of what makes it so enjoyable - there will always be something new to learn. Programming is a lifelong skill, and I'm sure I'll be learning new things about it every single day for the rest of my life. I will never know "everything", but I will at least know "some things". More importantly, I'll know "enough" to make some cool projects of my own, and then I'll learn how to make them even better.

Everyone's journey is different. As long as you enjoy programming enough to want to keep doing it, I guarantee you will find success. Even if your success looks very different from my success, or anyone else's success, that's okay - it's still success!

Collapse
 
siddharthshyniben profile image
Siddharth

Of course you can. It just takes time. (I started learning 3 years ago when I was like 10 and now I can call myself a "Javascript intermediate")

Collapse
 
codeboi profile image
Timothy Rowell

its me!!! timothy

Collapse
 
codeboi profile image
Timothy Rowell

SIDD

Collapse
 
siddharthshyniben profile image
Siddharth

Sorry, what?

Thread Thread
 
codeboi profile image
Timothy Rowell

oHHH u have the same name as my long-lost friend!

Thread Thread
 
siddharthshyniben profile image
Siddharth

Long lost friend, huh? I hope you find him/her (mostly him)

Collapse
 
macdevign profile image
macdevign • Edited

Yes, it can be overwhelming and one way is to focus your learning is to build own solution that can be developed over days not weeks. Apply 80/20 rule to learning whereby 20% or less of learning are really useful for your own project, so how do we know what is 20% is ? Simple, just get started to build solution (eg web application, desktop application , mobile app, macro ). When one focus on building solution, he soon know what is important and the area to focus on because he solving a real problem. Without a purpose, a lot of time is wasted for the sake of learning.

If one really want to learn something, learn by doing, building something useful, and the knowledge,experience and skill will then be developed along the way. Programming is not just one particular skill or language competency but many skills, (eg sql, unix tools, regex, xpath, css selector ) and all these can be learnt holistically by developing a solution.

Collapse
 
theowlsden profile image
Shaquil Maria

You won't become a good programmer in a day or a year. Being in this space means that you are willing to fail day in and the day after, but while failing you must be open-minded enough to learn from every mistake.

Don't be confused by the big stacks and all that is out there. Start with finding out what you want to do. From there research the basic. RESEARCH, not learn,. If you dive head-first your chances of getting confused increase significantly. Once you understand what are the steps you need to take (the basics of what you want to do), that is when you would want to start learning something.

The bottom line is you do not need to learn every single thing to become a good programmer, even software engineers that have been doing this for years are still learning every day. Just take one step at a time.

Collapse
 
egilhuber profile image
erica (she/her)

Programming is kind of like medicine that way - there's a LOT to learn, so you only really learn what you need to. From there, you learn how to find information you're looking for.

Once you get the overarching concepts down (design patterns, oop, clean code, etc), putting together quirks and specifics of individual languages isn't that bad. If you know how to do something in one language, you can then use that knowledge to hunt down how to do it with a different language (or find something better!).

I'm going to assume you're a beginner with no roadmap. There are tons of resources out there to help you get started. I'd recommend figuring out what type of development you want to do (web, backend, gaming, etc), maybe find a stack you like (i.e. MERN), and start hunting for "beginner roadmap for [what you want to learn]".

Remember, we all started with Hello World.

Collapse
 
jonahgeek profile image
Jonathan Mwebaze

You need to understand that it takes patience, commitment, and practice. There are a lot of ups and downs, that's the truth. But every great developer once didn't know how to link stylesheets, but guess what, they kept trying every day and some day, they knew how to develop an entire website. Just practice and stay committed. The day will come

Collapse
 
andreidascalu profile image
Andrei Dascalu

That's why nowadays it's hard to be a true "full stack" dev. Nevermind that this concept applies just in web development (you also have desktop development by that's not really part of full stack, is it?) nowadays even the classic parts of full stack need to cover more and more.
As a tech lead/architect there's nothing more annoying that encountering devs who think development is just about writing code that accomplishes a requirement.

Collapse
 
redhap profile image
HAP

Don't get discouraged. There's a lot out there, yes. But as many of these fine folks have said, you will not attain mastery in a day, a month, or a year. True mastery is to be able to pass on what you have learned to others while still continuing to learn and improve.

Anyone who sits back on their laurels and says "I am a master" without constant nurturing of their skills and craft is someone you don't want to stick too closely to. I'm on my way to being 51 years old and I've been in the business since 1992. I have a lot of experience, but I also have enough perspective to realize I still have a lot to learn.

With the right attitude, this is a challenge that will open up a careerlong/lifelong journey for you. There will be ups and downs like anything, but it will be rewarding.

If I have any "real" advice for you, it's this:

  1. Learn the basics. Frameworks and paradigms come and go (especially in UI).
  2. Learn how computers work. The C programming language is great for that. This will help you understand why some things work better than others and when to use which.
  3. Do some soul-searching about what type of work fires you up. Is it data analysis? Mathematics? Game programming? Networking or OS components? Distributed applications? This will definitely help you narrow down the types of study, language tools, concepts, and companies you should be studying.
  4. Once you figure out these types of things, the last thing I heartily recommend is to get internships or network with programmers and user groups. Seek advice and knowledge wherever you can.
  5. This can get all-consuming, if you're not too careful. Be sure to take time for yourself and personal interests. People who code all the time can burn out and eventually hate what they are doing. Don't fall into the trap of comparing yourself to others based on time spent coding.
Collapse
 
mohebyarahmadi profile image
Moheb Yarahmadi

The ultimate formula for being a good programmer is:
Algorithm + Data Structure = Program

the language itself is just a tool and no more.
don't waste your time to focus on frameworks and just learn the language itself and in conjunction with algorithm and DS you can be a programmer who do programming not copying it.

imagine a tree, the roots are algorithm and DS, the trunk is language and the branches and leafs are frameworks and libraries which always going to change during seasons but trunk and roots are there for long long time. invest on root and trunk

Collapse
 
kaelscion profile image
kaelscion

I can understand how you would feel that way. It is extremely overwhelming. But perhaps it doesn't have to be.

Let's look at it another way: "I want to learn programming". Is like saying "I want to learn to build houses". If you just showed up on an empty plot of land, with all the tools and materials you needed to do the job, but not the experience, you'd probably walk away going "Screw this!".

Now, let's narrow the focus a little bit. What if instead of "I want to learn to build houses" we said, "I want to learn to build Dog Houses". Still too much? How about "I want to learn to build birdhouses". Still too much? "I want to learn how to properly hold a hammer."

The point is, "programming" is an industry. Just like "Construction" is an industry. But I have never even heard of a person who is a master carpenter, electrician, plumber, A/V tech, HVAC tech, locksmith, mason, foundation expert, etc. Conversely, there are many extremely successful tradespeople that do just one thing. Things like roofing and nothing else. Or installing generators and nothing else. Or painting and nothing else.

Now, with the scope narrowed like that, we can see that it might not be so bad. Lots of people talk about needing to "see the big picture" in programming. But that should never be a requirement for somebody just starting out. Seeing the big picture means that you'll know what to do with it and that only comes from understanding the pieces in play. Be kind to yourself and think small. "I want to learn HTML" will inevitably lead to "okay, this is cool. But how do I give it some flair and style?", which will lead to CSS. From there, you will say "that's great! But now I want my code to do some fun stuff depending on how I interact with it", which will lead to Javascript.

Interested in the back end (basically the part of programming that you can't "see")? "I want to write code that solves math problems for me" which would lead to Python (just an example, calm down Rust/Go/Node folks :P). From there, "How do I store the solutions to these math problems? It's a pain to copy/paste them into GSheets" which will lead to SQLite and SQLAlchemy, and so on.

So yes, there is a lot to learn. But you are so capable! The main thing that scares us all off is assuming we "need to know it all". We don't. And honestly, we shouldn't. Pick something small, the smallest task you can think of, and learn to do that. Too hard? Identify the part that trips you up the most and learn that more completely. You'd be surprised where the road leads you! But you can do it!

Collapse
 
samjarman profile image
Sam Jarman πŸ‘¨πŸΌβ€πŸ’»

It gets easier and patterns emerge. But yes there is a lot and there will only ever be more.

I find I like to know about as much as I can at high level so if I ever think a thing could be part of a solution, I can reach for it, learn more and confirm.

Chin up. It’ll be fun.

Collapse
 
siddharthshyniben profile image
Siddharth

What are you learning though?

Collapse
 
kspeakman profile image
Kasey Speakman

You are 100% correct about there being so many things to learn. It is troubling to see the stress that new devs face. Especially in the web space with all the required learning, it feels impossible.

But there is also an equally intense joy on the other side of climbing that cliff. And even knowing nothing about you, I feel confident that you can do it. Search and experiment enough to solve your most immediate problem (e.g. how to setup dev environment or how to read a file). Then keep doing that step by step until you have worked your way to the goal.

For now, ignore all the posts saying "X things every developer should Y". (Or maybe permanently ignore them -- find a mentor instead.) Do what you gotta do to make it work first. Code quality is something you can learn about later. You first need to build confidence that you can do it. (You can!)