Often times, the prefix represents the type. eg. s for a string, i for an integer, etc. Which is kinda redundant, as discussed here:
Eventually, programmers who never understood Hungarian in the first place noticed that the misunderstood subset they were using was Pretty Dang Annoying and Well-Nigh Useless, and they revolted against it.
Now, the article I just quoted suggests that there are two different types of Hungarian Notation one can use. Apps Hungarian or Systems Hungarian. The kind I described earlier is systems hungarian.
Apps hungarian, per the article, is where you don't preface the variable name with the name but rather something, in theory, more meaningful. eg. instead of just saying $sAddress, because it's a string, say $sAddress or $usAddress, depending on whether or not the string has (for example) had the html entities properly encoded against to protect against XSS. In this case, s means "safe" and us means "unsafe".
The problem with Apps hungarian is that it's a PITA if you don't know what all the possible prefixes are, and someone whose just diving into the code for the first time isn't going to have a clue what those mean. In fact, for them, it'll probably cause more confusion than anything else because you simply have that much more to remember.
For example, which is easier to remember? "gghreersdgszxcgs" or "The remote control doesn't work"? You have less characters to memorize in the first case but in the second case, you're not memorizing characters - you're memorizing entire words. Meaningless prefixes (atleast from the perspective of a new programmer) are only going to confuse you. They make the variable names unnecessarily complex and in general, make them harder to remember (because not only do you just have to remember the variable name - you have to remember the meaningless prefix, too).
So, all in all, I think hungarian notation sucks and the world would be better off if it just died.
