What Everybody Should Know About Contracting Developers
trevormckendrick.com
trevormckendrick.com
That is THE worse advice EVER.
You want a developer that can take your pseudo spec (and I say pseudo because if they are detailed enough, then you should be able to code them, since you are hiring a developer you don't know the devil that will be hidden in the details), interact with you, and give you what you asked OR BETTER.
Non-technical people need the counterweight. This advice is like telling the doctor "I don't pay you to think and figure out what I have, just to write the prescriptions, and is much cheaper"
Hiring a developer on the cheap to "just code" is the equivalent. It's a way to keep costs down while testing the market.
I don't think any legit doctors write prescriptions without first making, or verifying, a diagnosis.
Hiring a developer and telling him, "Don't think, just code," seems like a recipe for disaster. People who insist on going about it that way get the software they deserve.
Sometimes we’re paid to think, and sometimes we’re paid to code. Deciding which activity is more economically viable to the company should probably not be left up to us. That’s what they hire managers for after all...
I think you missed his point. Yes, in an ideal world every developer would be able to think for you. In the real world, developers who can do this charge a huge premium.
His point was that if you don't want the full consulting package, you can get by with a less expensive developer—so long as you map out every step of the way for them.
Perfectly summarized. Thanks.
... At the end of the day, you get what you pay for.
As the technical ability of the customer goes down, the input, and therefore the cost, of the developer goes up.
Of course, this falls apart when you get non-technical people hiring grunt coders...
But there is nothing bad about such programmers - they just fullfill a different market sector. And their code is likely just as good. What you pay the premium for is someone to manage the technical side rather than just do as their told.
That is nice dream, but the big fallacy.
My code is much better architected, much more reusable, cleaner, and, if you're going to be using it in the long-term, it's going to be much, much cheaper. Not to sound arrogant, but I sometimes marvel at how easy it is to add more features or change features just because the code was written properly the first time around.
This is what the client pays for, the years of experience that have taught me how to write clean, maintainable and extensible code. If you're going to throw the code away after your MVP, you obviously shouldn't care if the code is maintainable, but code written by inexperienced and experienced developers is nowhere near similar.
I admire your humility.
> I don't know about your or your friends' coding skills, so I can't comment. I see a huge difference in the code my friends write in their language of proficiency versus code I write in the same language (I am mainly a scientist, so my code tends to be ad-hoc modelling to get to a specific point, then discarded).
> Their code is much better architected, much more reusable, cleaner, and, if you're going to be using it in the long-term, it's going to be much, much cheaper. Not to sound arrogant, but they sometimes marvel at how easy it is to add more features or change features just because the code was written properly the first time around.
> This is what the client pays for, the years of experience that have taught them how to write clean, maintainable and extensible code. If you're going to throw the code away after your MVP, you obviously shouldn't care if the code is maintainable, but code written by inexperienced and experienced developers is nowhere near similar.
Better now?
Now it doesn't make sense.
Your code I am sure is excellent; but we're talking about the other factors, such a project management, specification and UI design. etc etc.
Also, in some cases there is no point building a full architecture and reusable constructs: if all you're doing is writing a Wordpress theme or plugin what's the need?
You wouldn't hire me to write a Wordpress theme, you'd hire someone without the premium. And it would he just as good!
I'm also a developer, BTW, but I started out just at the first bubble burst and getting jobs wasn't so easy. I struggled to find work at first when only a few years before college grads were being given lavish signing bonuses. I feel a weird sense that karma will have it's revenge on me if I cross the line of enjoying some success vs being a greedy, selfish prick. I know it's not rational but I just feel that this could be a temporary gold rush and I don't want to burn bridges.
This story with developers fighting for cheap bids is a reminder that there is competition out there. Some of those guys are better than others, but companies have choices. We may continue to enjoy this demand, but things may even out too.
Not being an asshat isn't irrational.
When you are located somewhere with a slower economy that has been hit bad by the recession; people aren't paying $100k for junior devs and aeron chairs simply because it doesn't make economic sense too.
We actually built some of these ideas into the core of matchist (http://matchist.com/talent). Specifically, milestones and paying your developer quickly. All projects on matchist are milestone based and the client can pay developers in 2 seconds by just clicking a button.
Of course not everyone's that way, but you sure can make friends much faster by treating your contractors well.
This usually turns into multiple back-and-forths to flesh out what the client really needs, and usually requires a lot of thinking on the developer's part (me) to nail down an actionable solution that could potentially be estimated in terms of $$$.
I was hesitant reading Trevor's article thinking what he was suggesting was devaluing dev work, but when he emphasized the importance of specificity I was on board with him. If a client has fully thought out their idea to the point of step by step mockups, that takes a LOT of the pain, frustration, and effort out of the equation which translates to the required work not costing as much.
Developers are one step away from computers (literally) and require a lot of the same rigour when interacting with them. Know what you want and be able to explain what you want (in detail) before engaging them ;)
Great point. Most people are not used to the level of specificity required to be a developer.
The more you can learn to help the client work through ambiguity, rather than expect the client to match your technical understanding and then be frustrated when they don't, the more successful you will be.
The idea is to find developers on the "left" - low quality, hand holding and get them to churn out a market testin app for a small amount of money.
That seems crazy. Deliberately hiring low quality workers?
If the app is so trivial that low quality cannot break it then I guess it works. Does not sound like a sustainable solution though.
But it doesn't have to be, nor should it. Like I said, it's simply a way to cheaply test the product/market fit.
Once you've found fit you can more safely move to the right of the spectrum and invest in a quality product.
That's exactly what I'm doing now.
1. good (quality-wise), but slow and don't speak much English, 2. or they are just horrible.
I have seen two projects coming out of the $15 an hour shops. The only way to have a sustainable product is to start over. The sad part is that I have also seen a lot of people throw a significant amount of money at these $15 an hour deals when they could have created a better product for the same amount of money with fewer high end devs.
One of my favorite outsourcing stories was when a guy wanted me to be his CTO and he was considering hiring a company that outsourced to China at $15 an hour. So I asked the outsourcing company if I could interact with the devs directly. Their answer was no, claiming that it was for everyone's protection. I won't even get into them describing a waterfall methodology and telling me that this is Agile. Let's just say that we didn't use these guys.
The bigger issue here is this. If you are doing a tech play and can't code, don't have a technical founder, and don't have the cash to hire good people should you even be playing in this space? I'm sure that there are a few exceptions that are able to do this, but that seems to be few and far between.
If you don't have a deep passion and understanding of your core business, which in a tech play means the tech to execute it, along with the market that you are going after......or gobs of cash to bring in the right ones I'll bet you there are some great stats on how successful they are. I know what my anecdotal experience is but would love to see some hard data to confirm or deny my experience.
I did lose time on 1 failed project in particular. I should have noticed sooner that the dev kept asking for more time and canceled it.
Often project briefs are not very detailed but the client's expectations are very specific. So in the interest of not wasting a load of my time writing code that I'm just going to have to redo I will ask a lot of questions. Even ones that seem obvious, as sometimes my idea of a the best way to do something was not what the client had in mind.
"Real" development companies have full-time people writing specs - you need to come up with something better than a few Google docs if you want the dev to just run with it, especially if (s)he's on a fixed contract.
Hourly, now, is a different animal :-)
I told them... listen, we can get real expensive, really fast. So if you help me, I can help you. They build specs in powerpoint, excel, paper etc. We discuss them (in person typically at a scheduled meeting where we discuss these features as well as business consulting about where to take the business, how to grow it, what features have been requested, what to add, etc.). My team then develops what they want.
The customer then QAs the software to make sure it's good. This saves them a TON of money.
They're happy, I've got an easy client to work with and my devs enjoy working on the project because the requirements are well thought out. My client is happy because they're getting a good value (both in terms of less $ on dev and the money they spend on business consulting is put to better use since they've done their homework).
Contrast this with another of my clients (with a larger, but dwindling budget). They typically say "go develop x" with no real guidance. We develop X, but once they see it they say "that's not what we wanted." After a few cycles of this, and frustration from both sides, we simply now say "you've thought about X, why not tell us what you've got in mind so that we build the right thing first?" It's made things move a lot smoother... enough so that this client is now extremely aggressive in their release cycling (and it feels like a hamster wheel)... which we're working on... (including charging 2x for forced weekend work - "It's Friday at 3pm. If this must be deployed Monday, then we're going to have to work over the weekend and that is at $xxx rate." We've not worked weekends for them since :)
Wait... you... 'Though'
In this example, the dev is cheap compared to getting weak spec and a wishy-washy or non-existent QA response cycle.
Believe it or not, some of us really are building sustainable businesses outside of the valley often using offshore developers instead of local without burning through millions in VC money. In fact, we really have no other options.
The blog articles are great, keep them coming Trevor.
Saying they're all employed it's a rationalization people make to feel less guilty.
Paying people to code less than the ones that cut your lawn is wrong no matter what the reason is.
For me, that's plain stupidity. As you say, your company is small and $4,000 is a lot of money. You didn't mention if it's for a bigger project so I'll assume it's for fairly similar one.
You show appreciation for someone by coming back to them rather than paying more for same service. It's one of the most important rules of business.
When you'll approach him for twice as big project, he'll expect $12,000 and a little more instead of $8,000 he deserves and with which he thinks he's paid enough. People tend to get comfortable too quick when giving them things they didn't ask for.
I'd advise a slightly different approach. Keep coming back to him and keep an honest relationship. If he isn't happy with something (attitude, finance aspect, terms or anything else), let him know you're open to discuss anything.
But that are just my two cents and if it's working for you, why not? I know it wouldn't work with me and my team.
To be clear, this project is a 100% rewrite of my current app. It has a ton of additional functionality, is built much better, includes a store for IAP's of additional reading content, etc.
It's my bread and butter.
While I could have gone back to him with another project in the future, I wanted to make sure this project went great. It's a "bet the company" project and in the overall scheme of things $2,000 isn't that much.
Can you imagine how great you'd feel to get an email from someone saying they decided to increase your pay by 50%? Wouldn't you do your best work for them?
That's the message I was going for.
Its almost like you rubbed it in my face I could have charged more.
Better to throw in a bonus at the end like "if you complete by x then you get y".
Yeah, I've been on the receiving end of this. It made me feel like a chump (even though I knew I was charging right about market rate for it.)
"Hey man, something has come up and I could actually use this 3 days earlier than we agreed. If you meet the deadline, I'd like to offer a $2K bonus" would neatly sidestep this and should still fulfill the author's desire to get quality work.
As the saying goes... sometimes less is more.
Plain stupidity might be an exaggeration but it's kind of like paying $6 for a bag of apples to assure they're good enough for you even though the price is only $4.
Bottom line, it was unnecessary. It eliminated some of the risk but with the 'top notch developer', as you call him, it's unnecessary.
As I said, people tend to get very comfortable and I've seen people put in much less effort when they're paid more.
Otherwise, you're just waiting til you need him again, and you can't get him, because he's booked and you're Just Another Customer.
edit: This made me think of a delightful documentary, "Herb and Dorothy", about a couple of ordinary middle class New Yorkers who became major collectors of modern art. They were always bleeding edge and bought from a lot of later-famous artists when those artists were deciding between rent and food some months. So later on, the artists would be rich and famous, but still cut special price deals for Herb and Dorothy, deals ordinary collectors would never get - because they were the first buyers to recognize the artist's worth.
Most developers are highly productive at doing the sort of work that is within their comfort zone.
If the work is reasonably well specified and straightforward (i.e producing a bunch of web forms , rather than requiring algorithm research) then the productivity limit is often down to typing speed.
[1] http://help.elance.com/entries/34283-How-Do-I-Make-A-Bonus-P...
In other words, you should very rarely be looking to hire a developer out of India for $5/hour, but if you are, hold his hand and he can't mess it up too terribly badly.
It doesn't have to be great or amazing. It can be quite mediocre. It just have to be enough to know whether it's solving a real need customers have.
A recipe for success!
- "almost a dozen developers", for the same project? Sounds like hell just to save a couple bucks...
- ...or do you want to "make something really awesome regardless if people use it"? what would anyone want to do that? Odds are if you're doing it for fun you have the money to hire a good developer and therefore not go they painful elance/odesk route (check this out http://giacomoballi.com/find-ios-developer).
- in your chart you're missing bad developers. plenty of those hanging out on outsourcing websites...
- if you're working with a good dev (I won't assume other scenarios) they will know more than you do. They can and should help you. You're limiting yourself if you just pay them to code.
- good for you for making the mockup that's way more work than most of my clients do (check this out http://giacomoballi.com/explain-idea-to-developer).
- speak "good" english? Sorry, couldn't help it... :)
Good intro post regarding you experience.
Look forward to the next one!
G
Just to toss it out there, Go (Golang) is becoming increasingly popular, but still has a relatively small community (much of which is based outside the US). This seems like a potential good case for using freelance developers (when language experts are few and geographically distributed).
At this point it's beneficial for me to stay on Elance because contractors see how much I've paid out, how consistently I give good ratings, etc. They know I'm a good contractor so they're more likely to bid.
I don't do much to try to get "certain" freelancers. Sometimes I'll sponsor a project if I need it done really quickly (under 48 hours, not a development project) but otherwise I just put it out there.
You just don't realize how much better it is until you find people like that.
If the contractor quickly sends you something simple that works without too many lines of code then you have a decent signal that the skill level is sufficient. Anything else (slow response time, app doesn't work, below expectations code quality etc) and you have a decent signal that the skill level is insufficient. In this case just pay out the first small milestone, thank the contractor, cancel the project and try someone else.