in reply to Learning by Doing

Certainly, I could make up a problem for myself and solve it, but this always seems like "practice" to me for when the real problems actually come. But they never do.

If you think of programming as an "art", then you could consider yourself an "artist".

If you try to make a living as an "artist" (in whatever art), you're always balancing between doing the things you like, and doing the things your clients ask you to make.

A case in point: I've written a lot of thread related modules. Why? Because when 5.8.0 was about to come out in the late spring of 2002, there was nobody really testing it as a "user". And I found a lot of things missing. And I had a lot of time on my hands. And I found it intriguing.

However, I'm not using threads in _any_ production environment myself and not for _any_ client to this day. The same for my forks module (although I must admit I will probably start using that in production for a client before the end of the month).

So in my case, you could say I made up a problem for myself and tried to solve it. And I learned a lot of things along the way. Probably more than when if It had been constrained by prerequisites of a project of a client.

Liz