###Becoming an effective remote programmer
I have been working from home as a web developer for one year now. But before that I was a web freelancer for almost 4 years and for 2 years I worked in the office at SimCorp but my whole team was sitting in Copenhagen. So, I am a pretty experienced remote worker. I love this way to work and thus I try to be effective at it. In this post, I will share what I think it takes to be an effective remote programmer (non-tooling tips, which are covered here).
I believe that in order to be an effective remote programmer, one has to deal with severe problems this way of work imposes and develop personal traits: initiative, excellent communicator, and trustworthiness.
Let's talk about problems first.
Lack of social interaction. Or just loneliness. Working from home solved my biggest problem of working in the office - the commute. It took me 3-4 ours per day, almost 55 days per year. But unfortunately working alone is unnatural. We as species survived because we had social interaction and collaboration. We are too weak to survive alone. Thus the need to socialize and collaborate is deeply embedded in our brains.
Furthermore, researchers have proved that changeable environment and interaction with different people improve our ability to learn.
Hence, to be effective remote worker one must find the way to interact with other people outside his family. I really struggle with this. But I try my best to socialize with my current and previous coworkers, to teach courses, to talk at conferences and other events. I am in constant search for an opportunity to have my social interactions.
Some people use coworking spaces but I am not a huge fan of them since for me workspaces neglect commute absence and personalized environment benefits.
I do at least 1 hour of exercises 6 days a week. To compensate the toxic influence of loneliness on our ability to learn effectively, the remote developer must do a lot of exercises, preferably aerobic, preferably every day. Researchers proved that aerobic exercises can help with this problem.
Lack of self-motivation. It is definitely hard to stay motivated when you stay home and things don't flow much. There is no boss standing behind your shoulder and motivating you using whatever method he is good at. In such a case I believe only hard self-discipline can keep you effective. I use Pomodoro technique and my discipline is pretty simple: deliver 10-12 Pomodoro per day to my customer. That is not less than 50 Pomodoro per week. I almost never break this rule. Sometimes I feel like I do not want to code. But I force myself into doing Pomodoros. And you know what? Right in the process I start feeling good about the work I am doing and the amount of Pomodoros I have done.
Lack of self-management. Since you don't have 9 to 6 working day anymore your concentration starts to decay. You start mixing work with entertainment and home duties. You relax because you are home anyway. This semi-work can take a large portion of your day and at the end of the day you might feel unsatisfied with what you have achieved. Thus you merge your work and your private life and neither part of your life wins in such a situation. To stay effective, the remote worker must manage his time and his work very actively. I don't have a manager who would micro-manage me and therefore I do everything on my own. But I still use some kind of Kanban board, create and manage tasks there, try to do estimates and reflex on my estimations accuracy. I usually pretty consistent with my working hours. Although I do have the flexibility to work whenever I want to, I don't really wait for that muse to come and start working according to the planned schedule.
Now, let's talk about traits one has to sharpen to be an effective remote developer.
Initiative. You don't move your ass unless someone kicks you? Then remote work is not for you. At least for now. I hope one can teach himself to be more initiative. Initiative bases upon a strive for productivity, being self-driven and requiring the least amount of managerial overhead. From time to time, you will have the idle time. It is important to spend this time with the value for your customer. I always try to initiate some improvements in the project which will potentially increase team's productivity in the future. These improvements might be technological, educational, process or product related. Does not matter much. The point is to strive to deliver something a value to my customer even if I was not asked to explicitly.
Excellent communicator. This is a trait everyone in tech must have. But in remote work it is critical. To be effective one must communicate as clearly as possible because almost everything happens asynchronously in remote. This constitutes a special challenge for a non-native English speaker who works for the English-speaking customer. I do a whole lot of things to improve myself on communication skills. Starting from reading books on tech writing and finishing with listening to podcasts and writing this blog.
Trustworthiness. I have never seen my current manager. He has never seen me. He sits somewhere in California and I sit here in Ukraine, opposite side of the globe. Most probably we will never see each other and have some beer together. Teambuilding is the place where people build trust in addition to other things. But we can not have them. Hence all our interactions are based on a trust in advance. He and I do our best to maintain and build real trust. I try to be never late on the call and in case something happens I make him aware. I try to make visible my work and my progress. I do my best to be as available as possible and make him never wonder where I am and what I do and whether I am worth to deal with. My manager also does something which makes me trust him. This something is only known to him. One thing I am sure about is that he know how to build a trustful relationship with the remote team.
To summarize, in order to be effective try to socialize at least once a week with people outside your family. Do everyday workouts (preferably aerobic ones), use Pomodoro technique to fight distraction and structurelessness and impose a discipline on yourself to do at least 50 Pomodoros per week. Try to be initiative, constantly invest in your communication skills and actively build the trust with your remote client or manager. There is, of course, whole tooling side of this topic, which I have covered here.