This post was originally an answer I left to a Stack Overflow question from 2008 about Apps Hungarian notation.
As an engineer, not a programmer, I immediately took to Joel’s article on the merits of Apps Hungarian: Making Wrong Code Look Wrong. I like Apps Hungarian because it mimics how engineering, science, and mathematics represent equations and formulas using sub- and super-scripted symbols (like Greek letters, mathematical operators, etc.). Take a particular example of Newton’s Law of Universal Gravity: first in standard mathematical notation, and then in Apps Hungarian pseudo-code:
frcGravityEarthMars = G * massEarth * massMars / norm(posEarth - posMars)
In the mathematical notation, the most prominent symbols are those representing the kind of information stored in the variable: force, mass, position vector, etc. The subscripts play second fiddle to clarify: position of what? This is exactly what Apps Hungarian is doing; it’s telling you the kind of thing stored in the variable first and then getting into specifics — about the closest code can get to mathematical notation.
Clearly strong typing can resolve the safe vs. unsafe string example from Joel’s essay, but you wouldn’t define separate types for position and velocity vectors; both are double arrays of size three, and anything you’re likely to do to one might apply to the other. Furthermore, it make perfect sense to concatenate position and velocity (to make a state vector) or take their dot product, but probably not to add them. How would typing allow the first two and prohibit the second, and how would such a system extend to every possible operation you might want to protect? It can’t, unless you were willing to encode all of math and physics in your typing system.
On top of all that, lots of engineering is done in weakly typed high-level languages like Matlab, or old ones like Fortran 77 or Ada.
So if you have a fancy language and IDE and Apps Hungarian doesn’t help you then forget it — lots of folks apparently have. But for me, a worse than a novice programmer who is working in weakly or dynamically typed languages, I can write better code faster with Apps Hungarian than without.