I have been a software development consultant for a few years now. I sometimes get asked by friends and colleagues why I prefer being a consultant rather than becoming a full-time employee (FTE) at one of the many companies I have done contract work for. Here are some of the reasons why I think consulting is the way to go.
- It forces you to stay on top of your game and as a result you end up becoming a very well rounded developer
- You can't get away with just learning the technology stack of a single company and eventually becoming stagnant. You need to stay marketable, follow trends and learn the latest and greatest.
- When working for a consulting company you are encouraged to attend conferences, do public speaking, etc. to enhance your career.
- You get exposed to many different technologies and have an opportunity to learn a lot
- I have never been hired onto a client assignment knowing every single technology listed on the job posting. There are always some things I don't know beforehand, and as a result of the assignment will get to learn those.
- You end up doing a lot more new development (green-field projects) than you would ever do as an FTE
- Consultants are rarely brought in for maintenance work, carrying the on-call phone, or doing production support; things that most developers are not too found of.
- You get to shop around and see how multiple companies do their software development
- Eventually you become really good at picking up good habits from your clients, stuff you see that works, and assisting other clients in doing the same. That makes you really valuable and your work rewarding (what you do matters).
- You typically don't do a lot of overtime, but when you do, it is paid
- Clients are much more likely to ask their FTEs to do overtime than a consultant that they have to pay extra for. Contracts are typically written with a 40 hour workweek in mind. Any change in that requires paperwork and additional expense to the client (throwing off their budget), so most clients tend to avoid that.
- You get to work with and learn from really great people
- Consulting companies thrive on having the best and brightest minds and they ensure their employees do a lot of knowledge sharing. QSI, the company I consult for is excellent at doing this.
- Most clients you end up working for have some really good people as well (architects, tech leads, etc.), that you get to learn from.
- You are not stuck in the same old job
- After few years in the same place many developers get bored and start wondering if the grass is greener somewhere else. Being a consultant means you will have a frequent change of scenery, so you rarely have time to get bored. If you like your client and do a good job, you can likely get renewed with them as long as you care to (for years). If you are ready for something else, then complete your assignment and work with your consulting company to get a placement somewhere else. It may take some time to get it worked out (you want to make sure you end things on a good note with the client), but it is a lot easier than having to quit your job and find a new company to work for.
Lastly, it is just a lot of fun!