Actually, decompiling isn't as easy as you make it sound, but yes, it is possible.
Like you said, code will be a HUGE mess. Unless, of course, you decompile a .NET program. You get everything exact. All classes, namespaces, variables, methods.. Everything is named and coded exactly the same unless the program is obfuscated.