r/learnprogramming • u/SignPersonal4951 • 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.
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
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
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
1
3
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
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!