In general, an obsessive and enthusiastic programmer who enjoys exploring and perfecting technologies. Sort of.
The meaning of 'hacker' is extremely difficult to define. Hackers have their own rich language, food, history, sense of humour, drugs, operating systems, heroes, arch-enemies and ethics. A hacker is someone who is part of this rich culture.
They are a very productive lot. Without hackers, the only computers around would be huge mainframes owned by governments and large corporations. Nowadays, the main hackerly contribution to society is giving away high quality operating systems and applications for free. What would the internet be like if you couldn't get freeware ftp and http daemons, and the operating systems to run them? Pretty dire.
The word 'hacker' is not synonymous with 'computer criminal'. That is a relatively new meaning derived from bad journalism and technofear. Informed people call computer criminals crackers, spiders, attackers and vandals, but never hackers. Curiosity is a strong part of the hacker nature, and this can lead a hacker into places where he/she shouldn't necessarily be.. However, destroying information and infringing peoples privacy are not hackerly traits.