The "learn+fuzz" part seems to always produce weird results due to my navigational habits, so I have a zero-dependency very short {ba,z}sh function that allows me to jump to preset locations (kd for "quicK Dir" or "worK Dir"):
$ cd ~/go/src/github.com/my/project
$ kd awesome_project $PWD # create bookmark
Then, anywhere:
$ kd aw # BAM
$ # yay, straight to my project!
Also, if I'm in a project with a "root", like a Makefile, Gemfile, or anything:
$ cd app/controllers/whatever/deeply/nested
$ kd # back to the project root!
$ make
I'll probably integrate it with fzf some day but for now the "prefix thing+match last entry" works well enough.
https://gitlab.com/lloeki/dotfiles/blob/master/shell/kd