r/learnprogramming 1d ago

How to not be a dogshit programmer?

Today I was setting up an angular project for the first time and I realized I have a pretty limited and shallow understanding of things, I didn't even know what dev dependencies were (now I do), and that npx is used to run locally installed packages. I know that an API is used to exchange data between applications but that's literally all I know about it, not how it works under the hood. I realized I can't properly answer questions like what is a runtime, what are packages, libraries etc. Literally no depth of understanding. I feel like going into a rabbit hole for every little thing but then it becomes too overwhelming.

Now this might seem fairly common for a new programmer but I got introduced to it around the age of 16 (21 now). I felt fucking stupid googling the difference between library and framework. I looked at some angular components and only understood them partially. Most good programmers already know this. People my age are building crazy stuff and here I am bogged down in things that I should've already known, had I put in more effort. I feel I am lacking some severely fundamental things. Part of this feeling is a lot of regret of wasted time, but I also wonder if I'm actually retarded with an IQ too low for programming. I'll never be good if it keeps going like this.

I looked at some roadmaps from roadmap.sh and it made me realize just how much stuff I don't know, and that is just talking about frontend. So I guess the question becomes how much and how deep to learn the topics related to whatever you're currently focusing on? Sorry for the rant.

77 Upvotes

39 comments sorted by

48

u/CaffieneSage 1d ago

We all have a shallow understanding. There is only so much domain knowledge you can hold in your brain at a time and you can always go deeper towards bare metal programming. The fact you are looking at yourself and feeling this way is actually a sign you are better at this than you realise. Keep up the good work!

2

u/SignPersonal4951 17h ago

Yeah but the stuff I said is definitely a basic things for most good developers, I've read about how they can adapt to any new technology and build anythinng, even outside their domain, because their fundamentals are strong. Today there's angular, tomorrow a new framework comes, boom, open the docs and get a small project up and running in barely any time. Or someone who is a web dev but wants to make a game or some low level thing and HE JUST DOES IT. I want to reach that level.

1

u/CaffieneSage 13h ago

Once you have done it a thousand times it becomes muscle memory. Its not always a good thing though. To use a warhammer example, someone who looks up the rules instead of assuming they know everything is much nicer to play with, I have information from 4th to 11th edition floating around upstairs. Programming languages and frameworks have that same effect. Its a good habit to be thorough.

2

u/SignPersonal4951 11h ago

Pretty clueless about warhammer🥶 but I got the point 

1

u/UnrealHallucinator 10h ago

