ASP.NET Security Consultant

I'm an author, speaker, and generally a the-way-we've-always-done-it-sucks security guy who specializes in web technologies and ASP.NET.

I'm a bit of a health nut too, having lost 50 pounds in 2019 and 2020. Check out my blog for weight loss tips!

Comparing Consulting, Contracting, and being an Employee

Published on: 2014-05-26

I've worked in IT as a programmer for a while now and have spent quite a bit of time working as an employee, consultant, and contractor. I thought it would be fun to talk about the differences between them in case anyone out there is considering a change from one to the next.

A couple things to note before I get started:

  • I've been working primarily as a computer programmer for about eight years now, but for about six of those years I've been trying to be about more than just writing code. I really think of myself as a problem solver who happens to write code, but I live in a world where businesses expect their programmers to have the attitude of "tell me what to build and I'll build it". As a result, until recently I never really felt like I fit into most of my positions, which may have altered my perceptions a bit.
  • With a few notable exceptions, most of my employers and clients were small companies. The smallest was a music store that had 5 full-time employees after a couple of rounds of layoffs and people quitting, and the largest was (and is) a software company around 130. While I did have one contract and a couple of clients at large multi-national firms, my focus in this post is on my experiences with small companies.
  • All of my contracts were as a W2 employee and I worked through a placement firm - none as a 1099. I had set up a business so I could have done a 1099, but due to circumstances I don't need to get into here I ended up either working as a W2 employee or going on full-time at all of the companies I wanted to contract with. That also means that I didn't have to worry about doing the self-employment paperwork that 1099 contractors have to do.

Life as a contractor

How do I define "contractor"? In my case, I was paid by the hour by a placement firm that took care of employment paperwork for me, but I essentially worked for a company. I had a typical interview process, I was onsite at the company all the time, and I had little-to-no interaction with any other contractors with the placement firm. All of my contracts had a fixed length, but all of my contracts could have continued longer if I wished. As I mentioned above, since I worked as a short-term employee through the placement firm rather than being self-employed, I didn't have to pay self-employment taxes or file tax paperwork.

My day-to-day life as a contractor was fairly easy - people generally expected me to do what I could while I was there and no more. Some of the contracting companies allowed me to work overtime when I wanted, but none of them forced me to since they all had salaried full-time employees they could lean on for that. (Sad, but true....) When I did work overtime, I didn't mind nearly as much as I did working as a consultant or employee, since I got paid extra for the extra work. (It's only fair, right?) I also found that as a contractor, I didn't get as stressed about my environment as I might have as a full-time employee, since I knew that my contract would end at some point and I could choose not to renew if necessary. Finally, working at jobs on a short-term basis really allowed me to see a wide variety of companies and approaches and to meet a lot of people, and these have helped shape my opinions about what works and what doesn't. And as a short-term contractor, more employees opened up to me in ways that they might not have if I were going to be there long-term, giving me even more insight into how the company was and wasn't working well.

On the other hand, as a contractor, since I typically wasn't invited to company meetings, I often found myself out of the loop when it came to process or personnel changes, even when they affected me. I often had to ask the full-timers to fill me in on what happened when I started noticing changes in my surroundings. Since I was clearly a temporary employee, I often got put on the more difficult and/or unpleasant assignments, and rarely was given the responsibility to complete them on my own. Career development was also completely on my own; I had to spend my own time learning new technologies and tools, and I had to create my own leadership opportunities. Perhaps the most frustrating part for me was that I hate looking for jobs, but being a contractor meant that I basically always had to have an eye on the job market.

Overall, I'd say that the contracting life is great if you're not sure where you want to go and just want to try out a few different experiences. It's also pretty good if you want to have a lot of control over which types of opportunities that you work on. It's a lot of work, though, even if you go the W2 route and skip the self-employment paperwork.

Life as a consultant

When I say "consultant", I mean that I worked for a single company, but that company would assign me to various projects for third parties. As a consultant, I didn't have to go through an interview process for a new project, but I also had less control about which projects I could take. While some consulting firms encouraged their employees to work on the client sites, I typically spent most of my time at my employer and called my clients (sometimes daily) when I had questions.

