In regards to programming, what is the difference between being a contractor, and a consultant?
See this article found searching for "contractor consultant" in Google:
http://it.toolbox.com/blogs/matthewmoran/consultant-versus-contractor-4250
A quote from the article:
A contractor is primarily a technical resource brought in to perform a particular project tasks or provide a set technical expertise. Often, they are placed by another firm. In most cases, their role is very directed and limited to a particular implementation or application.
A consultant, on the other hand, is often brought in to provide a more strategic vision for a given project. They may certainly perform technical development or implementation duties, but are usually more advisory and strategic in nature.
I generally think of a contractor as being a regular employee who's basically paid through a different system. This makes a contractor easier to fire, but they get paid better. They tend to do the same work as regular employees, though. Freelance programmers are generally contractors.
Consultants are generally paid through the same channel as contractors (and so technically are contractors), but they don't do as much typical work. They are generally in more advisory roles, and may not work full time. Professors often hold consultant positions.
In my experience (of hiring contractors / consultants)
You would hire a contractor to DO the programming. The example would be you are short staffed and want extra bodies. The output would be that your project would be completed.
A consultant on the other hand would TEACH you programming. For example, their product would be to improve your skills and methods. I would not expect the consultant to actually churn out a finished product.
As people have mentioned, typically consultants don't do a lot of the low level work, they tell you the right way to do the work and guide you. They're more like outside management than outside labor. Whereas contractors are just outside labor. However, in practice there are plenty of "consultants" who are really just contractors.
I work for a consulting business and everyone has Senior Consultant on their business card. But in reality we are just a body shop who provide skilled resources on demand. Most people who call themselves consultants in IT are really just contractors.
It's so vague and overlapping that everybody sees it differently, but the way I see it:
Contractors are a temporary resource usualy brought in for a specific skillset, mostly for implementation purposes. The company knows exactly what they want, how to manage the process, and takes complete responsibility for results. The contractor owes the company nothing and can walk at the end of thier contract. As long as the contractor, has worked on tasks given to them, they have been successful, regardless of the overall project results.
Consultants provide more guidence and advice. But when implementing, they own the project, they manage it, and are responsible for results. Personally, I feel it's unethical to walk away from a half way completed project, and that certain responsibilities are implied.
That's my take, for what it's worth.
Contractors are largely told what to do from a plan laid out for them
Consultants usually make a plan and don't always implement it. They often do though.
Guy's answer is spot on (doing vs. teaching). From the perspective of hiring organisation:
Contractor is a temporary resource brought in from outside of organisation. Contractors' job is done when they finish delivering products or services specified in their contract.
Consultant is a specific kind of contractor. Their primary job is not just scaling up the existing team, but delivery of knowledge transfer. Consultants invest time into learning a specific topic or coming up with a new way of doing things, then they come to an organisation and transfer that knowledge to the locals, so that the team can carry on doing the job without need for the consultant to stay with the organisation.
Knowledge transfer is a very important distinction. If a company from time to time brings in someone called Jane, a contract graphic designer, to help with creating UI icons she is a contractor (a freelancer if she represents just herself). However, if Jane taught the team to create their own graphics by the way of installing necessary software, guiding them through the process (selecting and evaluating a metaphor, sketching, rasterising, colouring, exporting to a particular graphic format and optimising or whatever the actual process might be, I've really got no clue), practising drawing techniques with developers and so on until they are able to create their own icons, she would have become a consultant.
As a rule consultants are the better paid kind of contractors, because they contribute so much more to the future organisation capabilities.
Consulting has nothing to do with the level of abstraction, it is possible to consult in any area of technology (i.e. knowledge): management, testing, development, integration, deployment and do it on any level of detail, depending on the client's needs. In fact, consulting implies state-of-the-art undertanding of the subject area, hence a consultant can provide both tactical and strategic advice.
How to become a consultant from being a contractor?
Invest your time and money into researching some specific and practical topic. Aim at state-of-the-art understanding.
Start educating others on the topic.
Market yourself as an expert. Eventually someone will be interested in paying you to come and help to them to learn how to tackle this sort of problem.
Remember that your mark-up is in knowledge transfer and not doing that job for them forever.
Sell.
Profit.
All the answers cover the differences quite well (contractors are temporary, low engagement employees and consultants are short term expensive advisors).
However, often "contractor" is seen as a negative term whereas "consultant" is seen as a positive one. I left my full time job to become an independent consultant (particularly in infrastructure and tool work) and one of the arguments made to convince me not to leave was that I was leaving a full time position and becoming just a contractor. Contrast this to how contractors are referred to when they're around.