I think it's really important to first reflect on the purpose when doing something: is it to solve a problem, is it to learn something, is it to achieve a target, is it to keep yourself busy to wind down and because you like doing it, or is it to promote yourself.
The next step is to define a goal and a scope - not a deadline.
When realizing it, it is important to take a pragmatic approach. All activities should lead towards achieving the goal - do not overengineer.
This way, projects can actually get finished.
From personal experience, I have been successful in software projects, sports competitions, building objects and furniture, and doing musical projects.
Success being defined as achieving the set goal and having completed the project.
Their purpose was never to selfpromote and the activity rarely involved creating art. So maybe art is a niche that is never finished...
Mid next year, I want to pick up writing a blog. The primary purpose is to 'keep myself busy' because I have never delved into this activity and I am curious about the process. The secondary purpose is to improve my literacy: I want to be able to read and write more efficiently, because my new job will require that. And the tertiary goal is to self-promote.
Elaborating on the topic of finishing projects would make a perfect first article. Thanks to the author for your inspiration!
I sew clothes. The vast majority of projects I start get finished. Sometimes I'm happy with the result, sometimes I'm not. I wear them regardless. My kids wear them. After a while they grow out of them.
Goal achieved, project finished.
Good point about being happy with the results! I think this could be added to the definition of success.
Some results can not be improved, like sewed clothes, but there can be a review to learn something (why are you not happy with the result?) and a feedback loop, for the next project to turn out better.
I started recording songs for a Christmas album in 2007 and just published them this month. I thought I would never release them. And every time Christmas was over, I didn't feel like working on them anymore. So I only had about a month per year to occasionally work on them. There were years when I didn't touch them.
So after 16 years, I could see the home stretch and I decided to make it to the finish line. (I recorded the final music video today, actually.) If you had pushed me to name a deadline back in 2007, I would've said 2008.
I have a whole bunch of "projects" lying around, some of them are just ideas at this point. They will get finished eventually. Or not. No pressure.
Sometimes, deadline for private projects are necessary and for some projects they could be completely irrelevant. Also, it is a matter of personal choice and character to set one.
The idea part is very interesting. Basically ideas are the raw, unstructured parts of projects. There is an exploration aspect to it and to realize them may bring a lot of joy - without calling them a project just yet.
So maybe your decision to finish all those ideas, wrap them up, put them together, create the video, is the very incarnation of the project. For that you probably set some purposes and goals and maybe even a deadline.
I greatly prefer the occasional blogger who focuses on quality over quantity.
One of them can be considered finished, the other one is almost done. The first one may get improved, but that's a later exercise.
Improvements are an important aspect. They are simply changes to goals and the scope.
In terms of finishing projects, it is crucial to define them and possibly define milestones in advance.
Is it because you feel the need to keep yourself busy, but too lazy to plan what you're trying to achieve.
However, I would not call them projects.
Anyway, there may be a feeling of burning on, or burning out, when private projects start to feel like a todo list...
So true. At some point you stop working on it and start using it. When you start using it and stop modifying it, you start learning the actual characteristics of the thing. Only then will you find what you like about it and what not. Generally, as user or consumer, you will tend to adapt to the shortcoming and try to maximize the use or enjoyment you get out of it.
In addition, whilst working on something, it can be so hard to predict when quality goals will be met, because the incremental progress slows down constantly as the product grows (non-linear). The reliability and quality of a thing are often only known after using or consuming the thing for some time. Only through actually using and consuming, true evaluation is performed. Only in retrospect can one say anything about the quality of something.
Good way to get something out of your system, and maybe 3 years later you open it back up and go for it.
Thinking is real work and unless you are an extreme exception, after some time you will forget even the greatest ideas!
There is a saying that works of art are never done, people just eventually quit working on them. Even that seems somewhat apart from "... finishing a personal project you’re doing just for yourself is impossible" which seems overly broad and very dark.
I think you have to decide at some point: "This is done."
Maybe it requires stripping out some parts, or major parts, of the software you had in mind to reach that, but I feel it has to be done at some point, the feature creep will settle in otherwise and you will never be done.
And if it was finished, what would people think about it? No commits since a year? Dead!
Jokes aside, I think software can be finished in the same way you finish building a house. Sure it built now, but that doesn't mean that maybe in a year or ten something major has to be done because the components that make the house changed, the environment changed, the requirements changed etc.
For all the things I want to share to the world, I'll make it into a small project that from the start has stated goals and non-goals. If there is some divergence from what I need personally from it, I'll have private fork (sometimes also just so I can work on it in a "fast and ugly" manner). By splitting them up consciously, the public and the private part can fulfill their individual goals a lot better ("polished"+finishable public shared part; tailored to my needs perpetual imperfect private part).
That also works surprisingly well for non-code things, like blog posts, where my private versions have a lot more references and detail tidbits sprinkled in, that would overwhelm the target audience of the public version of the post (mostly because it would take too much time to work it into the post in a good way). I guess that's also not a too uncommon phenomenon in the arts, with director's cuts of movies and additional mixes of music existing parallel to the commercially published version.
Edit: That's not my oldest project, I may have some older ones still going but there's one with an initial commit from 1994, the last time I updated that one was in 2019 (in 1994 that would be SCCS, later converted to CVS, and after that to git)
Months go by, with lots of refactoring, "core" features and no progress at all. Some weeks were most productive than others though and just last month there was something usable.
So instead of doing what I always did, building more stuff, I setup a server, nginx, certbot, and released the damn thing. By released I mean it was available on a URL, but nobody knew about it. And that was calming, because it was out there and that was the goal.
That helped me mentally to just share it with other people and see what happens. And I did, and it wasn't bad, and it was fine.
I still don't have much time to spend on it, but I know it's outhere with people using it, and I can always work on it.
Just putting my software out there, on my barely visited site, lifted a weight of my shoulders. It's just one thing that I have put off of my mental shelve.
I even know there are some basic features missing, for what I think is needed in a product. However, it was good enough for its intended purpose. It's probably not even used by anyone else, but if it was and one would not be sufficiently pleased with the state of the software, they can contact me. Until then I've got my ease of mind in that regard.
For the curious, here's my website: https://softbit.info/pages/software?language=en-us
@parent poster: because I'm curious, what's your website?
Yeah, theres a typo right on the homepage, I know, I'll get to it.. :)
_"A Work of Art Is Never Finished, Merely Abandoned"_
He is writing about art (creative writing), as opposed to commercial product. Art is fairly inward-focused, and its goals can be a lot “fuzzier” than product. I was an artist, in my Yute. At one time, I wanted to actually make a living from it.
But artists finish, all the time. Some, treat their art as a product, and that seems to help, but they also risk commoditization of their creativity.
I’ve spent pretty much my entire life, shipping software. That’s been for externally-imposed deadlines, usually as part of an integrated team, with synchronized milestones.
As he mentions, that helps a lot.
Since working on my own stuff, I’ve had to drastically reduce the scale of my work, and practice self-discipline that, I suspect, many folks here would consider extreme.
But I still finish stuff. Finishing stuff is actually part of the personal satisfaction that I get. It’s an art, in itself.
Finishing a project is not the same thing as finishing the artifact the project is about.
A project to build a house can be completed so that you can sell the house. But someone buys it and continues to build on the house, so the house was not finished.
This applies not only to art I think. It’s a bit of a semantic discussion though, because I guess completing projects is the important bit. You cannot have too many things as work in progress.
BTW: Here's a couple of the things I did, back when: https://news.ycombinator.com/item?id=34654770
That second painting is shown in an "unfinished" state. In a later version, I added a woman walking down the path, towards the door. That was the one I sold.
As a person with never-ending, over-ambitious side projects, I'd be interested in hearing more about this!
The vast majority of my projects are reusable libraries and SDKs (Swift Packages, for the most part).
I do every one of my projects as if I were delivering to a Fortune 50 corporation.
I write a bit about how I do stuff, here: https://littlegreenviper.com/miscellany/thats-not-what-ships...
Ok. I'm going to comment out the pending feature and just release it.
> I didn't realize this going into it. I wasn't asking for a baby.
> It was a complete surprise to me, after 20-odd years of industry experience, that even writing a simple interpreter would produce a lifetime of work.
https://steve-yegge.blogspot.com/2007/06/rich-programmer-foo...
i remember some years ago reflecting back on some software project that had gone well. in my head, it was a beautiful finished object that i'd created using the tools and frameworks available to me. it was perfect and flawless.
then i went back and read the code and saw so many TODOs and things that i would have accomplished had i only had more time. and i never did get a chance to finish those TODOs, but the project launched successfully and generated a lot of revenue.
The things you do for themselves are the only things worth doing - because the value of all other things is merely derived.
Edit: Adding your comment to my favourite quotes list, you put in words something I kinda know but had never seen said articulately before.
He has at least two beautiful chapters on this subject:
Completion p191
The Experimenter and the Finisher p205
The last sentence of Completion:
We can't wait to finish,
because there's another idea calling
that lights us up.
The endnote for Completion: Is it time for the next project
because the clock or the calendar
says it's time,
or because the work itself
says it's time?
P.S. All his chapters are beautiful.The reasons it falls by the wayside are varied. The first big gap happened during a whole house renovation, which in retrospect made a lot of sense! Mostly there is just only so much time in the day and lots of ways to spend my time.
I had added features nobody wanted(afaik), that were a hassle to maintain, and that I didn't have any use for.
I just axed them all. And I stopped adding features without real use cases I actually planned on doing. I was spending hours a week but the project was getting crappier instead of better.
With all that gone, I had time to add features I actually wanted, and clean up the architecture to make that possible.
Ha so true!! Perhaps I am just getting old.
But I don't enjoy UX work at all.
So if I can get it to a "mud fence" level of usability, I'll need people with a shred of aesthetic sensibility, since I'm done around vi with the UI.
The active target audience (me) is fine with it. Other potentially interested parties don't know that they exist anyway. Next!
It does feel like you should know... but knowing all the parts does not mean you know the whole. The rules of chess do not make you a gramdmaster. The axioms of geometry, of predicate calculus do not make you know all theorems and proofs. Being able to program does not mean you know all programs.
So you either have stable but dead, congrats you are the framework developer.
Or you have constantly changing, api breaking rodeos but you might not become a framework developer.
Pick your poison
I don't know if that's where true wisdom starts, or if it's procrastination at work.