I feel like these two books plus Art Benjamin's Secrets of Mental Math  would put your Fermi calculation abilities on another level.
"This book shows you how to build insight and understanding first, so that you do not drown in complexity. Therefore, our approach will not be rigorous -- for rigor easily becomes rigor mortis or paralysis by analysis"
I'm sure including the whole book is easier
I can only agree, but I may be biased because I'm a lot better at the problem-solving than the mental-math :). I'm always impressed by the mental agility of people like Art Benjamin, but I'm not convinced it's quite as valuable when it comes to it... given that computers can outperform him by orders of magnitude.
Btw, both of Mahajan's books are great, but if were to say which was more valuable to the general public I'd say it was Streeth-fighting. In my educational efforts, I've always been astounded at how bad people are at minimally sanity-checking their results when doing math problems. Even order-of-magnitude sanity checks seemed to beyond most of my students. In physics you at least have units to sanity check against, but you'd be surprised how few students actually understand even unit-math enough to be able to check that they weren't comparing an acceleration value (m/s^2) to speed (m/s).
(Assuming SI units. You can do this completely generally by having abstract units "dimension" and "time", "mass", etc.)
 If there's one complaint I have against Math education it's that all my educators actively encouraged eliding the units even for problems based on physics. I'm not sure if this was just to try to trip students up on tests, but it was absolutely horrible from an educational perspective. ALWAYS keep the goddamn units so you can at least minimally sanity check your result!
For what it's worth, as a mathematics teacher, I do my best to encourage my students always to keep their units (though I do bow to tradition by not requiring it). This started in helping to guide them through setting up differential equations , but, when I saw what a good tool it was for organising thought, I exported it to my other classes as well.
(It's just occurred to me to compare dimensional analysis with Haskell's if-it-compiles-it-works property: it doesn't guarantee correctness, but at least it ensures only interesting errors. I try to give a lot of partial credit when grading, but these days I am ruthless if a proposed differential equation involves adding, say, a distance and a time!)
 To the extent that I am pretty confident that, if any of my students reads this, then he or she will know who I am.
I grew up in Australia with SI units I do a lot of work with Fluid/Thermodynamic calcs. I have a bunch of reference values in my head. I know 1 Atmosphere is ~101.3 kPa, I know speed of sound in dry air is ~330 m/s I know how much energy it takes to raise the temperature of various substances. I know the densities of common materials in my head. All of that helps me sanity check calculations - at a glance I can see things 'this fan is producing too much suction, not possible' or 'There is not enough input energy to see a temperature rise that high' things like that.
I have no idea about any of the non SI units. I couldn't tell you how long a "yard" is or how heavy a "pound" is usually it is fine but occasionally I come across numbers in technical papers or datasheets or similar with stuff in wacky units - PSI, BTU and Fahrenheit are the worst offenders when I have to deal with them it just blue screens my mental models. I see those units so infrequently I have no concept of what a 'reasonable' value expressed in those units looks like. I imagine people who don't work in SI units everyday hit the same difficulties in reverse.
Obviously this is slightly more lax and perhaps error-prone than your standard m/s or m/(s^2), etc., but it's one of the lamentably few things computers can do well!
EDIT: ... and I should elaborate: In some sub-fields of Physics they usually go even further and just re-normalize everything to units of 1, so that e.g. the speed of light is c is 1. At that point it's really just about convenience since sqrt(1) = 1, and 1^x = 1, etc. (Lorentz Transformation.)
For example, if I am looking for a force and I get an answer of 1000 lbs, then dimensional analysis tells me that at least I got a force; but, if my intuition tells me only that the actual force is on the order of magnitude of 1000 N, then I don't know whether my actual answer is way too big, way too small, or about right, unless I know how to convert between Newtons and pounds.
Incidentally, while "units of 1" make correct calculations easy, I think that they are a bad idea precisely because they subvert unit checking; it's hard to know just by looking that 1 + 1 is 1 speed of light + 1 light-year, and hence dimensionally inconsistent.
(Even keeping all SI units can miss some important distinctions; for example, nothing about their SI units (inverse time) allows us to distinguish angular frequency (https://en.wikipedia.org/wiki/Angular_frequency) from temporal frequency (https://en.wikipedia.org/wiki/Frequency), and yet much woe accrues to he or she who does not distinguish radians/time from cycles/time!)
With Fahrenheit perhaps the worst of the worst (scum de la scum?), because at least you have an intuitive idea of the meaning of 0 PSI and 0 BTU.
Don't understand what something is? Just look at the unit. It tells you!
a = b * c
c = a / b
b = a / c
"I should think so"
Mahajan also offers paperback and ebook options.
> it is certainly less convenient to have a PDF
There's your answer.
In fact, I liked this course so much that the CTF team I started back in college was named "The Art of Approximation in Science and Engineering," the name of the course taught by this professor / that used this book.
you can enroll and view the archives.