Developing software requires high level/architecture type decisions that you mention in your first paragraph. It also requires solving many small fizz-buzz size subtasks, which are necessary and demonstrate competency.
A marathon runner doesn't need a stellar 100 yard dash time, but they should at least be able to jog 100 yards.