The problem with any skill system that rewards skill use directly is that it becomes prone to abuse. Effectively you have to have a limit, either hard or soft, on how often the player can use skills or at least how much XP is distributed to them.
One way to do it is to track how often the skill is being used and provide diminishing returns, so if the player is jumping around to boost athletics, eventually you'll hit a brick wall where it's more trouble than it's worth to do so.
Another way is to simply limit the amount of times the skill can be used successfully in the quests and gameplay themselves. Stealing is easy to level up in Skyrim because you can steal anything from anyone and get XP... but that's only the result of having lots of random crap in every NPC's inventory. Get rid of that stuff and suddenly leveling up stealing becomes more interesting simply because only certain NPCs will have things worth stealing. The same obviously applies to say, respawning trash mobs and combat skills.
Yet another way to do it is to put a cap on how often the player can raise skills before performing some other task. For instance, you could stop all skill leveling after the player has leveled X number of times, until the player goes to get a night's rest at an inn.
A "softer" way to handle it is to reward skill synergies more than skills themselves. Let players get a boost to their stamina by leveling up heavy armor, one-handed and two-handed weapons, etc. and now the player doesn't need to grind one particular skill to get what he or she wants. Same goes for different types of magic all providing boosts to teach other. If you balance this right you won't feel the need to grind one particular thing, though it doesn't necessarily stop all grinding period, just diminishes the incentive to waste time doing it. This is more realistic than being great with daggers but useless with swords, as well, and still lets players specialize in one thing but remain decent at other skills, without simplifying skills down to the basics.
One final way to do it is how Fallout did it - add a global time limit or some other impending event that prevents the player from just standing around and grinding skills. It doesn't have to be "lose the game if you take too long", but could be, say, a time limit on one particular quest, and if the player misses it then they have to repeat it again. In Fallout, a lot of skills took time to use (and raise via books) so before that time limit was rendered moot halfway through the game, there was a concern that grinding might be counter-productive.
Even so, just about any leveling and progression system can be broken when you have an infinite way of gaining whatever currency the progression system uses. Doesn't matter if you have per-skill levels or not, if you can gain XP repeatedly then one way or another, players will try to exploit it.