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:
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.
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.
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.
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.
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.
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.