My day-to-day life as a consultant varied greatly depending on the project I was on. One month I'd be on a project where the clients were fairly tech-savvy and all I would do was implement their designs, the next I'd be on a project for a non-tech-savvy client and I would be leading a lot of meetings, and the next I'd be teaching a client about a technology with which they weren't familiar. Sometimes I'd be put on a project where everything was set up well and basically I wouldn't have to screw up, others I had to put in super-human effort and the project still failed because of decisions made long before I got involved. Either way, most of the time I knew I'd only be on a project for a short period of time.

Most of the time, though, as a consultant you are surrounded by people who really know what they are doing. They eat and breathe technology, so I rarely ran into a problem where one of my peers didn't have an answer. (Unless it was a problem for which I was the resident expert, in which case I was out of luck.) In such an environment, nearly everyone had energy to tackle new problems, and it was very hard for your skills to atrophy.

The hardest part for me being a consultant is that I had an incredibly hard time moving beyond pure code-writing, MBA or no MBA. As anyone who reads my blog knows, I think that chasing technology is a losing proposition (both from an individual standpoint and the standpoint of the business that cares about profitability) and we as technologists need to become experts in business areas as much as technology stacks. In other words, I didn't really have an opportunity to learn the skills and gain the experience necessary to become a leader of providing true value to clients until I left consulting to get experience as an employee. The other difficult thing is that you're forced to be on the cutting-edge of technologies, and for the most part you have to spend your free time to do it.

If you're straight out of school, consulting is a great experience because you're surrounded by knowledgeable people, and you can get a wide variety of experiences in a relatively short amount of time. Or if you were a stereotypical "tell me what to build and I'll build it" developer and you really loved working with the latest and greatest, consulting would be a little slice of heaven for you. Don't expect to get a lot of quality leadership and management experience, though, and when you do you'll need to learn mostly by trial and error. If you do like working with end users and problem solving, you may need to get some experience elsewhere and go into consulting as a pre-sales engineer or target a firm that really focuses on problem solving, not technology implementation. (If you find such a company, please let me know.)

Life as an employee

When I talk about being an employee, I'm referring to experiences where I was essentially a staff member hired to support internal personnel. I am currently working for a company that employs programmers to work on a software product, but my job is to support the internal software needed so that they (and others) can do their job. As an employee, the company that sees the most benefit from my effort is also the one that signs my paychecks, which is not the case as a contractor or consultant.

More than either contracting or consulting, the quality of life as an employee varies greatly with the environment you are in. Contractors can take solace in a bad job by saying it's only temporary. Consultants can bury themselves in a project, or patiently wait for the next project. For better or worse, employees are stuck in their current situations for the foreseeable future. (Remember, I've worked primarily for small companies. I would guess that large multi-nationals would have more opportunities to move around within the company.) That means that it's incredibly important to ensure that you get into the right position in the first place. What makes it tough to decide whether a position is right for someone is that we all have different needs and wants. To say that "I liked this place because it was a good place to work" is pretty useless. To prove this point, recently I changed contracting jobs and found someone moving from my new firm to my old one. We each were much happier, and our personalities much better suited, to our new jobs.

The thing that I like most about being an employee is that I have an opportunity to really dig down into the cause of an issue and am able to be an active part of creating a long-term solution. I really get to use my leadership skills to do more than merely shape the technological underpinnings for a piece of software. As a result, I get to work together with a wide variety of people to solve a wide variety of problems, but since they're all for one company, I get to see how all of the problems are interconnected. As a bonus, my employers past and present were willing to help develop skills, both related to technology and not.

Perhaps the hardest part about being an employee is that people don't respect my time as much. When I was a contractor or consultant, people knew I was being paid by the hour, so they looked to minimize the amount of time I spent in meetings or performing activities they could do, like configuring software. As an employee, I get dragged into a lot of meetings and projects that aren't necessarily the best use of my time.

So which situation is best?

If you're just starting out in IT, I'd recommend going into consulting for a few years. You get to see a wide range of projects, work with a number of different technologies, for a variety of company types. This experience allows you to hone in on what works for you.

If you're experienced, your mileage will vary depending on your goals. If all you want to do is play with cool technologies, it's tough to beat the environment that a good consulting firm is able to provide. If you're looking for a lot of flexibility and aren't looking for career growth, contracting may be the way to go. If you're looking for stability, or if you're looking to develop your leadership skills, looking for full-time employment is probably your best option. As for me, I'm happy in my current situation as an employee, because the particular role fits me. If I do start looking again, I'll probably look for all three types of roles and focus on finding the best situation for my unique focus within IT.

This article was originally posted here and may have been edited for clarity.