From my experience with the game, once I get my first and second waves of immigrants, the labors of my individual dwarfs becomes hard to manage. It would be fun it the dwarfs would be able to manage some of these things themselves. I know there is a program called dwarf therapist, and I have used it in the past, but now I am playing on linux so I cannot even use that.
There are probably several other suggestions how to deal with this, and I would like to share my own ideas on this topic:
Dwarf labors:
Old > enable/disable
Suggested > disable / available / focus
Disable: When you disable a labor, then the dwarf will never do this task no matter what. There should be an option to disable all labors, so you can quickly enable only one or a few labors for that dwarf.
Available: When available, the game can enable this labor on that dwarf. This would be the standard setting for new dwarfs (this way immigrants don't fuck up your labor designations)
focused: The game will try to assign jobs to dwarfs who have the required labor focused.
The game will choose a dwarf to do certain jobs:
1) It will ask who is available, and return the result.
2) It will look at all the dwarfs that have the labor focused, and return the result
3) it will look at all the dwarfs that have the labor available, and look at the proficiency of those dwarfs in the required labor, and return the result
4) depending on the results above, the game will designate a dwarf. Ideally, the dwarf with the highest proficiency should do that job and the game prefers specialists. For example, if you have a legendary carpenter who is also a legendary miner, then the game might prefer (if available) to designate the job to a grand master carpenter without any other labor skills. On repeat jobs, the game will try to queue up a better dwarf when possible. If multiple workplaces have jobs, then the game would try to assign multiple dwarfs and focus them on a labor when needed.
5) The game will look at the selected dwarf and the job list, and select the most appropriate job. If the dwarf is, for example, a legendary mason then the game will select the 'craft stone table' job and flag the dwarf as buzzy. The game adds a +1 skip counter to the first job, and loops 1-5 again (each counter makes gives the first job a higher weight when compared to other jobs in step 5, so every job will eventually get done).
6) if needed the labor of the dwarf is changed from available to focused
Hunting an fishing, for example, would only be done by dwarfs who focus on this.
Hauling could work differently too. For example, the game will try to assign hauling jobs to dwarfs that focus on hauling. If all the dwarf that focus on hauling are buzzy, then the game will assign the job to dwarfs with hauling available, without changing their labor to focused. This way you can have a somewhat dedicated hauling team. There could be an option so that dwarfs with focused hauled are not chosen to focus on other jobs when other dwarfs without focused hauling are available (this way your haulers will stay haulers and not become carpenters).
The goal is to automatically assign the best available dwarf to each job while trying to maintain specialization. This way the player can focus on other elements of the game and be certain that no matter how many immigrants arrive, his legendary carpenter will make most beds. You can still manually disable labors or tell dwarfs to focus on certain labors. If there are no dwarfs that focus on carpentry, then the game will automatically tell a dwarf with carpentry available to focus on it.
This idea can be combined with an improved interface that gives you an overview of all dwarfs and the labors disabled/available/focused.
Finally, how these ideas would work together nicely with a message log from your dwarfs like this:
"Your dwarfs request a fishery to process the raw fish."
"Your dwarfs request a carpentry to make some beds."
...etc...
I hope you like the suggestions.
Take care.