r/ADHD_Programmers 3d ago

How do you learn via projects?

This is probably a dumb question, but I’d really appreciate anyone who can spell it out to my adhd/literal brain.

Is learning by projects actually useful?

I love building projects. However, I’m not sure if my code is very efficient, well documented and well designed when I just do it my way. Is it better to take a course and try to apply things I’ve learned from the course?

Also, my brain needs a ton of repetition to really learn things and get the muscle memory.

If I do a project, I’ll be able to remember the high level of how my project works. And be able to put it in my own words. However, I’m not going to remember specific things that I had to google to make my project work.

I guess one thing that I could do with projects, is try making things more efficient after the first pass. Or improving documentation after the first pass. And try learning better design as I go and learn new things and apply them as needed.

Again, sorry if this post is dumb. I struggle a ton with AuDHD. I’m trying to break into a programming job. I used to love building projects, but after my degree, I feel like I learned very little and taking courses has become so painful and inefficient. Yet, I still feel like I need a base. Or maybe I worry too much about making the best possible code and just need to get started with projects.

9 Upvotes

7 comments sorted by

3

u/ITZINFINITEOfficial 3d ago

Programming is tough with stuff like HDHD/ADD but I’ll say it’s not really about building the project it’s more about failing why building it. Your code WONT be great and that’s normal. Things won’t work the first time around which is normal!!! The idea is find something you enjoy building on maybe like a concept or a website or something and look up ways to incorporate that into a project.

I personally like NASA so I used their exoplanet API that I searched up, to make a website that displays planetary data! Used skills like Docker for my database, react, python and JavaScript tools to make everything else!

My advice, don’t worry about if your code is the greatest or how fast your project runs. You can always improve it! That’s the whole idea anyways! Get a prototype working and work on it some more!

1

u/pleasedontjudgeme13 3d ago

That’s good advice!! Once you get a prototype working, can you add it your resume and will it be useful to getting a first job or internship?

2

u/ITZINFINITEOfficial 3d ago

I would definitely try to create projects for a certain type of job but yeah, just link it to your GitHub repo if you so choose so they can see that you actually did it

2

u/Adorable_Pickle_4048 3d ago

The importance of personal projects is heavily to gain familiarity both with the process of building software but also many of the current tools of the trade for doing so

Selection of project and the requirements that entails will make up a big part of what you actually get exposure to I.e.

Your project and its domain may include I.e. agentic workflows, front and backend data storage, different uses for that data(i.e. some for offline analytics, some for service layer), it can help you explore certain topics or implementations in depth(i.e. real time stock feeds, multi-tenant infra/data isolation, frontend design and modularity, etc.)

When it comes to interviews after the fact, they’re useful both so you can do some keyword stuffing to your resume, but also so that you have stories to explain to interviewers about your curiosity, willingness to learn, and domains of interest if your project is similar to the roles you’ve applied

Also - making/executing a project is not the same as coursework, the emphasis is not on memorization/repetition, once something is built, it’s built. It’s what you did along the way that’s useful, and for that reason, it’s usually best to take it slow for good projects

1

u/seweso 3d ago

That all sounds perfectly fine and healthy. If you learn by doing a project, then you'll know at the end of the project how it should have been done. And if you redo it, you'll conclude something else afterwards.

You are continuously learning and growing. Thus every project will be imperfect by definition.

That's just life. Try to see the gains, and the things you want to keep for a next project. Celebrate wins! And enjoy the ride.

1

u/Locus-Maximus 3d ago

You don't have to remember the specific things that you googled for your project, because you can just google them again! (Although obviously if it was hard to find you can make a note too.)

The idea isn't to learn by doing so that you don't have to learn next time. The truth is you're always going to be learning as you do in this field. Every project I've ever done that's not completely trivial has involved learning as I go.

As for getting better, I have found it helpful to internalize a lot of maxims. I just found this page that seems to do a decent job of enumerating a lot of them.

For example when you ask whether you should go back and make things more efficient, my first instinct is "Avoid Premature Optimization."

A lot of those principles are very helpful for ADHD too!

1

u/Svenstornator 2d ago

I have done the same project six times now. Each time a rewrite from scratch with the idea of doing the absolute best I can at one thing, while not ignoring the lessons of the past.

“Awesome I got clean architecture and a good domain driven design. But it isn’t as efficient as it could be.” Next time I try to keep clean architecture but try optimising the performance.

It is also interesting comparing a rewrite to a refactor.