Have you ever taken a freelance programming job only to find that the expectations were totally unrealistic?
Or have you taken a coding gig and then not heard from the company for weeks at a time?
I want to give you some red flags to look out for to avoid these bad situations where neither party benefits.
I've worked both as a freelance developer and as an employer of freelance resources, and I would love to share my experience I've gained through mistakes and experimentation.
1 There is no Regular Check In
One of the essential components to a successful developer or development team, is clear and regular communication.
Since it is essential, you should be asking about it up front in the interview: "What are the regular check in meetings or daily stand ups, and who will be attending?"
If the interviewer can't give you a straight answer, it means that no such check in exists.
They probably don't know what they are doing, and you shouldn't become the sacrificial lamb that helps them learn their first lesson about software development!
2 The Development Process is not Documented
Documentation can mean several things.
It could be a Word document or a Confluence page.
It could also be a workflow that is documented via in-code configuration in GitHub.
In any case, it should be clear and there should be ready evidence that the other developers are actively following it.
Again, ask about this in the interview: "Can you please share your screen and walk me through your development process?" or "Can you show me a recent pull request and the path it went through, from initial requirements documentation to deployment to production?"
3 You Will Report to Someone Non-Technical
It may sound elitist to classify people in to technical and non-technical groups, but what I mean by this is someone who understands your job - both the possibilities and the constraints.
A non-technical person will not know these things and will often have unrealistic expectations of you.
They won't understand that the requirement that took them thirty seconds to come up with will either take six months of effort or is not even possible.
The best working arrangements for freelance developers are those in which your primary point of contact is a CTO or a senior developer who won't make this mistake and who can take your side in debates like these.
4 You are Taking Over for a One-Man-Show who just Quit
The only thing worse than taking on a green field project as the first developer, is taking on a project where the first and only developer has quit.
It means that not only are you seeing red flag number 3 (if no other developers are on the team, then you must report to a non-technical person), but also that there is literally nobody around who can help you.
The company is scrambling to fix their past mistakes in the technical management of the project. They will ask you to be their savior, but you will inevitably become their scape goat.
5 It is Unclear How You Will Get Paid
But when you are an independent contractor, you have all the burden and the risk associated with both billing and collecting.
Your best bet is to avoid companies that can't give you an exact date to invoice them and an exact date by which you will get paid.
In the best case you will be chasing them every month/week for collection, wasting much of your valuable time.
In the worse case they will not pay you, wasting all of your valuable time.
If we take the five red flags above and find the common thread, it is this: look out for companies that don't seem prepared.
They may not be prepared because they lack experience, or they may not be prepared because they are scrambling to fix their past mistakes.
Either way, there is a big chance of expectation misalignment with the person they hire, which can lead to a bad outcome and both parties being unhappy.
To all the freelance developers out there: What other red flags do you look for when evaluating jobs?