It depends on how well you designed your application.
The good design is the one when you don’t need to read low-level functions to understand the whole. It is not just about reuse, it is about not needing to go too deep in the details to understand the whole picture.
If you need to “wade through 100 tiny functions”, it is a bad code you are looking at, and it is bad not because it has tiny functions, but because functions are wrong.
PS In Java they are usually called “methods”. Your use of the term “function” was why I suspected that you were programming something like C.