The Prosperous Software Consultant
Are you curious about breaking into software consulting? In this post, I’ve laid out 7 steps to living a fulfilling life as a consultant. You’ll even learn how to make a lot of money along the way.
One of our recent episodes of React Native Radio seemed to have hit a nerve. In it, we discussed how to get a job or get consulting work as a React or React Native developer, and has brought exponentially more emails to my inbox with people either grateful for the discussion, or with questions about their particular situation.
Specifically though, I’ve had quite a few people reach out to me asking questions about getting into consulting. In my consulting career, I’ve had the fortune of working with companies all the way from fortune 500 (Amazon, Samsung, American Express, Visa), to small startups and everything in between (Warner Bros, Indeed).
The advice we offer on that podcast episode and the advice offered in this blog post will apply to anyone in the software field looking to either make a name for themselves, make more money, or to have more control in their dealing with clients and over their lives.
Why should you listen to me? Well, maybe you shouldn’t, it’s up to you, but hear me out.
Over the past 8 or so years I’ve invested a lot of time and money into books, paid mentorships, and paid time to consultants (that already were where I wanted to be one day) for their knowledge, and I am sharing the information I paid for here for free.
I’ve also managed to make between $200,000 and $400,000 a year for 4 years consecutively while living in Mississippi, a place without much opportunity for developers.
I’ve distilled the knowledge & advice I’ve received from these specialists and the techniques that have worked for me into seven items: Building Bridges, Specialization, Content, Flat Rate Pricing, Networking, Image, & Learning.
A few years ago I was really into Angular. I attended the NG Vegas conference, and there I saw one of the best talks I’ve ever seen (by Aaron Frost) that I still think about to this day: Building Bridges.
I highly recommend checking out this talk.
This talk has helped frame my thought process as a developer and a person for the next couple of years, and implementing the ideas put forth in this talk has been extremely fulfilling both personally and professionally.
The only reason I am where I am today is because of the work other people have done, the tutorials they have made, the open source projects they have created and tirelessly contributed to. I have since made it a priority to pay my way back in any way that I can.
Depending on your confidence and level of expertise, building bridges could look like many things. For me this has been free one on one mentorship, writing blog posts on things that I’ve learned, hosting and paying for a local meetup for over 3 years, & answering questions on Stack Overflow among other things.
Not only does building bridges help other people, it also helps you. Teaching and mentoring forces you to understand things on a deeper level than you would have otherwise felt the need to address or dig into. Questions that you did not know existed get answered when you are forced to explain something technical.
You also lay a footprint on the world that is traceable to you.
One of the best pieces of advice I’ve acted on is deciding to specialize.
Imagine that you have labeled yourself as a “Web Developer”. When marketing yourself it would be easy to get lost in the millions of online ads, websites, blog posts, and general spam associated with this general term. The same goes for other general labels like Back End Developer, App Developer, etc… These developers end up competing on price, likely spinning their wheels and working with sub-par clients in the process.
Imagine if you now change your strategy, persona, and marketing to being known as a “Progressive Mobile Web Application Developer”. You’ve drastically differentiated yourself. Sure you will have less people looking for you, but when someone is looking for exactly what you do you will be the one they want. But you could and should go even deeper and more specialized.
Some examples of specialists that I’ve seen excel in the real world are: Python Training, Postgres Database Query Optimization, Mobile Development for Credit Unions, Progressive Mobile Web Applications for Financial Institutions, Cross Platform Mobile Applications for Furniture Stores, Python Machine Learning Training, Node APIs.
Being a specialist allows you to charge more, have more control over your terms, and generally work with more respect from your clients.
You are not losing out on the millions of people that weren’t finding you in the first place, you are instead standing out as a big fish in a small pond, VS a small fish in a large ocean.
Companies are also more likely to bring you in more quickly and with more money as a specialist because you do not need much onboarding (onboarding that costs them time & money). If you are already specialized in the thing they need you for, you can get up and running on their team extremely quickly, ultimately saving them both time and money.
Specialists also become much more efficient at the thing they specialize in. You will be able to build & ship much more quickly, making your higher rate not only justifiable but actually cheaper for your client at the end of the contract.
Today anyone can write a book or blog post or create a video series on YouTube. The more content you create, the more you learn and the more you increase the ability for potential clients to find you. You also position yourself as an authority on the subject.
This also allows you to stand out to your competition. When a client Googles your name, who is she more likely to seek out? If you are seen as the authority, the person that teaches your competition, the decision becomes a no brainer.
This also goes back to “Building Bridges”, when you learn something new, give that knowledge away, it helps the community and it helps you!
This now brings us to training. Offer workshops and on site training in the technology that you specialize in. This often opens the door to new clients, as they will buy training and then realize your expertise and value, and offer you more work on their project as a consultant. Again, this brings us back to what I mentioned earlier: If you are seen as the person that teaches your competition, the sale is already in the bag.
And this is for good reason. After teaching a couple of classes, you gain a deeper level of understanding and can work much more efficiently. If you can accomplish the job 4x faster than your competition, charging 1.5 or 2x more is still much cheaper for your customer.
After paying for mentorship and specialists for their time, I’ve realized there are two big secrets in the high paying consulting industry: training and flat rate pricing.
Flat Rate Pricing
When you are billing hourly, you end up hitting a limit.
Say for instance your hourly rate is $125.00, and you are billing 35 hours a week.
If you work 48 weeks a year, the max you can make is $210,000.00. Now, this is of course really good money, but it is also a ceiling that you will not be able to break out of without negatively effecting either your quality of life or quality of work, or raising your rates.
The solution to this dilemma is flat rate pricing. The gist of flat rate pricing is that instead of charging for your time, you are charging for the value that you are providing to your customer.
Imagine that your on site training will improve developer efficiency by 10% over the next 12 months for a class of 20 developers. If each developer costs them $200,000.00 per year, you are saving the company $400,000.00 that year alone with your training.
It makes much financial sense to charge 10% ($40,000.00) of this amount for your services, even if only takes you two days to complete.
Imagine if you were to turn this into hourly billing? Your rate would be $2,500.00 per hour were you charging hourly for 8 hour days.
Billing based on value makes this invoicing and pricing discussion much more digestible than if you were to just come out and say that you are billing $2,500.00 per hour!
This also applies to software development. If an e-commerce application you are building will bring in $500,000.00 in sales in the next year, then charging 10% to 20% of this amount is acceptable. The same goes with feature implementation. If your feature will save them $200,000.00 in the next year, price with that in mind vs the hourly rate.
Many gigs won’t work out with flat rate pricing unfortunately. For me, less than half of my income came from flat rate pricing.
What kind of gigs would I instead opt for billing hourly? If I’m working on a team with other engineers & we are banging out features or improving an existing application by fixing bugs & or adding improvements, it usually makes more sense to bill hourly. So how much can or should you bill?
My answer is this: bill as much as you possibly can.
Does this mean gouging the client? Absolutely not. Your time is valuable. At first when I didn’t have any work my hourly rate was low. I started off billing in the range of $50–$75 / hour. As my hours filled up & I started getting more opportunities, I raised my rates.
Just like any free market you should choose your hourly rate by supply & demand. Raise your rate until the demand equals the supply. I.e. if you are charging $100 / hour & you have another client come in set your rate at $125.00 or $150.00 and see what happens. If you get a bite, propose a raise of your rate for the previous client to $150.00 / hour or move on to the higher paying client. If you have agreed to a certain price for a length of time, don’t renege on your contract but propose the increase once your initial agreement has been completed.
Does this mean you should abandon projects? Absolutely not. But once your contract is over or if you are just helping out another team then leaving for a higher rate or asking for a higher rate to meet another offer is a smart move.
In my experience & from what I have seen, the best consultants are billing in in the range of $200 — $500 / hour & sometimes even more.
The most I ever billed was $250.00 / hour. Towards the end of my last contracts I was billing an average of $200/hour.
Creating your own network
Building a network of trusted friends and acquaintances that can help share your ideas and give valuable feedback on your work is an important part of being a successful consultant. Many of the leads I’ve gotten have been as a direct result of my personal network.
Networking is something I still don’t think I’m too good at though, regardless of how aware and proactive I try to be.
Some people are really good at conversing with people online. I am always paranoid about saying the wrong thing or something stupid, but I am working on this! Also, imposter syndrome rears its ugly head even after doing this work for x number of years.
Some people are really great at networking, people like Kent C. Dodds Preethi Kasireddy Ken Wheeler and Peggy Rayzis are just a few of the many people that come to mind that are naturally good at building communities, and seem to do so effortlessly (though I know it is a lot of work).
For the software industry, the online network of choice is Twitter. For physical networking, in person conferences and meetups are a great place to meet other likeminded people.
One thing I’ve noticed is how kind most of the people in this industry seem to be. If I have any questions or issues, rarely have I reached out with either a question or request for advice and have had a negative encounter with people working in this field. These small connections add up over time, and when you have an opportunity to contribute to their conversation or question in the future, having interacted with them personally in the past is a great icebreaker.
I’m aware though that I may have a skewed version of these interactions based on my gender and race.
Leveraging existing networks that are not your own.
Another way to take advantage of networking effects is to take advantage of other people’s networks by providing them free content.
For example, with Medium, you have the opportunity to guest post on other people’s blogs. I will soon be cross posting to Michael Jackson’s ComponentDidBlog, and have had people guest post to our own React Native Training Blog. The post your reading is cross-posted to Hacker Noon!
The way I started the React Native Radio podcast was by reaching out to Charles Max Wood, the owner of Devchat.tv, and pitching him on the idea for a new podcast. I would do all of the work and pay for the production if he would just let us be on his podcast network, it ended up being a win for both of us.
If someone has a successful YouTube channel, ask if you can contribute a video to their channel, or maybe think about recording for Egghead which already has thousands of users.
I spent a few thousand dollars hiring trainers & other highly successful consultants that were already making the type of money I wanted to make to get pointers from them. One of the things that I kept on hearing was the question “When someone searches for you online, what is your online Image?”.
What they wanted to know was how my Twitter, LinkedIn, & other similar online profiles said about me. Do I act & present myself like someone who is a consultant? Does my bio say that I am a specialist & I am a trainer?
Before I had any clients, I hired a photographer to take pictures of me in an empty room with me in front of a projector with code on it. I used this picture at first to be on my Twitter & LinkedIn profiles.
They recommended that I change all of my bios so say that I was a consultant specializing in X thing that I wanted to be doing.
These small changes (pictures of me teaching, changing my bios) immediately paid off. I started getting more & more leads coming in.
I have made it a priority to spend a chunk of my time every week to learning new things.
I’m not sure how to quantify the actual benefit from continuous learning, but it has been something I’ve been doing and have been given this advice by many others, so I’m including it here.
These new things that I’m learning may or may not apply to my current specialization. For example, I’ve recently been diving into Machine Learning (not close to what I’m doing now), but I’ve also been learning Vue (similar field to what I’m doing now).
It’s hard to find the time to do all of the things I’m laying out here, and learning (many times) gets pushed to the bottom of the priority list. There are a few ways I’ve found to squeeze learning into my day:
- Lunch at my desk — Some days I eat lunch at my desk. When I do, I usually open up either Egghead.io or YouTube and watch a quick video or two on something that I’m interested in.
- Audiobooks — I’m consuming most of my books via audiobooks these days. I use Audible, but there are many ways to listen, including Blinkist which basically is like the Cliffs Notes of audio books.
- Scheduling time on my calendar — I try to schedule at least 2 hours a week (which is still probably not enough) with no other meetings or obligations in order to learn something new and technical.
I’ve tried to sum up a lot of what I’ve learned over the past 8 or so years, things that I would have loved to have been taught right away that would have made my life and journey much better.
One of my favorite books on software consulting specifically, and one that I have read a couple of times and helped me a lot is The Nomadic Developer, I recommend checking it out if you have time.
Thanks for reading!
If you enjoyed this article, please clap n number of times and share it! Thanks for your time.