These all make perfect sense. In terms of building a product, I think the most important is easily eat your own dog food. In other words, use your own product. Not just test it, but actually use it, in the way you want your users to use it. In the case of Elgg, that means using it to connect to new people, learn new things, showcase what you’ve done and reflect both to yourself and to the outside world. In the case of PDP systems, it means using it to keep track of your own progress and using the system as a springboard for further learning.
Recently I’ve been using a CMS to update a university website. I’ve built in all kinds of little keyword-based gizmos to make it easier to provide flashy, interactive menus and the like; I have the ability to dive into the system and add things from a more technical level, which would be easier for me. But I don’t. I make sure I go in and use the same, non-technical interface that everyone else does. If something is frustrating, I’ll change it; if it could be designed better, I’ll redesign it. Ditto for Elgg, and anything else I write.
Take a look at some of the e-learning tools being presented by various groups. You can tell the good ones, the ones that students and faculty will pick up and sink their teeth into; they’ve been used internally by the people who wrote them for their intended purpose on a genuine level. The bad ones are merely tested for technical problems, possibly focus-grouped and based entirely on someone’s abstract ideas about what there should be. Designing and programming a system is definitely a form of learning; if you’re not using your own product and ideas to help yourself do it, maybe there’s a problem.