I work in a department where people create (or select) algorithms that they implement in small-sized software to optimize some field-related objectives. Most of my colleagues know more about mathematical modelling and solvers than about programming.
I personally have a few years of experience developping C++ class templates. I pretty much know how to design class templates that represent algorithms but i can't design every piece of software that my colleagues write (not enough time, not enough interest).
My goal is therefore to try and teach my colleagues how to turn the functionalities and algorithms they think about into class templates. Template arguments would either be structure types or policy classes. I feel that i need to come up with a set of "do/don't" rules but i can't seem to be able to invent them.
To me, the objective of a good class template design is to maximize readability.
Do you personally have rules to design good class templates ? Is there a right process from functionality description to class template design ?
EDIT
Yes, it is difficult to get people to program using templates. I am working on it and developping a framework to make template instantiation as graphical as possible, and guidelines (and providing daily help) to make template programming as easy as possible. But the question here is only about designing, which i consider to be a completely different issue.