Just thought I'd put a note here since you guys don't suggest something like nerdtree I'll post the single most benefit ( for me ) to using it.
That is, like ctrlp, you don't have to think about how you want any particular file to be opened before hand as with :e .
with :e, I have to decide if I want it in a split or a tab before I enter. At least as far as I can tell, it replaces an entire buffer -- so, it can have undesired side affects.
Where as with nerdtree, I can find a file, hit i to split it or hit T to open it in a tab. Works especially well ( again, for me ), when I map my :NERDTreeToggle to k That way it's never always taking up a lot of space unless I absolutely need it to be, and it's mapped where it's easy for me to reach ( despite not being able to use homerow like a normal person... )]
I'll also note a downside to it, is that if i :e somefile.txt, in order for it to show up i have to refresh the nerdtree window. ( -r for full refresh or -R for root directory only )
Also, a downside to ctrl-p with cache turned off, is if you're in a larger project, it takes forever to load every time.