Recently, I have been talking with a number of my friends who are considering taking the plunge to become consultants. They think that being a consultant is all ponies, unicorns and writing code. I'm here to tell you, it ain't. Being a consultant is much more than writing code. I brought this topic up with fellow coder, author and consultant John V. Petersen. We decided to write this editorial together on the eve of RailsConf 2010 (more about that later) - and here are some of the highs and lows of running our consulting businesses over the past 15+ years. Consider these things before you consider becoming a consultant:

Taking on Fixed Bid Work

Rod: The biggest mistake I have ever made was taking on fixed bid work. While it may seem appealing, fix bid work sets up an adversarial relationship with a client. You start with preconceived notions (the fixed bid) and move from there. Every change to the original estimate (which, face it, was a guess) causes confrontation between the customer and you. You should always bill by the hour. That way customers know exactly what they are getting for their dollar.

John: Exactly - fixed bid work allocates 100% of the risk to the consultant. Indeed, software development is an incremental process and evolving process. In other words, it's not static. The best projects are the ones that properly allocate risk and recognize the true nature of software development.

Writing Books

Rod: One of the easiest ways to go broke is to write a computer book. It's an ego-gratification process, not a wise business venture. If you are going to write a book, write because you like to write. You are not going to get rich doing it. Face it. You are not Steven King.

John: Rod and I have been through a number of book projects together. When you are writing, you are not coding, which is presumably how a consultant makes money. Writing books about software development should be a means to an end - to be used as part of promoting yourself.

Training

Rod: Training is a good thing on a number of levels. It's a good way to generate revenue and it's a good way to understand how people learn. It's also a great way to market yourself as a developer.

John: Training is a great way to earn business. Often your students are potential clients. Training also forces you to stay on top of your game. When you are up in front of a room of students for eight hours a day, there is no place to hide.

Sales and Marketing

Rod: As a consultant, you are always selling: whether it is training, having lunch with fellow developers, answering a question, writing a blog post, posting something on Twitter, etc.

John: As much as technology is a part of our business, the thing that clients purchase from you is YOU! It is our individual experiences, instinct, and intuition that people purchase. It is people, not technology, which separates good consultants from bad ones.

Sharing

Rod: In kindergarten, we learned that you get a lot further by sharing. As a consultant, the same lesson is true. You will come across opportunities that you cannot fulfill on your own. If you share ideas, skills and opportunities with other developers, you will find yourself getting a lot farther than if you go it alone.

John: Whatever I have achieved as a developer, it is the result of somebody taking the time to share something. I fondly remember the days on the CompuServe FoxForum when I was getting started. In a way, I felt that I was a full-fledged consultant when I started to share what I have learned.

Learning Is Fundamental

Rod: As a consultant, you have a responsibility to choose the right tools for the job. The only way you can do this is to be in a constant state of learning. Sometimes learning will take you way outside your comfort zone. At the beginning of this editorial we mentioned that we are at RailsConf. Both of us are primarily .NET developers. We are attending RailsConf to learn new tools and technologies that may or may not apply to .NET development. As a consultant, you need to stretch your thinking into new areas, the training for which may not be billable nor applicable to your current work.

John: In this business, your skillset is expanding or contracting relative to the world at large. As an old friend of ours said, if you wanted a career that does not change, dig holes, because the technology has remained the same for several thousand years and is not likely to change.

Losing Customers/Keeping Customers

Rod: The easiest customer you can work for is the one you already have. Consulting is all about relationships and the longer term they are, the more successful a consultant you will be.

John: The fact is, through the course of your practice, you will gain new customers, and yes, sometimes you will lose them. The key is to understand who your customers are, their needs, and where you stand in relation to that. Picking up on the sharing point, sometimes it may be prudent to refer clients to a fellow consultant if circumstances warrant it.

Job #1 Is Delivering Value

Rod: At the end of the day, the most important thing about being a consultant is about delivering value. It is not about using the latest syntax, latest cool tools or the latest bling. It is about ROI. Your customer is paying you to deliver value, and as a consultant, you are duty bound to use your experience, insight and intuition to deliver just that.

John: In college I played competitive tennis. The USTA had a phrase as part of its rating system: “There is no substitute for on-court performance.” Software consulting is a business where value is delivered through applications that deliver value. You can write all the books, articles and give all the training you want. If you are not delivering applications that are useful to your customers, you are not a consultant; you are pretending to be one.