I've been in contact with decompilers for the past 4 years (jad, cavaj, JD-GUI), as part of the project I'm currently working as an employee during my daytime job. I know how internal classes are represented on disk, I have experience working on a big project using design patterns (so I can recognize a visitor, strategy, proxy or bridge pattern if I see one).
I also studied obfuscation tools at some point during this period (yguard, proguard, obfuscate4e).