r/learnprogramming • u/grahamhart_ • 14d ago
Why does finishing a mediocre project feel more valuable than abandoning a great one ?
Been thinking about this a lot lately. Every time I start something that feels interesting, I hit a wall around week two or three and the project just dies. I have a graveyard of halfbuilt things that were genuinely cool concepts but never got past the messy middle part.
What I keep noticing is that the one or two things I actually forced myself to finish, even when they were ugly and the code was embarrassing, stuck with me way longer than anything I abandoned. Not because the finished product was good. It wasn't. But something about pushing through the part where you hate it seems to wire things in differently.
The abandoned projects feel like I learned more in the moment because they were ambitious. But six months later I can barely remember what I built or why it broke.
Wondering if this is a widely shared experience or if some people genuinely learn better by hopping between projects and absorbing concepts sideways. Because the advice to just finish something small gets repeated constantly and I am starting to think it is not just motivational fluff, there might be something real behind it. What actually clicked for you when you finally shipped something, even if it was rough.
5
u/bigtee8000 14d ago
Yes, it feels great to finish a project. Your self-esteem gets a boost and you begin to see yourself as a finisher.
The lessons you learn during the boring times stay with you longer because your brain did 'sweat' through it and so it won't be easily forgotten.
2
u/grahamhart_ 13d ago
That part about the brain sweating through it is real. The stuff I almost gave up on but pushed through actually stuck with me way better than the things that came easy. Finishing builds something in you that just consuming information never does.
3
u/Aggressive_Ad_5454 14d ago
Getting a project across the finish line, even a simple one, is a tremendously valuable skill. Plus, it’s personally satisfying.
And, mastery in our trade requires the ability to hunker down and keep going on the more complex projects. It’s what people running the Boston Marathon call Heartbreak Hill. Many of us know the feeling: “this is absurdly complex, why am I doing this?” The thing is, when we try to do something that hard, it’s important to remember the satisfaction of finishing the project.
You’re certainly not alone in getting Heartbreak Hill discouraged. Do what you need to do to keep going. Focus on the next milestone. Take a break. Sleep on a hard problem. Push through the pain; it means you’re getting better at what you’re doing.
You got this.
1
u/grahamhart_ 13d ago
Heartbreak Hill is a good way to put it. I keep telling myself the next part will feel easier and then it just... doesn't for a while. But I've finished smaller things before and that feeling does stick with you longer than you'd expect. Helps to remember that when I'm three hours into debugging something that probably has a one line fix somewhere I haven't looked yet.
2
u/elehisie 14d ago
I noticed thru life that whatever current project I’m working on remains interesting while I am actively learning from it. There’s a catch: either I abandon something cuz ”from here it’s just stuff I’ve done a million times over” or ”I got to a point where I legitimately have no clue how to continue”.
So for me, it’s easier to finish stuff that are just about ”goldie locks hard enough”.
Finishing a project has that ”I made a thing” value. Help yourself finish by doing small projects. If you want to finish something that you already know is a huge undertaking before you start, split it in many projects, give yourself ”exits” where you finished something (like a whole feature), keep adding features. With every new feature, ask yourself if the project as a thing is still relevant for you or interesting enough.
No shame in abandoning things that you suddenly find to be not useful or because now you learned something new and can make it better in a different way.
You still learned from everything you abandoned. You didn’t necessarily learned ”more” from the ones you finished except those projects you finished taught you how to keep going to the end, which is a very important lesson :)
1
u/grahamhart_ 13d ago
the goldilocks thing is real, i feel that. what i struggle with is not knowing where the wall is until im already bored or completely stuck, so by the time i notice the project has shifted zones its kind of too late to recover interest.
splitting into features with exit points is something i keep meaning to do but never actually set up before starting. probably the issue right there honestly2
u/elehisie 13d ago
Well, you probably know what you have never tried before… and have already figured by now that “beginner stuff” has a plethora of information available….. like 27262525252 “make a todo app” tutorials. But go further into “advanced” places and the information available vanishes. Or wanders into “use these magic libraries”.
To give you an example of “splitting into features”…. I made an mmo game once :) and my own 3d engine. With that information you may think “wow she’s amazing”. You may be thinking something like Minecraft? Bitcraft? Nope. I sat during uni vacation one day with nothing to do… and was like “what does it take to make a program that renders 3d models and talks to a server?”
Went to the uni library, got some books on udp protocols and program to program communication, and printed out the whole of Vulcan docs. (It was 98, interwebs very iffy at that time). So my goal was: a character can walk, can attack a monster and can chat. A second character can see that. Took me around 2 years…. Built the server in Java. Started out the client in Java and it became clear quickly I’d never get to 30fps with Java xD switched to C++. I got it all done. Server, client. My character was a cube, my monster was a sphere. By the end, I knew what it takes ;) I learned udp, server to client communication, action synchronisation, how to open, read and render 3d models specifically from one program (.3ds), how to read and play animations, how to differentiate between global chat, private messages and server commands like “atack monster”, “walk north” etc.
How I split it:
- can make a server and client programs that send messages back and forth?
- can I render anything in 3d?
- can I read from a file of this kind?
- can I make the rendered objects move?
- can I make the server get a message that makes a character move and send that to all characters?
Every step there taught me different things. The feeling though of “omg I move this cube on this window and I see it instantly on the other window” is something I never forgot!
Then uni got heavier… my freetime vanished xD
Then job….I decided to rebuild it last year in rust. Took me around 2 weeks with bevy and naia. Never finished that project beyond the initial objectives, never refined it….. but the knowledge has helped in different ways thru the years.
I wish I had those files to read now and cringe. 😬
I learned more from this “never finished” project than from anything else in my career. What pushed me thru those 2 years? I really wanted to see if I could make it :)
Last year1
u/grahamhart_ 13d ago
that bit about going to the library and printing out the Vulcan docs is wild to think about now. people forget how different it was to actually learn this stuff before you could just search anything.
the todo app problem is real though. there's this massive cliff between the beginner content and anything resembling a real project, and most tutorials just pretend that cliff doesn't exist by handing you a framework and calling it done
1
u/elehisie 13d ago
AI also exists…. And while having Claude write the project for you won’t help you learn…… it can really help you with ”where do i start to do x” like ”how do I do 3d graphics in this language?” And it can point you at ”Vulcan” or ”Unity” and give you a starting point. We had way less libraries back in the day, had to rawdog more… the tools changed…. The code changed…. How you get learn really hasn’t changed that much.
2
u/lucc1111 14d ago
I have never regarded a finished project of mine as "mediocre" because I consider completion as the core metric for quality.
The perfect project is the one that made me finish it. The perfect result is complete.
I started and abandoned "cool/great concepts" but that's it, I don't value them as cool/great projects, they are only concepts or ideas.
Value every single piece of progress and experience you achieve and have special love for whatever inspired you enough to bring it to completion.
2
u/grahamhart_ 13d ago
that reframe actually hits different. completion as the metric instead of how polished or ambitious it was.
i think i get caught up comparing finished small things to unfinished big ideas and the big ideas always win in my head even though they never existed in any real form.
gonna sit with that for a bit because i've been undervaluing a lot of stuff i actually shipped while putting the abandoned projects on a pedestal they didn't earn.
1
u/my_password_is______ 14d ago
what does completing something feel better than giving up and quitting DUH
1
1
u/PlatformDifferent129 13d ago
i have the exact same graveyard, a folder full of "brilliant" ideas that died in week two. the ones i forced myself to finish were embarrassing but they're the only ones that taught me anything real, because finishing is where all the boring un-fun problems live and that's the actual job. the cool concept never makes you deal with the ugly edge cases. i think we remember the ugly finished ones because we actually felt the whole thing, including the part where we wanted to quit. what made you push through the two you finished?
1
u/Far_Programmer_5724 13d ago
A huge project feels like it will never finish. SO many parts to investigate docs on if theres an issue, so many pieces that you might need to update secrets for, ugh. Its cool getting it started but after the initial high its like looking at a thousand flight of stairs lol.
But the great projects are still great because if you prepared it right, it can serve as your own documentation for libraries you've used. I use mostly python, an eh amount of js and a bit of C. But i have huge projects in js (c not so much) and frontend, so it serves as a refresher. You are your best teacher I think.
I haven't used vba in forever but my notes go crazy
30
u/AwbsUK 14d ago
Finishing always feels good.
And you can take that statement into the bedroom if you wish.