How do I trick my brain into completing a project? I’m making an app that shows which voice actor plays a character in the movie and what other movies they act in. It’s useful for me personally but I feel like I’m making something that’s been done numerous times over and I lost the momentum because I’m on vacation with my family now. I ran into some problems with the project too and getting help takes a ton of time so it’s disrupting the rythm too. I really have to put at least 2-3 projects like this for a portfolio;_;
i read this somewhere, and i can’t recall where now, but it anecdotally feels very true:
as soon as you tell someone about something you’re working on but haven’t finished yet, you get a premature dopamine hit. for some reason, that messes with the reward centre in your brain and makes it less likely to actually finish the fucking thing, like you’ve already sucked the juice out leaving an empty husk. so, my secret to finishing programming side projects has been to tell no one of them until they’re ready. this is heavily paraphrased, i know nothing.
Yeahh I heard about it. But I have to tell people about it when I’m asking for help. I’m trying to do as much on my own as possible but there are moments where it’s more than I can deal with.
Don’t tell them the whole project. Breaking a problem down to smaller components will help you conceptualize possible solutions, narrow down the problem space, and avoid the dopamine hit effect by discussing a single discrete problem, e.g. “how do I pull [x] from the database.”
I only described it here for context, usually I focus on the functionality itself, unless the bigger picture is needed even though it’s a little difficult for me to tell which details are important and what can be omitted. Sometimes despite my best efforts there’s some confusion and making it right is consuming a lot of energy.
On the flip side I’ve always heard telling other people makes you feel accountable…
But that’s never worked for me, so not telling people might make more sense.
Back when I was trying to learn programming I had two key things that worked for me:
- setting
- reward
In my experience if you keep both of these things ironclad then you can get more consistent results. For me it was going to Starbucks and getting a tall white mocha. It was the same Starbucks, and the same seating spot every time I went. And I made sure to turn off all notifications during my coding time. Hell I even put myself on a timer.
It didn’t matter what I did during that time period, but it had to be programming related. Project work? Great! Noodling around with my IDE config to find the perfect color scheme? Still counts. Learning ever detail about a super 1337 shell oneliner? Oh yea
You can’t expect your brain to not jump around, but you can build a system that works with that.
That makes sense. I arrived to a similar conclusion so I’m switching the tasks up from time to time but I think I’ll reinforce that because right now it’s not planned out the best way. It can be improved.
Maybe, ironically, doing other tasks will actually help me accomplish more of the main one. I feel like it could work that way.
To engage hyperfocus I have to want to do it. For that the motivation can’t be external. It has to come from my own curiosity and desire. To get myself primed for coding hyperfocus I like to read Github repos, search stack overflow, ask GPT. Once I have a good idea of the architecture of the app, then I start building out the skeleton. The hardest part is going back to it each day and starting. But once I have written some code for the day I tend to be able to keep up the focus.
If you get stuck it means your knowledge is missing some crucial peices and you’re about to learn something new. If you want a job in this industry then you’re going to need to learn a lot (and it never stops). But once you’ve got some years of experience you get stuck less and when you do get stuck it doesn’t interrupt your whole flow so much because you’ll be able to pivot and do the thing in a different way instead of waiting for outside help.
Good luck!
It works similarly for me with the motivation thing. I don’t have anything against learning things but I wish it was easier to find information about more complex things than just the most basic stuff. It’s the problem with all those courses. They’re great as a “starter” but after that point, you’re on your own in a weird void. The documentation doesn’t help much as well. Tutorial hell is a weird place to be in.
Have you tried using chatGPT or GitHub copilot?
It’s a last resort. I don’t like using it and it’s a 50/50 anyway. One time it suggests reasonable things, the other time it totally misses the point. I’m not sure if the suggestions are following best practices too.
I think making effective use of those tools is it’s own skill. They can give you bad results if you ask things too broadly. But copilot chat has become a pretty invaluable part of my workflow.
Oh well, maybe that’s true.
I think the actual benefit of ADHD and programming is perseveration. Meaning we struggle to pull away from a task when it’s time. Like putting down the video game and going to school.
What happens with programming is getting stuck on fixing a bug. Not being able to put the controller down until you figure out where the missing comma is and why your code won’t work.
It’s extremely valuable and a lot of people struggle with a bug and give up really easily.
Getting started working on something, or planning out a project on the other hand is the real tough part.
“No interesting project is ever finished.”
Got that one from my CS professors and it’s always rung true. So I just plan to get interrupted and try to make it easy to jump back in after I lose focus for a while. And the key to that is documentation.
I can go back to a project I left unfinished weeks or months ago and say, okay, here’s where I left off and here’s all the information I need about these functions and modules.
Does the “not-ending” apply to really small things though? I think mine can have an end, it’s more of a demonstration than a serious thing.
Am a software developer, and in my experience we always find things that could be done different, spend hours tracking down the source of some fringe bug, or think of new features a product could benefit from, especially if we enjoy working on it.
Things might be considered done, but i never was in a situation where one could not think of more things that could be done.
Reduce scope. Look at what you’re doing and cut out all the “nice to haves” until you have just the “need to haves”.
For a behindthevoiceactors clone, the bare minimum would be a simple web page with a search bar for actor names. You could use a query string in the URL that gets passed to an IMDb API call that then renders a simple page that just has the actor’s name as the header and a plain table listing shows/movies/games and their role(s) and years.
Everything on top of that, pretty CSS, pictures, hyperlinks to other places, that’s all fluff that you can add on after you’re already “done” having created a minimum viable product. And at the nice to have stage, you can put it down at any point without feeling like it’s unfinished.
I’m using a similar API, I think IMDb wasn’t publicly available or something like this? I don’t remember exactly. I need Polish actors if that makes any difference.
Good idea with focusing on the main features. I wanted to try this at first but with web appinstead of the usual console app was a little awkward but I’ll look into this again.
Currently the number 1 issue is extracting actor names. They don’t come in json like an array or something, they’re only available via parsing a page so a string with html markup and stuff. There was some confusion because when I asked about that, I might’ve described it wrong because people on the server thought I’m doing web scraping? I’m not sure if it counts as scraping if it’s from an api though. I’ll have to clear it up probably but that last misunderstanding was really stressful.
Interesting. An API call shouldn’t return HTML, since it’s essentially just a proxy to query a DB for some value, so I can see why they’d think you’re web scraping. Might want to try a different API?
But yeah, most APIs have a fee associated with them, so web scraping gets around that. You could fully commit to it, nothing wrong with that. If you’re web scraping though, I’d definitely do some studying up on how the DOM works. Once you learn to navigate it, things get a lot easier. https://www.w3schools.com/whatis/whatis_htmldom.asp
Good luck!!
I’ll see if there are any other APIs, maybe I missed some. I specifically need the Polish ones so it’s a bit tricky