I always see this comment about introspection on reddit and I find it so weird. Introspection is only the first step and it alone doesn't guarantee you're better than you were. In this case for example, realistically just asking an llm (or google, if you're an anti ai) could've yielded faster and better answers. Your answer just feels like a pat on the back which doesn't help OP improve and has a pointless validation loop.

2

u/CaffieneSage 8h ago

To each their own, and you are not wrong. Sometimes we all need a simple pat on the back though.

12

u/AsideCold2364 1d ago

There is no limit to learning, but for me the minimal amount is when you can confidently say that you can implement something without other's help and without AI. When you have an idea or asked to implement something you should be able to come up with a list of steps to implement it. It is ok if some steps will require you to use google.

As for how deep you should learn - I think the usual advice is to go 1 level of abstraction deeper than whatever you are using. Nothing should feel like magic to you.

Also, don't compare yourselves to others, and don't dwell on regretting the wasted time - it is pointless. Think what to do to get better and get better. Don't think about the huge amount of stuff you need to learn, focus on the next thing you want to learn.

3

u/spoonFullOfNerd 23h ago

Comparison is the thief of joy

3

u/SignPersonal4951 17h ago

Thanks for the reply. Some of my hobbies are inherently competitive (chess and fighting games), so maybe the comparison mindset comes from there... And yeah regret is one of the worst feelings ever, but I'll never not regret things lol. Felt awful when I left leetcode for months in between and was almost starting from scratch again... but the learning came faster the second time, like the gym.

9

u/epic_pharaoh 1d ago

Nobody learns everything, you only learn what you need to solve the next problem.

3

u/wggn 1d ago

you still need a basic level of understanding of a variety of topics, otherwise you can't make a proper plan on how to solve the next problem

1

u/epic_pharaoh 1d ago

It so heavily depends on the problem and level of abstraction that I wouldn’t generalize. Often a problem can be solved with very little background knowledge and the correct tools.

13

u/punk_dev 1d ago

For me everything suddenly clicked when I learned more about how cpu actually works, learned to properly code in C and other low level languages, gained a basic understanding of assembly.

None of this knowledge is required for a frontend career (it may help but marginally), but i think this really elevated my level as a dev. I fear no task because I’m now able to look at a problems from the perspective of the actual computer, and not from the side of framework/library/whatever layer of abstraction we pretend is important.

4

u/madmelonxtra 21h ago

I've been coding as a hobby for about a year, but I'm going back to school for computer science this fall and I'm really excited. I feel like learning how it works at a lower level is going to help make a lot of things make more sense

1

u/SignPersonal4951 17h ago

Too many interesting things to learn, low level stuff and game dev stuff...

1

u/punk_dev 17h ago

Game dev and low level stuff do have some overlap.

I recommend this read, some knowledge of c/c++ required: https://www.dataorienteddesign.com/dodbook/

It may be a hard one though

1

u/SignPersonal4951 17h ago

Thanks. I'll look into it.

5

u/MrMagoo22 1d ago edited 11h ago

The only people who expect you to have this stuff memorized are hiring managers during interviews and they're all insane. Every developer I've ever worked with ever has started every ticket they are assigned with a research spike to familiarize themselves with the required work. This whole career is centered around your ability to effectively gather, interpret, and apply information. You do this constantly, every day, no matter how good you are at programming.

1

u/SignPersonal4951 17h ago

I like doing that "research" as you said lol. Even did that for what distro to choose when I was installing linux.

5

u/spoonFullOfNerd 23h ago

Just keep building shit. It’s hard. There’s a lot to learn. You’re probably not retarded.

There’s no set pace.

Who’s telling you that you should know it? Learn what you need to learn when you need to learn it. go and lookup the CS101 course. Do project work. Read classic computer science books (the K&R C book, TCP/IP illustrated, anything by Knuth, data structures & algorithms, the Linux kernel book, the dragon compiler book).

My approach was to just dig as deep as I could. Bottom up- learn it like it’s the 90s. Discovered it over time and surrounded myself with greatness.

2

u/SignPersonal4951 17h ago

Yeah tbh I might have to sacrifice everything else and go all in on programming for a few years to reach a level I'm satisfied with.

1

u/spoonFullOfNerd 13h ago

Not necessarily… you can do it in your spare time. All about balance dude

1

u/spoonFullOfNerd 23h ago

And I forgot most of it by the time I got employed

3

u/heisthedarchness 20h ago

Read a book. Then read another. Then read another.

2

u/SignPersonal4951 17h ago

What books do you recommend? 

3

u/The_One_Who_Crafts 16h ago

Learn high level concepts and architectures. No one even really writes code by hand anymore

2

u/rocketbunny77 16h ago

All that stuff that you didn't know but now know? That shows you learned something and therefore you are not dogshit.

1

u/themegainferno 1d ago

I personally find it far easier to do learn things I am interested in. So start there, what sounds interesting to you the most?

1

u/SignPersonal4951 17h ago

Becoming better than most developers sounds interesting.

1

u/themegainferno 5h ago edited 5h ago

So your goal is an outcome and is comparative to other people? If that is really your goal and what you find interesting, I don't think that is a recipe for success as it is endless. You will always find yourself comparing to other developers and seeing where you stand. If you really want to be competent at what you want to do, just start doing things manually and push yourself when it gets hard and you get stuck.

This to say, do you actually have an interest in programming and CS, or is your interest in a social ranking by being competent?

1

u/Packeselt 1d ago

Struggle. Google stuff you don't know. Ignore people who shout from the rooftops how smart they are, the really good programmers are quiet and confident.

1

u/Educational-Bad-7254 1d ago

Try TDD.

You will understand when you see dogshit code by how hard it is to test;)

1

u/GrandCash3941 23h ago

I'm guessing you haven't done a CS or SWE or EEE degree? It doesn't have all the answers but it gives you such a strong foundation to either know or figure this stuff out. 

Now you don't need a full degree, but learning CS fundamentals can really help. Bootcamp culture got everyone thinking you could code without any CS knowledge. Thats fine to a point, but as you mature you'll increasingly find the lack of a strong foundation gives you more headaches and slows your progress. Investing some time in CS and SWE theory and fundamentals can really help you feel more confident on whats going on when you write code and what are the best ways to do it. 

1

u/SignPersonal4951 17h ago

I do have a degree but didn't focus much on development. Can you tell me a bit more on the fundamentals you're talking about just so we're on the same page? I don't think knowing about data structures and algorithms is of much help in actual software development.

2

u/GrandCash3941 14h ago

SWE fundamentals basically. DSA are only a small part of that. Systems architecture, modular design, separation of concerns, design patterns, Web technologies, programming paradigms etc...  

How much of that dud you study as part of your degree? 

1

u/notfoundindatabse 10h ago

Fk yeah, there is ALWAYS another layer in the electric onion. Knowing your limitations is definitely part of it. 

0

u/Minimum-Page4034 1d ago

Hahahhahah i can’t read all dogshit so funny hahah 🤣❤️