There was a suggestion a while back to revamp the xp system to something totally different.
Every skill would be represented by a block of squares, each square representing a piece of the skill. A dwarf would have a number of squares filled in and some not. The number he has filled in divided by the total determines his ranking.
Whenever the dwarf performs a task of the related skill, he has a chance to fill in a random square in the skill's block. If this hits a square he has already filled in, nothing happens.
That's the basic idea. Decreasing skill gain and variable cost to improve fall out of the system naturally, with a bonus of being easy to visualize (if hard to calculate probabilities).
EDIT: variable cost meaning different skills have differently sized blocks of squares
Additions were suggested:
- Different skills with overlapping areas could have part of their blocks be shared. If you happen to learn a square in the shared area, the dwarf gains a square in both of the skills. This allows synergistic skills (masons get better at detailing)
- Rusty skills could be randomly hit over time with rusty squares (does nothing if it hits a square the dwarf doesn't have); higher level skills rust faster
- Dwarves can teach each other squares the other person doesn't have. If you have two dwarves make their own journey to Accomplished, they will be able to teach each other tips and tricks; while if everyone studied under the same master, they will not have much difference in their skill distribution. This is without requiring that different knowledge areas affect the product in different ways. Believable knowledge sharing via representation of knowledge areas, without the complexity of "the stone cut of the mug is excellent but the design is terrible" and while still having the knowledge areas abstracted away.
- Variable size overlapping areas could be a simple average of squares in that block (16x16 block in strength -> 2x2 block in masonry would average the squares in each 8x8 area that the 2x2 squares represent), allowing different base traits like strength to contribute differently to different skills. Hitting one of those "smaller" blocks would go back to the base trait and gaining a square in the relevant area