The goal of programming is not to develop specific abilities, but to develop specific skills.
The difference might seem trivial - it isn’t.
An ability is the raw capability to perform a task. It means you have the physical tools to run five miles at an 8-minute per mile pace.
A skill is the capacity to predictably display that task in a specific environment. This means that you can run five miles at an 8-minute per mile pace regardless of the situation.
We don’t care how fast you can run if you aren’t also reinforcing an ideal stress response, psychological and tactical strategies, and moving with good enough technique so that you won’t break down over the course of months of repetitive work. Your run times matter, of course, but they’re only one part of a much more complex set of skills that need to be developed.
The main problem that any skill solves is how to produce a consistent outcome in different situations. This may seem obvious, but most trainees preparing for a SOF selection assume that if they can ruck a long distance, run a fast 2 mile, tread water and do water comp drills during training, they can just replicate that in selection.
So, why is this so often not the case?
Because a selection environment selects individuals with a set of skills, not just physical or mental capacities. Think of the difference between shooting a basketball on an empty court with no one defending you vs trying to make a shot in a game in front of 30,000 fans and some freakishly athletic guy sprinting to block you.
Training is the empty court, selection is the game.