As for finding good contractors, that is arguably the real challenge. You can do this yourself, or work with a recruitment agency. In either case, you tend to get what you pay for -- especially with contractors, where you are not necessarily going to be providing training, as in the case of an employee.
If you choose to forgo using a recruitment agency, there are many places you can look for developers, LinkedIn being a good place to start. You can either post a job opening there, or actively search for and contact potential candidates (this is the typical domain of a recruiter -- a dog eat dog world.)
PS. This may sound obvious, but please don't expect to treat a contractor like an employee. In general, a contractor gets to decide when, where, and how the job gets done. If you expect to micromanage your project, then you should consider hiring an employee. The exception to this would be if you contract through an agency, in which case your "contractor" is really "someone else's employee."
If you have $10k dollar, you may have to choose between the one click build process and some features or documentation.
Regular audits and updating list of risks have a cost and affect the deadline.
Change the team regularly ? Do you know the cost of introducing anyone new even to the best made project ?
What if you are an individual ? What if you are a start up ? What if you are a small company or an NGO ?
I'm not saying those are not good to have.
But I would put much more simple and basic things prior that. Nobody has unlimited time and resources.
And just as a counterpoint to your $10k customer needing to choose between things, there are hundreds and hundreds of customers who lose every penny of their $10k and start over from scratch. (That is what is in the podcast episode, if you have yet to listen.) By imposing the extra process and expense at the beginning, the customer can guarantee some forward progress toward their goal instead of trusting the dev shop to deliver everything by the end in a big bang delivery.
I think if you have a $10K project and you know that you are going to be really, really tight on resources, you don't skimp on the build process. Rather you back up and choose tools that are proven and reliable. If you can't get your 1 click (or equivalent) build process up an running in a day for a $10K project, then you have selected tools that are much too risky. That's my 2 cents, anyway.
Another advantage of a "one click" build process is that it documents, perfectly, the product. What lives where, maps to what and how, how each element is configured, etc. That "one click" is your way into the whole project.
I'm jealous I wrote my huge text block and didn't even realized I forgot to ask that.
IMO, developers that like a challenge and like dynamic work make good contractors. A lot of times having ambition and a passion for programming is a good sign. Many people I know do software to make a living and could care less about architectural decisions, best practices, and self-motivated skill growth.
I would be happy to help you evaluate a few contractors if you want some guidance:-)
that seems like a downgrade to me :) Do you find it easier to go self-employed with dynamic languages?
- what you want
- what you actually need
- the priorities within those lists
- what level of service / availablity
- your budget (and how realistic it is in the context of the previous points).
Most ppl new to such efforts - and even many of the experienced - have unicorn ideals in mind, and a fast food budget.
p.s. Also be ready and willing to sharpen your communications. Assuming they'll know all their is to know about your effort isn't going to get you far. Unless you're able to hire a mind reader ;)
Failing that, and if you need to go out and just evaluate contractors you find through other means, the most qualified person for evaluating a contractor is another experienced contractor who is not competing for the work.
Hire somebody experienced, for a nominal but fair fee, to help you review your project plan and advise you through the sourcing process for its fulfillment. This is a different role than a recruiter, and in fact, be wary of anyone who wants to simply hand you off to someone they know without assessing other options. You want a personal advocate, not some contractor's sales agent.
Then, consider retaining them after the contract begins to double check the work as it proceeds, and to bring issues to your attention if things smell fishy.
Basically, if you are asking this question on HN and don't have access to a good referral, you're about to throw a huge bunch of money at a stranger that you don't know how to evaluate. Written guidelines won't be enough help. Because of your own inexperience, you're almost certain to either trust them too much, or distrust them too much, and either one is going to strain your project and cost you money and time.
Having an experienced advocate on your side, who has a different incentive structure than your contractor, can make all the difference. And unlike the implementing contractor that you'll eventually hire, you can successfully evaluate the advisor yourself. Their role is about communicating things to you, and advocating for you, and these are actions that you are totally qualified to judge. Plus, it's a smaller and more ad hoc role that doesn't have the sunk cost issues that you'll face with your implementation contractor. If you find that they're not doing a good job being your advisor and advocate, you can drop them without sending the project into crisis.
Besides myself, I don't know a lot of people who advertise this role directly, but I think many independent contractors would take it on if you pitched it to them. I think many working developers and development managers would too, as a side gig, although they may not know the norms and pitfalls of contracting quite as well. They'll at least be able to vet your project plan, review candidates for technical merit, and perform code reviews. Even just those tasks can make all the difference for you.
So long story short: before you hire a contractor, go poke around for a paid advisor who you think could help you hire one better. It's really worth it.
We get all our hires through referrals. We keep things simple, our clients are not protected in a particular way when hiring us. We use a general contract - we only had problems once, when the hiring company went bankrupt and failed to pay our last invoice.
Client relationships are stable, none turned to another software contractor for the past 8 years of existence.
The company is registered in Romania.
There’s one underlying maxim that governs my hiring philosophy for any skilled position:
* Talented people choose their employers selectively
Some employers force freelancers through tedious and time-consuming hoops without pay. They assume that contractors are so desperate for work that you can demand anything you want from them by dangling the mere potential for a job, but they're actually just filtering out talented candidates.
Maintain expectations that it will take you several months to save time by hiring a contractor. The more complex the work, the longer it will take before you come out ahead on your time investment. The easiest jobs I've outsourced have been for UI tasks, where it's either correct or not. Finding a general skills developer is much harder. Outsourcing requires a lot of up-front effort in the form of writing job postings, writing thorough, clear specifications for what you want, interviewing candidates, and reviewing work. Once you find someone good and find a good rhythm with them, it's a great way to save yourself time, but you're likely to find a lot of bad candidates first.
The #1 thing I look for in any candidate is communication. Miscommunications are extremely expensive. Avoid candidates who ask vague questions or need re-explanation of things you've explained clearly. The best people I've hired tend to be people who are highly specific and detailed in their communication.
Take ratings with a grain of salt. On platforms like Upwork or Fiverr, most of the people are hiring for things they don't know how to do themselves, so a terrible freelance programmer might have a 4.9 rating because their clients can't tell that they produce code that's hacky and unmaintainable. Similarly, some legitimately good freelancers have dings on their record from unreasonable clients who gave them a 1.0 rating because the freelancer refused to do extra unpaid work.
Resist the temptation to hire cheap contractors. You'll always get bids that are tantalizingly low (like $12/hr for "senior-level" Python development), but they often can't deliver what you ask for with reasonable quality. The freelancers who are good can command a good wage. With the bargain basement freelancers, you'll spend so much time managing them and fixing their work that you won't save time overall.
Finally, start small. Don't hire someone to build an entire mobile app from scratch; it's far too complicated. Start with a job that should take a few hours (and set a cap on their hours so there are no miscommunications). As you get into a groove of working well with your freelancer, gradually give them more hours and more complex tasks.
Find a few you like and hire each to work with you on a small task. Perhaps a screen share session.
Working with someone for a few hours will give you a lot of insight into who they are and what they can do.
Do not pay by day/hour if you can avoid it.
Define small deliverables then objective tests to validate them and attach fixed price to each piece.
You don't have to come up with it out of thin air, the contractor is supposed to do that with you.
You don't have to define all of them up front neither. In fact, they will probably change during the project and the contractor will adjust the price knowing better about the project after the first few deliveries.
Do not let the definition of success be blurry. But don't set everything in stone.
Do include a clause about the code license.
If you have zero IT skill, get the help of somebody who does to do so, as well as set your expectations and filter the contractors. Sometimes it's best to hire a contractor... to hire a contractor. I know, I know.
In my book, a good contractor will:
- not sell you the moon, but will tell you what's possible, what's not given your constraints, and the relative cost of it. I regularly tell my customers to chose a better, cheaper solution than hiring me.
- help you set a priority list rather than a schedule. I'm not an oracle, I can't give you an exact delivery date for each component. But I will make sure we get them in the most valuable order.
- not give you answers right away, especially deadline and price. I can take several (sometimes billable) hours up to several days with a customer to understand the project and assess this.
- will tell you honestly "I don't know", "I will have to look it up", "It's not in my skill set, I'll need the help of X". I may tell a customer I'll need a designer, and a week to research a topic before starting to code.
- communicate clearly. Bad communication is a red flag. There are very good coders that are bad at communicating. As a contractor I don't just code, I extract your needs, wants and constraints to adjust the work regularly. This is what "agile" mean. Not tooling, scrum, or other gimmick. Regular proper communication, and adjustments.
- will not talk about good and bad, but cost/benefit ratio. You can request everything you want, the question is can I build it under your conditions.
- will talk about his preferences and specializations and advocate them when relevant. But will understand if a different technology is needed for the job. I love Python, and will advise you to use it. I don't like JS. I will code in clean proper JS for a Web UI.
- will be honest about their needs: schedules, payment, communication, ethics, channels or technology use. E.G: I don't do military/banking related contracts and refuse missions that use some languages such as Lisp, Haskell or PHP. You have the right to want them, there are other contractors that will do it for you just fine.
- not be cheap. Well, just like with lottery, you may be incredibly lucky. But I would not base my life choices on such hopes. I'm often booked for months in advance and know the market prices I can expect. I won't bother negotiating.
- will be interested in your project itself. Even when I don't work on something, I'm always happy to hear about what the project became 6 months later. I like my job.
You are not committed to anything until you sign something. So go shopping. Change your mind. We are used to talk to many customers, and only land a few jobs. That's also why we are expensive: we include that in the price tag.
I'm not going to lie about who I am and what experience I have. Do you think I have no chance getting a contract at this point?
For example, a project I bid on was offering $200 to implement an email signature with two columns and basic styling from an image spec. Since it looked trivial and interesting I spent two hours learning a DSL for emails (MJML) and making it and then submitted a bid with screenshots of it in a few email clients.
I'm not trying to get a job creating something of significant scale or significant duration right now.
What can you do that takes you no time and is in demand? I figured out how to something that takes 4 hours in 15 minutes and charge flat rate for it based on the original 4 hours. There is a handful of annoying errors other techs make that I instantly fix without sharing my secrets. ;)
Context: I have first refusal rights in my territory as a field tech on another site. I bill $5000+/mo in gross receivables. It didn’t happen overnight. I started by doing a few unprofitable tasks.
Your proposals are likely too long for easy stuff. Two paragraphs should be enough.
Yes, I'm actually saying exactly that in:
> [a good contractor will] not give you answers right away, especially deadline and price. I can take several (sometimes billable) hours up to several days with a customer to understand the project and assess this.
I always include an escape clause in the contract in case they forgot to mention something very important that change drastically the price.
I also never quote the entire project, only the first deliverables. Then roll incrementally from that.
Most contractors around me are well paid, it's not a big deal to not be accurate at the begining. We adjust on the way.