Back in the old times there were hackers and programmers.<p>Programmers had a degree and understood malloc and bitwise operations. They were engineers, but they were not "cool". "Programmer" wasn't a good word anyway, so they called themselves "Software Engineers". They worked for big companies, creating boring software for managing numbers and creating graphs in a fancy way. Yep, there was only IE4 back then and nobody ever thought that you could create JS script more than 100 lines, which does something good, so they had to learn and use Delphi, Visual C, etc.<p>Hackers were people that understood security flaws and exploited them ( also they were the guys that steal from someone's credit card and similar. ) Pretty much the hackers were those people who dropped out of school and didn't want to go back, because they hated programming complex stuff. This didn't make them non-experts. In fact back in those days hackers didn't need to work for a big company and made money with doing fancy network-routing kernel-hacking stuff for a local internet provider, buying / selling three-letter domains ( old times remember! ), creating and supporting websites for pirated software, MP3s, etc ( Imagine Morpheus' matrix team ... ) Hacker was more like a criminal. ( Remember the first movie, titled "Hacker"? )<p>Nowadays :<p>Now I see some different perspective here. You got your CS degree for a couple of years and you see that the technology from your uni is obsolete. Yep, C, C++ are here for good, but if you want to deal with Web applications and web development you'll have to know Zepto, Backbone, Angular, LESS, SCSS and nothing of this is old enough ( and perhaps will never be ) for university.<p>So in summary ( IMHO ) :<p>Engineer for me is someone who does low-level programming ( C, ASM, C++, etc. ) and knows what Hz is by definition.
Developer (web) is someone who develops some stuff and don't predict Memory flaws and doesn't do flow-charts for most of his work ( Although, he does some testing :D ).
Hacker (nowadays) is a Developer on the edge - He is a developer, but also wants to enhance his work into an art. ( writes plugins, frameworks, etc. )