Programming can be a fine goal if you are interested in just tinkering. But implementing yet another TODO-list app is just busywork (unless, of course, you enjoy writing TODO-list apps. In that case, carry on and more power to you). Why do people do this? Resume padding? Learning some framework? You don’t actually know a new library or framework unless you’ve used it for a couple of months. It makes more sense to learn a framework by actually trying it out in a project you want to implement. That way, you are “forced” to learn the less smooth bits of the framework.
Often, implementing some toy project in a framework goes smoothly, because you’re just using the basics. That’s barely scratching the surface. If you really want to get a good feel for how useful a framework is, a real project will force you to do nasty things, actually hit into performance bottlenecks and basically expose you to so much pain that you definitely will notice where the framework’s weak spots are. I don’t care how good a framework’s strong suits are, the weak spots can be deal breakers when using it in an actual project.
You can learn a framework on the job, and any hiring manager who is just playing resume technology bingo should be fired. You can typically learn the basics like the syntax and terminology (exactly that stuff you learn with a toy project) in a few days, on a real project.
I think the thing for me is I want to be building rea projects using tools I already know and am productive with, unless I don’t have any tools already that fit a project.
It also helps me when evaluating something to have a comparative experience. Does this tool make a task easier or harder? That’s more difficult to gauge on a novel task. But I agree it shouldn’t just be a toy like a todo list. I have a failed non-trivial project from a few tears back that implements OAuth, talks to document and relational databases, etc that I’ve rebuilt 6 times now in various frameworks/tools because I know the project logic like the back of my hand, but it gives me a good sense of “does this ecosystem have good pre-existing packages,” “how nice are various data structures to work with,” etc.
Even something like Dave Thomas writes a markdown parser in any new language he’s learning. It’s not huge but it’s not trivial.
Do you have the source for that project anywhere?