DEV Community

I think there is too much to learn in programming

91sameer on May 14, 2021

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

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!)

Collapse
 
pavelloz profile image
Paweł Kowalski

Well, "good programmer" is very subjective and very hard to define. Try by making it concrete, ie.
"I want to be able to style an application from figma design with good performance scores" - thats more measurable than mythical "good programmer". After 10+ years i dont know if im good, but i know what i can do :)

Collapse
 
apolloinfinity profile image
Javier Ramirez Roa

Whatever you are striving to be as a developer, one thing that has helped me quite a bit in becoming a better developer is learning about the Pareto Principle or the 80/20 Rule. 80% of what you write as a programmer comes from the 20% of the most important concepts in programming.

Collapse
 
andreidascalu profile image
Andrei Dascalu

Full stack is not a property of development in itself, it's an approach that depends on developer, which may choose to attempt specialising or go for a full stack.
But I'm denying that desktop development can't have the concept, I'm saying that when people talk about full stack, it's always with respect to web development, which pushes desktop technologies out of such discussions.
Which is unfair, but my overarching point is that it's difficult to NOT specialise since if you add up everything, covering any domain to the full meaning of a branch is next to impossible (and be decent at it).
Eg: if you don't disconsider desktop, then being a front-end developer alone would mean you need to be good at mobile/web/desktop frontends. Which makes people crazy about adopting cross-platform technologies.
Backend: you need to choose your knowledge so that it covers any backend (data storage / transfer which involves any number of languages / technologies and approaches).
So if you narrow your scope to frontend but expand your frontend skills, you can cover more of this domain in a way that's more reaching.
If you try for the full-stack experience, spreading your knowledge around subsets means you'll be good in very specific environments. Eg: I'm good in a Go + React + Android environment, but I will deeply suffer in an environment that chooses Angular. Not that I couldn't pick it up, but it would take a bit to become good/really efficient at it (not productive at writing mergeable code, that's quite easy). And if I were to spend enough time in that environment, I would start losing skills in other areas which would later require picking up again.
Not sure which is better, a jack of all trades and master of none or a master of a couple of trades. Though FWIW these are some studies saying that it's really beneficial that when you're younger to try to be a jack of all trades at the expense of mastery and slowly specialise over time.

Collapse
 
valeriavg profile image
Valeria

Pick up a fun project and learn by doing. Rinse and repeat over and over. Start getting paid for it somewhere along the way:-)

You're right there's too much to learn and something new appears everyday. You'll never know it all, but it's unnecessary. Be a fast learner, stay curious and don't be afraid.

Collapse
 
panditapan profile image
Pandita

You're very right and this is something I've had on my mind lately, I see a lot of people very overwhelmed by the learning process and it came to me that maybe we just haven't set up a good learning roadmap that isn't loaded with a million different things.

Not only that, we've allowed people to think that the only way to find a job in the industry is by learning web development when there are so many more areas you could focus on that don't change as quickly and might not be as overwhelming.

There's data analytics, machine learning, desktop dev, web dev, mobile dev, UI/UX dev, automation, QA, networking (like cables and stuff ouo), industrial automation, project managing, business analysis, computer science, DevOps, database administration, SAP and so on (and I probably missed a few important ones!).

As a start, it might be better to look into each one of these areas I mentioned before and see what you really like! maybe development isn't your forte but you're amazing at listening to a client and gathering the requirements for a product, or maybe you're really good at thinking up possible test scenarios and finding defects/bugs/errors and such. Software development is a bit more than just development and we need people who don't just, program!

Just food for thought but I definitely feel you pats

Collapse
 
rishitkhandelwal profile image
Rishit Khandelwal

Learn whatever needed to make what you want, don't get overwhelmed with all the things out there, there is always more to learn everywhere in life, whether it's with a sport or a tech stack, you will always have something to learn.

Collapse
 
aghost7 profile image
Jonathan Boudreau • Edited

I feel you. What I do is start by researching whether it is something worth investing my time into. Set a goal, and try to figure out how much the technology in question helps you reach that goal. If it doesn't really contribute, or overlaps with something else, you can cut it out of your list of things to learn. Prioritize.

Collapse
 
l4znet profile image
Charly Escalona

In my opinion that a big mistake to think you must learn / know all languages, learn a language, until you are ease with it, learn another...

That not really important to know completely a language, that most important to know how to search on Google to find a answer. year after year you will get more habits and be more effective and at the end you will be more ease in this language

A good programmer are someone who can code something by the cleanest way, no matter if he use google or his brain, just try to not copy paste, that better to write, learn make mistake, re-write, learn...

and to finish, by making mistake you will search on google and discover
the ways to do that of other developers.

Collapse
 
soultone profile image
mhacxermood914 • Edited

There is always a lot to learn in any field...so do not worry about..
First of all programming equal logic..
You've to be a problem solver,
1.Learn algorithmic concepts
2.Switch to a specific programming language
3.Use algorithmic to apply solution to a specific programming problem
4.Practising by making a lot of coding challenges
5.Have the ability to read other people code(i mean how they code order to right better and cleaner code too)..

This way you'll be more efficient...it's my own point of view

Collapse
 
javacode7 profile image
JavaCode7

It is not hard to be a good programmer. I have been doing python for about 2 years now and I call myself a python expert (I am, sort of).

Collapse
 
devjaiye profile image
Dayo Jaiye

Check my post on tips for software engineers

Collapse
 
dylanesque profile image
Michael Caveney

Yup, I'm working on a blog series that addresses this very thing: dev.to/dylanesque/what-you-need-to...

Collapse
 
geminii profile image
Jimmy

Clean code book could be really the solution 😉

Stay focus on one subject then practice and pass to the next 👍

Collapse
 
keskyle17 profile image
Chris Briggs

Become a jack of all trades, and master of one. When you reach that goal you can move to being the master of two.

Collapse
 
devjaiye profile image
Dayo Jaiye

Yes there is, what language are you learning?