Oppositely to what many believe, remote work and freelance projects are not easy. I know it's everyone's dreams to stay at home, organize their own hours to go to the park (see a movie, go to a beach, sleep more etc etc etc) while everybody kills themselves in an office.
To have this privilege, you do not have to be just good at what you do, you need to be responsible and have extra disciplines that go beyond your technical responsibilities.
When you need to set up a remote company or find a freelancer to do a project, this means you will find great professionals spread over the world. But, this professional would have to be good not only in your technical specialties, they need to have a good sense of collectivity and a lot of empathy. They do not just think about their task, but also the task of all other project members, including the client side, who is usually concerned about the progress of the project.
Here are some basic tips for not being a fiasco when you work remotely or get a freelancer remote job:
1. Give status
When working from the same office you have the whole team working by your side all the time but that's not true for the remote environment. When working remotely, you will not find the whole team working at the same time.
In a non-face-to-face team, status is what makes things not get off the ground. You must give and receive project status all the time. Whether by email, WhatsApp, Telegram, morse code or smoke signal. You need to give news and this news needs to be frequent. Slack is good but it is not enough. Usually, in teams that have people all around the world, is not easy understand the flow of messages sent in a different hour.
Just look the PR descriptions and commits messages is not enough. The team and the person who interacts with the customers need to know EVERYTHING. Although your commit is incredibly detailed, this is not enough. You need to talk to the team and tell them exactly what your status is on the project. The list of tasks done and the list of commits will be the support, but what will really make them safe and informed are their words.
If you do not like to give status, forget it, you are not good at doing remote work. If you do not like emailing in detail on where your work is when you will take the day off, give it up, this is not for you. Even in these days, you will need to keep in touch.
Usually, status can be given 2 times a day, in the morning and in the afternoon. If you make a long stop during the day, it is good to keep the team informed as well. But usually a mid-morning and a late afternoon report is essential so someone can touch the client news of everything is going.
2. Never omit information
But, suppose you don't need to give news all the time, in these case you can't, under any circumstances, omit or forget information. When someone asks you the status of the task, do not worry if it is incomplete, say exactly the current status. Do not try to tell good news when you don't have good news...
If you're missing a piece of functionality, say so. If you forgot to do something, say so. If you drank until you fell the night before and you will not be able to work, say so (you do not have to say everything you did when you were drunk...). But never, by any means, hide any kind of information.
If you simply hide information, the emergency decisions, which are the most important decisions, will be totally wrong.
This information will also be used to indicate a more suitable status for the customer. If you are a freelancer, choose to be very sincere with the client. I'd rather lose the client by telling the truth than by giving some excuse. I prefer to stay sane to finish the other projects that remain, then distressed and crazy trying to invent an excuse for the client.
No money pays for such a headache.
3. Keep the project repository always up-to-date
NEVER, NEVER, NEVER stay long time away from your computer before commit and push your code. Do you wanna go to the park and run with your dog? Update the repository.
Delaying a project because you did not update the repository is a very wrong thing. Especially when your tasks affect the tasks of the team. This is a mistake that can cause a terrible headache for the whole team.
Just to make it clear: I'm not saying that you have to upload incomplete tasks. You only upload completed and revised tasks to the repository. However, if you are working on a separate branch dedicated to a given task, upload everything you can and tell the team that a particular branch has an incomplete task, but always leave that branch up to date. Someone can eventually continue your project from where you left off. If this happens and you have not updated the branch, someone will have problems.
4. Bad news is better than no news
If you are a freelancer, you need to give bad news sometimes. Ahhh, the bad news. The bad news is normal in internet projects. But having no news is worse. The client becomes desperate, stressed and begins to doubt of your ability. Problems happen. We are talking about software development, that is, problems will always there.
Nobody likes to get bad news, but everyone like to get the good news of your project. The client needs to know what is happening, don't worry if this is good or bad news, but the client has a schedule to follow with other teams like marketing, support, commercial and so on... When you don't give any news, even the bad news, you affect the progress of the project and other people involved.
Remember that: the problem is not given bad news, the problem doesn't give news at all.
5. Freelancer: don't get a project if you think you will not finish it in time
Don't matter the reason, don't accept the job if you know that you will don't have time to finish it. I know that you are thinking: "but I need the money... I want to travel the world and this money could be useful..."
But is better lose a client now, or have to give excuses (remember bad news?) later?
In this case is better, to be honest, and say that you don't have time to hold his job. Never dismiss a client without a good and real reason.
The client will not mad at you. He can even think you are a good freelancer because you are being fully honest, and if this happens, he will wait (if be the case). The NO is your friend.
6. Be responsible
If you have responsibility and course, commitment, you will be fine. The problem is that many devs and freelancers simply lose great opportunities and to me, this has a simple name: irresponsibility.
You have a job to deliver and exists people that count on you to deliver this job. These people trust in your professionalism to get that job done. They pay a lot of money to you. You don't have the right to screw up all the plan because you are irresponsible with all the points exposed in this text.
But no one is perfect and time to time you will break some rule. It's all right. When you do that, say sorry, move on and try don't break anything again. People think that technical knowledge is enough, but it is not. You need to work hard on soft skills like you work on hard skills. This is a simple thinking. You need to have empathy and know how your actions will affect the client and the team.
What do you think about the points of this article? You agree with that? Did you pass through similar problems? Let me know if this was useful to someone.
Top comments (21)
Good tips.
One I think it´s super important too is.
Before taking any client work ensure that your work environment is fully equiped with good internet, great computer, proper mic and webcam and devices for testing (if you are a mobile dev) and proper communication, project and time management tools.
Also look for a quiet place. If you work from home maybe the people you live with will ask you for chores and other house related tasks while you are working.
If it´s difficult to separate work and house tasks it´s better that you work somewhere else. Like a library, coffee shops or a dedicated office (co-working or small office). This will also help mitigating the psicological issues that emerges when working in the same room you sleep in.
The separation of "where you live" and "where you work", I think, should be pretty high-up in the considerations for remote-work. When you get distracted, you can't focus, when you can't focus, you won't finish; and there goes your word-of -mouth marketing.
Yeah!
Usually, companies that have a good remote culture in action, help the employee with hardware, internet, accessories etc, to create a good equipped place to work. If is not the case, take some money to invest in a good computer, monitor, keyboard, chair and a better internet is a must to have.
Any got a good tutorial on morse code? It has gotten kinda rusty over time
:P
I will be doing more remote work in 2018, since i'm making the transition from a regular job to freelance. These things apply to normal jobs too, but for some this might be good info.
Being honest is very important. If you cannot do a task, or it's taking too much time, just say so. Your team will help you out. And if you don't, you will only waste more time and everyone will know eventually.
I've seen colleagues struggling with tasks who just kept trying and trying (and thus wasting time) until the point i couldn't stand it any longer (both seeing them struggle and losing resources) and helped them out, or connected them to someone who could help them. I don't know if it's pride or something else, but it's no shame to ask for help, or just talk to someone.
The rubber duck is underrated ;)
This article explain not only the remote work. I think this will be the same for all workers, it dies not matter if he is a onsite or offsite worker.
You are right, Sascha. Many of these problems happen even the dev are working face to face with the team. I don't know how many times someone goes out to lunch and forgets to commit some important code. :-\
Yes for sure, the lunchtime commit is very important I think. But the most developers are scared about the "Do not commit stuff that is not working" so they don't do it. I think that it is OK when someone commit not fully working stuff, but he must inform the coworkers about, or do a push in a separate branch. :)
Great write up. Thank you for putting this down. One of my best reads so far. This should be made into an official manual for freelancers and remote workers. Maybe create a GitHub project for this? Others could contribute to it. I'm available for co-operation, or if you're time-constrained, with your permission, I could create a repository for this.
These are useful tips, Diego! Our followers would find it useful, definitely sharing!
Ow! Thanks for sharing! <3
Great article. I worked in an office for 3 years and now I'm working from remote as freelancer. This is really helpful to me.
Very useful
Thanks!
Thx! :-)
Very useful and helpful
Thanks
Good to know, Khurshid!
Great article. One question though, how does one market himself to get remote work?
I think is more important to find a company that have the a remote culture in action. The point is: usually theses companies look to a great dev with great skills with a big sense of responsibility.
That's very useful. Thanks!