Eventually, you emerge from the shed pushing a wheelbarrow containing the proof you have somehow managed to construct. Up the garden path you come to where the typechecker is waiting to inspect your work. I hope you've got it right. If you haven't, you'll just have to go back to the shed and make another one.
The search space consists of complete things, because, whatever you get up to in the shed, that's the only language in which you can communicate with the typechecker. Perhaps, you can take components outside, first little ones, then larger composite ones, leaving us perplexed and intrigued as to what you can possibly be doing.
If you want to explain to how to prove a certain class of theorem, you have little choice but to give a schematic presentation of the proof term in a badly motivated bottom-up way. Of course, this is the traditional style of mathematical writing. It is also the usual way programs are developed. Is there another way? Yes.