I've quit my day job in 2012, found a contract with a great client on Upwork (forget how it was called at the time). Initially a 6 months project, I've worked with them for 2 years.
Got a few other contracts off that site, until one day I've asked one of my main clients to move out of that platform and work with me directly. Worked with them 2 years, until I got an offer in January to become a full time technical director and shareholder.
What I've learn contracting:
1. Increase your rates. Make them non-negotiable. There's people that are ready to pay for quality. If a client asks you to lower your rate, they probably aren't a good client in the first place.
2. Increase your rates every year, as you get more experience and technical knowledge.
3. Upwork was bad, and now is even worse. Move out of those kind of sites ASAP, when you can trust your client.
4. If you do good work, you'll have old clients pinging you once in a while with new opportunities. So, do outstanding work, and you won't have to look for new contracts as much.
5. Don't be afraid to learn. Try not to specialise too much. Generalists/full stack devs are very sought after. You'll start a contract as a web developer and soon you'll be doing DB optimisation and securing their infrastructure.
> 5. Don't be afraid to learn. Try not to specialise too much. Generalists/full stack devs are very sought after. You'll start a contract as a web developer and soon you'll be doing DB optimisation and securing their infrastructure.
Nice tips but I don't agree with this point.
Being specialized makes you stand out from the crowd and being "the person who does <foo> in the <bar> industry using his extensive knowledge in <baz>". Otherwise you are just "the person who does <computer-stuff> for all industries".
I agree that it's simpler to not be picky at the beginning but later on you should specialize - not just in technology but also in an industry.
I agree to disagree :) you might be right, that point is mostly a personal opinion.
My personal goal and career path has always been to be a jack of all trades, I even entertained the idea of explicitly writing that in my resume.
One might prefer to specialise in something instead, and master it well. That's absolutely fine, I just happen to love to learn about anything, mostly because I easily get bored if I'm on the same thing too long.
It's suited me fine, but it's definitely not the Only Way to be a consultant.
> 1. Increase your rates. Make them non-negotiable. There's people that are ready to pay for quality. If a client asks you to lower your rate, they probably aren't a good client in the first place.
It depends on which vector you deem yourself mediocre. If you think your technical skills are mediocre and want to be a technical contractor, then focus on being a great solutions provider.
And by "solutions provider," I mean take the time to deeply understand the root causes of your clients' problems, then help them find the actual solutions. Sometimes these solutions are not even technical, which is totally okay. Clients will love that you're helping them solve problems in addition to providing technical services.
I can write code that works, finish features, and I'm pretty good at debugging. I can also teach/encourage others without condescending, ask good questions, and explain a problem clearly technically and non-technically (once I understand it myself).
I guess I'm mediocre in that it consistently seems to take me 8-10 hours to finish jobs that come with a 4 hour time estimate (my company is big on estimates). I'm also pretty sloppy - code reviewers routinely catch minor errors that I should have known better than to commit.
I have the experience, way too often, of using some feature that I pushed months or years ago and learning that it's, like, haunted or something. Doesn't work the way it's supposed to at all. Obvious failures that I should never have called "done".
When it comes to building a complete product, from start to finish, I mostly can't get past MVP stage (talking about personal projects in this case). And I once spent over a month trying to update the version of TinyMCE for a CMS that I was working on, and did not succeed. I literally got another job and left the company with that task unfinished. The new job pays double, and I still feel like a bit of a fraud.
And yeah, I'm writing "bog-standard PHP" as the other commenter put it. I've tried to get work in other languages to diversify my skillset, and haven't succeeded. At this point I'm starting to not care anymore - I like PHP just fine, loose typing be damned, and I'm starting to think I want to move out of technical roles rather than improve my language skills.
If you like dealing with clients (and it sounds like you may be patient enough to be good at doing this), you could try your hand at being a project manager and managing several development contractors for the projects you get from your clients. I built a web development agency like this several years ago.
Basically, you start with the same clients that have been hiring you, then tell them you can assemble a team of developers to help get their project done, and all they have to do is work through you as the main point of contact.
This is easier said than done, of course. Starting with existing clients is a nice way to jump-start this kind of a business, but you'll need to find more clients eventually. There's also a whole arena of skills you'll need to develop in terms of recruiting, account management, and project management too.
This isn't for everyone. But someone with technical skills has a vast advantage in such a role over someone who doesn't, with all other skills being equal.
Just an option to consider as you think about moving out of a technical role.
I think I'd like to be a project manager, but honestly I'd be happy doing it at my day job. Any suggestions for how to show people that you can do that kind of job?
I suggest checking out the book "The Passionate Programmer".
There's a general focus in that book about building your personal brand in an organization so you basically have leverage to do what you want.
Beyond that, the short answer is to assume the role. Take on a PM-like presence amongst your team if you haven't already - ie. help any PMs you're currently working with on small tasks, ease their burden where you can - then have a candid discussion with your supervisor at some point about how you can see yourself in such a role.
I totally agree with everything brandall10's written. I've always found that "act as if" can be a powerful tool, except perhaps in dysfunctional organizations. In other words, "act as if" you're already a project manager. And you'll definitely need to let your manager know about this career aspiration too.
If you want to do this as a remote contractor, then I think your options are:
1) Look for an existing dev agency that needs remote project managers.
keep building new stuff, on side in addition to your job (which is usually borring/monotonous). concentrating on details. Once you've spent 10k hours on programming it'd just come naturally to you. You'd be amaised how magically and naturally you can solve complex problems. This is an unfailing formula of attaining mastery in literally anything you can imagine [0].
This isn't true. Very few people are bad across the board -- find your strengths (as other commenters have said) and focus on those.
It's better to be excellent in one or two areas, especially ones your passionate about than solid across the board. If you suck at something and it's causing problems, that's a different story -- but don't get stuck on comparing yourself to others.
I wish I could downvote this comment. Please ignore it.
Quite a few people don't have enough skills to freelance. Either because they don't have that one skill in high demand, or they lack the drive to network and sell themselves. These people will just become miserable trying to make a living without a steady employer.
Increase your rates regardless. Clients don't know, or really care, about quality so long as what you build works.
Where quality is important is in keeping your costs low. Having to revisit old code to fix bugs or trying to work with bad code to add features has very little impact on your client. It affects you. Strive to write good code for your own sake.
Plus, if you take on fixed price projects writing code you don't need to go back to really increases your profit.
You should still aim for charging quite a bit higher than what you think is reasonable. There are an awful lot of bad developers, so even mediocre is probably fine. I've had consulting gigs where I've charged $200 an hour to answer a survey as a domain expert, and I learned later that I probably undercharged. People will pay, don't worry about that.
If you land a job that you feel got a bit close for comfort, lower your rates and re-calibrate. But assess why before selling yourself cheap - was it really beyond your skill? Did you just need more time? Don't forget that if you charge more, you can better devote your time to those projects. If you charge less you have to spread yourself more thinly to remain solvent.
I can’t imagine any professional setting I’ve been in, where firing up the machinery to get a consultant in place would be worth $200. Conversely I’ve been in many situations where an expert reading one page of text and nodding (with a follow up email) was worth several thousand dollars.
If there is a list of annoying false things technology people believe about business, this notion that bill rates track technical ability would have to be near the top of it.
Your rate has almost nothing to do with how good a programmer you are. Sorry, excellent programmers who've had a hard time getting consultancies launched.
Your bill rate roughly† tracks how much value you provide to your client. "Value" is complicated and situational. For programming work, for most clients, extreme technical excellence is of marginal value. Clients that engage third party developers tend to see software as a cost center and/or are simply trying to solve a business problem. They care about how quickly that problem can be workably solved, and (please take notes:) how predictable the costs are.
You can be thoroughly mediocre at programming and an excellent business value, if your mediocre code solves business problems people will allocate budget for and if you can deliver it predictably. If you can deliver predictably and fast, you can ship bog-standard PHP code and charge integer multiples of what a much better developer might implement in Rust or Haskell.
The market tends to pay a premium for problem domain specialization, and less of a premium for elite skill.
None of this much matters for someone just getting their feet wet trying to get their first couple clients. Do whatever gets you started. But get out of the habit of convincing yourself that you have to qualify somehow to charge more money. Even the consultants who are constantly telling people to raise their rates are also not charging enough. I'm a varsity member of team "raise your rates" and I thought we were undercharging 4 years ago. Since then, FTE rates have gone through the ceiling and our rates have not scaled with them. It is very unlikely that any consultant chatting about consulting on HN is charging their real market rate.
I have one bit of bad news for you: if you want to make a career out of being a contractor or consultant, you need to get off freelancing sites ASAP. It's fine to get started there, but you're not developing your practice in any meaningful way as long as you're using them; you're just getting better at slinging code (which doesn't earn you better rates!), while radically undercharging clients. Getting off freelancing sites is rough, because freelancing sites tend to provide a comparatively stable revenue stream, and real consulting revenue is lumpy. If you've never experienced "lumpy" before: it's (a) terrifying and (b) really easy to screw up, by assuming you're flush with cash when really you've effectively just been pre-paid for the next N quarters.
Some people reasonably don't want to work under lumpy consulting conditions. Better you figure that problem out for yourself early rather than wasting your time pretending, or, worse, forgoing a fuckload of income by chaining yourself to freelance sites.
† Roughly because most serious clients allocate a budget that establishes a range of what they're willing to pay to solve a problem, and an invisible component of that budget is how much work they're willing to put in to sourcing a contractor --- the first credible contractor they talk to might win the deal, meaning there's no competition to aid price discovery. Corollary: one way to "provide value" and charge a premium is to be easy to source. Something that people who build consulting firms, the kind with lots of consultants, learn quickly: clients put a premium on firms that are always available.
Thomas, you talk a lot about raising your rates and I believe your points are valid.
How do you go (being completely remote) from nothing to have a high quality client (as in corp/high net startup).
Take these into consideration:
- Can live off savings for the next 2 years.
- Can expense 3/4 travel costs for US/EU/Asia.
- Can setup offshore US/HK company and bank accounts.
- Doesn't mind if the process take 2-4-6-8 months.
- Doesn't mind traveling, staying late, taking calls anytime, etc.. if it can give me an edge.
What are the steps to take to land the first whale. Also, I have the following skills: Cryptography/Security (still a beginner), Blockchain (somewhat good), DevOps (medium), Web Development (Pretty good experience).
Bear in mind pretty much most of my clients before were low quality clients (making wordpress sites for the average business, made me decent money but only for the cheapness of the country I live in).
1) Produce publicly visible artifacts which demonstrate that you're able to apply technology to impact business outcomes. You do not need many of these; ~3 is fine. You do not need to block on the other steps. You do need to plausibly connect the technology to a business outcome; blockchain and beginner-level cryptography probably do not get you there.
2) Begin getting into conversations with people who either a) have purchasing authority or b) talk to people with purchasing authority, at your target clients or firms very similar to them. This can be as simple as bonding over technical things with technical people. You want to become Internet buddies with e.g. senior engineers / team leads / etc at software companies.
3) Walk the network of your new friends to engagements, either at their firms or peer firms. Do not make another WordPress site for the average business; make something for a software company.
4) For every engagement you land, attempt to get referrals to more clients, attempt to land follow-on work with the same client, and attempt to land ongoing maintenance/retainer/etc agreements with the client.
1) How can I find out what to build if I don't have any significant corporate experience. I don't necessary like to work for software companies but I just have no clues of what "sells". (That is on a corporate level. Both services and products).
2) How do I get into conversations with decision makers? Cold approaches? I know I'm a decision maker for buying a sofa for my living room. But I get to discuss with the seller because I'm in his shop? How do I get to discuss with him if he doesn't have that shop to trap me there.
If you like podcasts, there’s a great one by Kai Davis and Nick Disabato called Make Money Online. I can also recommend the Indiehackers podcast. The greatest insight to effort would probably be The Personal MBA by Josh Kauffman, a really great business book. What sells is solving expensive problems or making companies with lots of money better or more efficient at making money. You can get into conversations with decision makers by cold emailing people saying that you’d like to buy them coffee and talk about their business. Lots of them are busy and will not reply or say no. Some will say yes. These are informational interviews not sales calls because you don’t have anything to sell yet. Or you could go to your local chamber of commerce meeting and talk to people.
One recent Indie Hackers episode had Nathan Barry on. He swore by the tactic of doing presentations on a topic that would be useful to small business owners at chamber of commerce meetings, collecting emails and adding people to a mailing list. Apparently most of the leads he got didn’t convert themselves but they referred other people who did. All for the price of free coffee and donuts, a presentation and time.
I would go farther and say that rates are uncorrelated to skill. Like actually zero.
Rates have much more to do with how in-demand the provider is relative to their ability to deliver. And a big part of "in-demand" has to do with how you market yourself, the quality of your network, and other non-work product factors.
You are making a huge mistake assuming that everyone has ability to tell a mediocre from a 10x engineer, which is patently false assumption to begin with.
Market has information asymmetry baked in. Not everyone is informed, that's where you earn your bucks.
Excellent advice. Imposter syndrome is very real and can cause people to low ball themselves but people should be asking for far more than they think. A contractor has to cover every benefit for himself and build a nest egg for downtime to boot.
But for a new contractor what to charge seems to be the struggle. I exited contracting when the .com bubble burst. These days I'd want to charge double my previous rate, possibly more.
Upwork makes you jump through code challenge hoops and competes you against people in countries where $1/hr is kingly. Doesn't exactly engender loyalty.
From another perspective, upwork gives people in low-incinr countries a chance to work for companies in high-income countries without winning a lottery and leaving their families behind.
Therefore upwork directly improves equality of opportunity in the world.
Upwork terms of service require you to funnel funds through them for 2 years, then you are free to move elsewhere. Upwork also allows for early leaving if you pay a fee of $3500 or some other number based on crazy calculations.
Got a few other contracts off that site, until one day I've asked one of my main clients to move out of that platform and work with me directly. Worked with them 2 years, until I got an offer in January to become a full time technical director and shareholder.
What I've learn contracting:
1. Increase your rates. Make them non-negotiable. There's people that are ready to pay for quality. If a client asks you to lower your rate, they probably aren't a good client in the first place.
2. Increase your rates every year, as you get more experience and technical knowledge.
3. Upwork was bad, and now is even worse. Move out of those kind of sites ASAP, when you can trust your client.
4. If you do good work, you'll have old clients pinging you once in a while with new opportunities. So, do outstanding work, and you won't have to look for new contracts as much.
5. Don't be afraid to learn. Try not to specialise too much. Generalists/full stack devs are very sought after. You'll start a contract as a web developer and soon you'll be doing DB optimisation and securing their infrastructure.
6. Increase your rates.