It's easy to confuse a computer programmer with a software engineer or to refer to either as a hacker, but there are some differences between these terms. Knowing the distinctions could help you communicate better about different development processes (and also not piss off someone with one of these titles).

Yeti founder and president Anthony Scherba clarifies on The Huffington Post:

Hackers build things quickly to try to get them off the whiteboard and into your hands. It's more about proving a concept than caring about long-term quality. [...] For us, hacking is mostly used in the prototyping phase. [...]

Programmers are entirely focused on writing code and getting features done the right way, so the features are available for later use and integration. Programming is the act of actually swinging the hammer and building the software well. [...]

Engineering is when the headphones come out and the software development team ends up at the whiteboard. It's the process of looking at what should be going on with the system and where the programming tasks should be divided up. [...]

Computer scientists look at the tools we're currently using, how they work now and how they can work in the future. [...] A good example of a computer science pursuit is figuring out how to make the languages we use more efficient, readable and speedy. 

Although there are clear differences between these skills and titles, one person can use multiple skills when working on software. I know I'm not the only one who's confused software programming with software engineering. If you work with a software development team or just want to use the right terminology when discussing this topic, head to Scherba's post, which offers other examples and descriptions.