"I saw that you are a senior Java consultant for many years, which is what I want to be, too. So I thought I'd connect to you and ask what it takes to get there..."
Somebody actually sent this to me. Somebody that I've never met. Pretty cool. 😃 So, what's the answer?
Well, first, what sort of credentials do I have that make me feel like I can or should answer this question? And why should you give that answer any credence? (When listening to any advice, you should always consider the source. In other words, you should only take advice from someone who is doing, or has done, what you want to do.)
So - let's take a look at my LinkedIn profile. Lots of "senior"'s and "developer"'s all over the place - going back (to some degree or another) a good 15 years. And that's not at just one or two shops. There's more than a half-dozen companies represented there, with stints lasting anywhere from 4 months to 4 years.
From where you're sitting, it's completely fair to doubt that I know what I'm talking about, regardless of background. But, compiling that sort of work history (both landing and keeping those gigs) without a good amount of demonstrable technical ability would require a whole lot of faking people out.
As far as raw technical intelligence, I don't have a ton of publicly-facing evidence to put forth. I've pretty much got this blog, which isn't necessarily packed to the gills with software development genius. But, I have written a few choice posts about Hibernate, JSF, etc. that people tend to stumble upon on a fairly regular basis and find helpful.
As far as success goes, the only objective measure I can serve up is my compensation. And while I'm not comfortable putting hard numbers out there like Patrick McKenzie does, I'll simply say that when I read threads on HackerNews or Business of Software about salary and rates, I don't feel underpaid. (Of course, I always feel that there is some unrealized upward flex available for the taking, but that doesn't necessarily translate into me feeling underpaid.)
OK, so much for credentials. (You either accept them or you don't. I'm not going for a hard sell here.) Looking back at the original question, the word used is "consultant". I've read discussions in the past where the participants debate the both fine and (to them) blatantly obvious differences between consulting and, well, non-consulting. I don't believe there is a universally-agreed definition. So, for the record, I consider myself a contractor. Not a consultant. And not a freelancer.
In my mind, consulting gigs are short, specialized, and high-level. And freelance gigs are short, repeating, and low-level. What I tend to do doesn't fit either of these molds. My gigs are long(er) - months or years. My skillset is general(er) - Java, the Swiss army knife of enterprise software development. And my deliverables are mid-level(er) - typically hands-on project design and development work, but not production support or maintenance.
Frankly, what I do doesn't differ all that much from what a number of the salaried employees I work with do. The two most significant differences are 1) I get paid by the hour and 2) it's very straightforward for my client to cut me.
With that being said, my ultimate answer to the "what it takes" question applies just as equally to consulting as it does to freelancing as it does to contracting. For that matter, the applicability of my answer isn't limited to Java, or even software development.
So enough with the build-up. What's my answer? For the most part, I've already told you. Find someone who is doing (or has done) what you want to do and follow whatever advice they have to give. That's it. Now, while that may not be entirely satisfying or even actionable, you'll find that all concrete answer(s) flow down from this high-level answer.
O-o-o-ka-a-ay. That's great, but...
Yeah, I know - "what do I do next?" Simple. Find your "someone".
Find someone you respect, at least professionally. Someone that impresses you. Someone that you'd be happy to pattern your professional self after. Solicit their advice. Listen to what they say. Learn from them. Earn their respect in return for the time they offer you.
Of course, there's a word for this practice: mentorship. But, I avoid using that term because it sounds so formal. And how does one go about being mentored anyway? Well, I can only speak from my own experience, but I'd say the best way is to do it on the job. (I realize that there are other possible options such as hackathons and co-working spaces, but I have no personal insights to share regarding them.)
Look around your office. If you don't see any mentor candidates, and if you work in a larger company, try to move between departments. If you've exhausted the possibilities at your current workplace, change companies. If you've exhausted the possibilities in your current community/town, move. I know that might sound extreme, but there's a few standard reasons in life why people choose to move. Career advancement/enrichment/satisfaction is one of them.
I suppose that you could also find a mentor online, but again, I have no advice to offer on that. I feel that it would be pretty difficult to take a purely online relationship and foster it to a sufficiently personal level where the mentor would feel the desire to go out of their way to help the... mentee. 😃
Looking back on my career, I was very fortunate to find myself working (at an early point) with some sharp, seasoned contractors. I worked alongside them for a couple years. During that time, I listened to their outlooks on the software development industry, profession, and craft. They helped guide me through the transition from salaried employee to independent contractor - a transition that, to this day, I consider invaluable. It was life-changing. Those few years spent working with them, feeding on their advice, got me to where I am today. And that's what you get from a good mentor.
In order to become successful as a software contractor, you need to work with someone who is currently doing it - and soak up their advice. Every other, more-specific concrete recommendation flows down from there. With that being said, if you're looking toward me as your "someone", and you want my specific bits of advice - ask. I'm happy to write more if anyone would find it valuable.
Leave a comment
Another good one Mike. One thing I would point out (having only contracted for two years) is that it requires patience. Often times contractors are treated as bodies until someone realizes that you actually know more than they do... This can take some time!
Very good article, and I'm sure the OP will find it insightful. I once aspired to be an independent consultant as well - I relished the independence, the pay, the freedom. But mostly the quick bump in pay.
One thing I found missing in your article is: ask yourself why, and whether, you truly want to be a consultant/contractor/whatever you want to call it. Understand your goals and aspirations. Understand the inherent advantages and limitations of consulting.
In my view, the main advantages of successful consulting are the independence and high starting compensation; to some extent the respect that might come with successful consulting; the variety of teams and technologies you see; and some tax loopholes to take advantage of.
But the limitations are equally large. One has less skin in the game, which means different things to different people, but to me meant less willing to give *myself* to a project, less willing to put in extra time because I believed in and was engaged in a product direction. And perhaps equally important, there's a (relatively speaking) low ceiling in career growth after a certain point. You top out much quicker in your ability to influence product direction, broad hiring decisions, technology direction, etc. You may be more talented, more efficient, and overall bigger ubergeek than most people, but a consultant's one-foot-in/one-foot-out relationship has inherent limitations.
Unless you've started your own business and use consulting to kick-start your growth -- a questionable tactic, but separate conversation -- this also translates to compensation. Imagine a graph with two lines. One line is the consulting line, starting mid-way up on the left, and the other (full-time) starting in the lower left; at around the 5-10 year mark, those lines intersect. By the right-hand side of the screen, the consulting line is still approximately flat, while the full-time line continues to grow toward the upper-right side. The difference is the compensation in forms other than salary that a full-timer starts getting in considerably increasing doses: perks, 401k matching, tax advantages (e.g. some loopholes for up to $51k/year in tax-sheltered retirement savings), increasing amounts of equity compensation, yearly and spot bonuses, etc. What you pay for these advantages are personal time and emotional investment. But if you find a company in which you believe, it's far more rewarding (and *fun*!) to some people.
I'm not arguing for either side -- although I think you know the side on which I ended up -- as different people have different needs and desires. But understanding one's needs, clarifying goals, and zeroing in on desires is perhaps the most important part of defining a career trajectory.