Right now, experience gained is based on the number of tasks completed multiplied by the value of each task. This makes engraving very easy to boost, because you can assign huge amounts of tasks to do, each task requires no supplies (so no time is wasted hauling goods back and forth), and it has a high per-task multiplier. Mining through loam and sand is similar; even an unskilled miner can chew through the stuff at a respectable rate, and it's worth just as much as mining through granite is.
In contrast, things like architecture and siege engine operation are much harder to level, the former because it's difficult to create large numbers of (valid) tasks and the latter because loading siege engines takes a really long time at low levels.
Thus, my suggestion is to make experience based instead of the time spent at a given task, with a multiplier for the task type in question. This would make it harder to level up miners on sand, but "easier" on harder materials (mining out a moderately large chunk of granite would significantly boost a miner's skill). A siege engine operator might get halfway to Novice just by loading his first catapult, and a budding architect set to design your new 7x13 bridge would get all the way up to Proficient from nothing (or maybe not quite that high, but you get the picture). Per-task multipliers would still be in effect so you wouldn't end up suddenly getting 7 legendaries all at the same time sometime in your second year, but on the whole I think this would smooth the disparities between different job types significantly.