'''One who programs the computer''', i.e. ComputerProgrammer of course, you could argue just how much this is true (e.g. assembly vs. interpreters vs. spreadsheets etc.), for the sake of this argument, I'd say a program is 'adding new processing logic to a computer system'. e.g. doing a row summary in a spreadsheet is not programming, but creating a new algorithm for the spreadsheet would be.. which is still not definitive.. chances are most people here will get it though.. ---- '''One who uses software on a computer''', i.e. SoftwareUser usually a human, who is engaged in coaxing an unwilling computer into doing what he wants (the human, not the computer). Some people are so inapt with regards to computer, that they tend towards ComputerBashing when things don't happen the way they expect them to. See: http://sickasspics.homestead.com/files/Baddayatwork.mpeg In the old days, such a person operated through a proxy known as the ComputerOperator, who was also an instance of SoftwareUser. ---- '''One who administers a computer to keep it running''', i.e. ComputerAdministrator ---- Obviously both the ComputerProgrammer and SoftwareUser are using the computer, just in different (but overlapping) ways. The ComputerProgrammer also uses software in the course of that programming. And the SoftwareUser necessarily uses the computer in order to use the software. In some cases, changing options in the software changes the way it operates on the computer and is, therefore, a rudimentary case of programming, just not in a formally defined language. In other cases, e.g., creating a CAD drawing, the SoftwareUser may be writing in a formally defined language (albeit via a graphical interface). See how AutoCad works.