I tried to see if this had been suggested previously a few different ways, and couldn't find anything, so I'm going to go ahead and suggest it.
The first part of this is to hide dwarf attributes at the beginning of the game. You might be given some vague notion about how strong a dwarf is, or how agile, but it would be rather vague indeed and might even be party dependent upon the dwarf's impression of himself.
Secondly, add an intelligence attribute, and add new attributes for each of the attributes which are the effective limits (either soft or hard, I like soft limits better in general but they are also more complicated to implement well) for that attribute for that dwarf.
This is to say, if strength ranged from 1 to 20, and dwarves typically began the game with a strength of 3-5 with some few starting a little stronger or weaker, there would also be another number that represented how far that dwarf could hope to develop his strength before he would 'peak'.
Next, base each dwarfly skill off of one or more of the attributes. Each skill should require N in each stat to acquire novicehood, and another number which would represent the point past which the dwarf can achieve full mastery in the skill. For example, hammerdwarfing might require a 5 strength to even reach novice status, but in order to become a hammermaster it might require a 15 strength.
During the course of becoming a hammermaster, his strength would of course raise on its own, but if it stopped at some point because of his stat limit his training would be complete.
In some cases you might have a skill which requires more than one skill. To become a novice blacksmith you might need a 5 strength to even get started but only a 1 intelligence stat; but to become a master you might only need a 10 strength but would require a 15 intelligence or somesuch.
These limits would also allow you to make it fairly difficult to acquire certain skills early on in the game, because a dwarf would have to either be very lucky or train up to achieve the basic stats.
Finally, we come to the idea I started with, which is adding a civil service noble position, who is a dwarf with an office containing at least two chairs and a desk.
This dwarf evaluates the capabilities of other dwarves, and gives you an increasingly good idea of what they'd be good at. In the beginning you would just get a better idea of the dwarf's particular stats, but as your civil service dwarf (who would himself have to be one of your smarter dwarves, despite the fact that you would have no way of knowing which one would be smart enough yet) got better and better, you would get a clear notion of what evaluated dwarves would be best at, and whether they could achieve their maximum potential in any skill or if, perhaps, they should be sent off to the front lines be put on permanent haul+pump duty.
Finally (and I think this has been mentioned in other contexts) corruption could be fun here as well. A dishonest civil service dwarf would give you a false impression of the skills of other dwarves based on how much he liked them or not, whereas an honest one would usually try to do good (but watch out if his child wants a job).