Someone mentioned in a comment somewhere (I wish I could find a link) that sometimes they create a project for students that they haven’t built themselves first and find out that it is harder than they expected. I sure can relate to that. I’ve done it more than a couple of times.
Now normally I like to assign projects that I have already coded at least once. Failing that I like to use projects that I know other people have used with students at the same level. But sometimes I get creative and adlib something. Typically this comes as a result of a conversation with students during class. It usually involves me saying something like “Let’s try this.” Sometimes it works. Sometimes it even works well. But sometimes things turn out to be a lot harder than they first appear.
I’m not sure this is necessarily good or bad. When it results in the students and me both learning something new that can be good. If we have fun doing the learning so much the better. When it results in a lot of frustration and misery that is not a good thing. Not for me and not for the students.
One could avoid that by always taking the safe way out – use tried and true projects only. Or perhaps wait until the instructor has a chance to code up a sample solution first. But if you do that you risk losing a special teachable moment. Plus I like to live a little on the edge.
I learn a lot from watching students work on projects. Even if I have done a project before and think I know all the things that can go wrong an inventive student will often find a new way to mess things up. And that is fine. I learn. They learn. We both win. Having done the project before either on my own or by helping students makes it easier to make sure all the required techniques and tools are taught before assigning the project. And there is nothing wrong with that.
Trying to code a project myself usually helps me determine how long it should take students to complete the project. Sometimes I even calculate it correctly. But having students do it is really the most reliable way. It makes for interesting scheduling and lesson planning when you get it wrong of course. In high school one can’t often expect students to put in many extra hours outside of school as one would at the university level. So there are advantages to getting the timing right.
So much is about trade-offs though. There is value in spontaneity and in creating spur of the moment projects that students are really interested in doing. And there is value in having clear schedules and stable projects to assign. Generally I find some balance and that seems to work out.
Of course sometimes students surprise you and finish things early. As they say “I love it when a plan comes together.”