I think for smithing it should be set like this:
A) Each item you smith will give you different amounts of XP based on:
1) The rarity of the items being used.
2) The difficulty of smithing the item.
3) The complexity of the recipe, and the complexity of the "item".
1 - According to Phitt's Alchemy mod, there are keywords put in place to check the rarity of each of the vanilla items. I personally think that if the item requires rarer metals to use, such as Orihalcum, Ebony, etc, it should give more exp, as opposed to a common metal such as iron.
2 - Glass requires (lore wise) a specific temperature, a specific hammering method, and hammering strength to be created, as opposed to Iron which is very simple to create. As a result glass smithing should give more exp than iron smithing. This should remain true for all other smithing creations.
3 - If the item requires more items of varying types, it would be considered more complex. Something like Gilded Armor which requires moonstone, quicksilver, leather strips, etc. Would give more exp than Steel because it's more complex. Also, since a set of armor is a much more complex and involved smithing event than say...a sword or a dagger, then the XP for making the sword or dagger should be much less than making a set of armor.

XP per level of skill in Smithing should be curved upwards somewhat sharply. It's linear right now I think. So earlier levels, smithing iron daggers would actually be a viable way to level up. But it would quickly become useless and it would be necessary to smith more complex things, because of the curve.