I had some similar thoughts while taking a night class in woodworking a few months ago. Seeing as I'm never going to blog it, I'll put them here. Hopefully, the parallels with software projects are obvious.

Have a side project on which to practice new techniques.

This course was structured to have the first 2 or 3 weeks learning basic techniques (joins, gluing, tool use) and the rest spent using those techniques to build a final project. Because I was just learning, I'd practice and practice making e.g. mortise & tenon joints on pieces of scrap wood, and then throw them away before doing the "real thing". Often these practice joints were better than the final product, and I threw away a lot of wood (and time).

While you'll always need to do some throwaway practice, it would have been better if I'd had 2 projects on the go. That way, I would have ended up with a probably-still-incomplete side project (say, a simple side table) as well as my butcher's block. Most likely I would have scrapped the side project at the end anyway, but it's possible it may have ended up of equal or better quality as my supposed "main" project. Not to mention you learn more when you have a practice project than when you're just making joins in scrap, or gluing random scraps together; if you treat your practice as a whole project then you get to not only practice the individual techniques, but also how the overall project comes together.

Adjust the plan to the materials.

Starting a woodworking project was entirely new to me so I was a little nervous. I'd heard "measure twice, cut once" a hundred times and was terrified of getting any measurements even a millimetre out. The key to a beautiful finished product was precision, I thought. As such, I approached the plan I chose as gospel. However, after selecting a plan for my project, it turned out that I couldn't get the timber in the exact dimensions the plan called for. This struck terror into my heart - how can I make a cut 130mm if my lumber is only 128mm long? At first I would try to wrangle (glue, cut, or plane) the timber into the dimensions the plan called for. This was very wasteful of time, effort & materials. After realising that, I tried just pressing on blindly and worked only with the materials, but 2 or 3 steps later, things started to not join together properly because my measurements were out.

Eventually I learned the best way was to pick a plan, gather the materials that most closely matched the plan, then go _back_ to the plan and redraw it with the measurements of the materials I'd found. This was much less effort in the long run, and allowed precision within the constraints.

It's not done until it's finished.

This one's pretty straightforward and hardly unique to woodwork, but woodwork lets you make a bad pun about it. My final project was a standalone butcher's block for the kitchen. Although the construction is complete, and everything's glued & fixed together, it's still not done. I haven't had time to do the final sanding, polish the legs, and finish the surface with oil. Being exposed to food oils and fats, the surface needs to be finished before you can use it, otherwise it'll chip, split & splinter. I didn't leave enough time in my class to finish the surface, and haven't made time to do it at home, so my project is at once 95% and 0% complete. At the moment, it's effectively just a heavy piece of fuel in the garage.

If there's some aspect of the project that conceptually seems like a "final step", make sure that you budget for it in your project scope, and don't think "well, the hard part's done, so I'll stop work" - the project isn't done until you finish it (in the case of a woodworking project, literally).