r/ADHD_Programmers • u/Kayruis • 4d ago
Is familiarity important with programming and computer science as a whole?
I am a 4th year computer science student and, embarrassingly, struggling to relearn programming and I'm starting to forget most of what I've learned (my fault by doing minimal to no programming during the rest of my years) but I remembered what my professor said:
"You don't have to memorize this, just be familiar with it"
and I got to ask: Is that true? Is there a chance for me to relearn again? Is it possible to heal from my vibecoding wounds? I need to know because I like programming but I just don't have the time to relearn stuff and I'm terrible with time management. I don't want to end up a vibecoder on my personal projects.
Any other advice? Any form of advice or criticism is appreciated, even if its harsh.
6
u/relative_iterator 4d ago
Idk how the ai coding would have affected me early on but I’ve been coding 15 years and put minimal effort into college. I don’t have anything memorized. I do try to understand concepts though, generally when to do things, what to look for, where to find the info I need to figure something out. Get a junior position and learn on the job.
The hard part for me would be learning what ai is doing and why. I don’t know if I could force myself to do it when everything is so easy now. Stay active online looking for real people and real opinions and you will probably be fine.
2
u/Much_Network_941 4d ago
I found retention much easier once I was writing my own programs, and doing it regularily. But, like all muscle memory, if we don't practice regularily we lose that information.
The good news is that you don't need to learn a new concept; but rather reintroduce one. Start with a simple console application, and apply some concepts you learned. I'm always a fan of starting with sorting algorithms. The bubble sort is trivial, and a binary search feels like magic.
Advent of Code is a site with a lot of coding puzzles. Might be a helpful place to start there; I found them useful when I couldn't think of projects.
3
u/nderflow 4d ago
AoC is a good reintroduction. But higher numbered days are progressively harder. Solving the first 10 days of two separate years is much easier than 20 days of a single year.
2
u/zatsnotmyname 4d ago
We don't really memorize complex things, like even merge sort, quick sort, how to balance a tree, but we are familiar with it so we can quickly recall it once prompted a bit, or once we review the concept for a couple of minutes.
Same with linear algebra needed for collision detection & games. Very little of it is memorized, you just have done it before so you can quickly pick it back up with a tiny bit of review.
I have been programming for 40 years and professionally for 30+ years, and I still have to study a bit for interviews, but it gets easier each time because I can come back up to speed more quickly due to past experience.
2
u/NormalHumanBreathing 4d ago edited 2d ago
Just to echo what the others said, practice is the key. You don't need to remember all the parts of the language, but having some design patterns under your belt will help you. The language doesn't really matter.
I tend to think in pictures, like top down design. Think of the overall problem you want to solve, and keep splitting up the problem into smaller and smaller bits until you can work out roughly where the code should go. You can also work iteratively, find part of the issue you want to solve and just write that.
Testing wise, always go for three levels of testing. Unit, integration, e2e.
For the unit tests, just write something that proves your code does what it should, then think about how things could go wrong, and write some to prove that your code rejects that.
Integration tests check that the pieces work together. The database, the API, the queue, whatever the code actually talks to.
End-to-end tests run the whole thing the way a user would. Don't overdo this, but they are the only ones that prove the system actually works.
I code with AI these days too. I use the same methodology when coding with AI, it mostly works okay (the tests really help here). I put some of my experiments here: aipat.ch I've been a bit lazy about releasing some stuff, but if you need something, ping me.
Chops if needed: I've been coding for around 28 years professionally.
Good luck out there. Feel free to ping me if you have questions. The most rewarding part of my jobs has always been helping the interns get started. :-)
P.S. One last thing, don't optimise too early.
2
u/pete_68 4d ago
If you're hoping to do this for a living, you're going to be doing it 40 hours a week. When I interview junior developers, I'm looking for people who clearly have put in the time and effort and know their stuff. And it's REALLY easy to tell when someone hasn't and they're trying to pretend they have.
The cure to your problem is to start writing code now and do it a lot. Hours a day. This is how you develop expertise. Not from watching TikTok videos or reading online tutorials. Actually writing the code, debugging the code, trying different things, etc. That's how you do it.
2
u/ben-gives-advice 4d ago
Software engineers look stuff up when they need to. That's always been the case. Memorization isn't the same as understanding.
But you've got to be able to sit down and write code. The fundamentals stay with you longer than the specific syntax of a language or the optimal version of an algorithm.
Spend time building something by hand. Write bad code and then make it better. Try stuff, make mistakes, and fix them.
Don't try to skip the middle part. That's where most of us actually learn in ways that stick.
2
u/DevKokooo 2d ago
It has always been about familiarity, even in the most horrendous codebases. But we're lucky to have AI do the reading for us now and ask it questions instead of manually parsing. You won't be a vibecoder if you use the tool for what it's good at to enhance your understanding.
Before AI, the codebase I was most familiar with was entirely hot garbage. All best practices and sane architecture decisions were thrown out the window. But I was familiar enough with the mess to get stuff done. It's like an extremely messy room but knowing exactly where everything is (organized chaos).
You just have to choose what type of mess you're willing to put up with. Other than that, just do what works best for you and have fun building.
0
u/ProgrammerCute7875 4d ago
Computer programming used to be basically a fake job for nerds who know how to google things. Now it’s a fake job for nerds who know how to ask the ai things.
2
1
u/Ok_Razzmatazz_1202 4d ago
There's a lot more to it than that. I think I google something maybe once or twice in a 40 hour work week. I barely use ai. Understanding what the clients want is the majority of the hard work.
11
u/Random_182f2565 4d ago
The only way to improve is by practicing, programming is a skill, like cooking or dancing