On 13th April 2015 sprints started at Pycon US and also my remote internship. I was not attending Pycon US but working remotely from my college hostel. Like every Indian engineering student, I was looking for an internship in my third year of B.tech. Got a positive response from one company but they want it to be remote. Remote sounds good to me and I decided to give it a shot. This remote internship was the first step in my career. My 3-year journey can be divided into:
-
Remote Intern: I applied for the internship in february 2015. After clearing the interview, the internship was scheduled for May - July during my summer vacation. Then I realised why not start the internship now as it is remote. I requested my mentor and he was happy to start the internship during his visit to Pycon US. The internship was supposed to end in July but then I again realised why not continue the internship as it is remote. My mentor was happy to continue it. This is the real benefit of remote working.
-
Remote Software Developer (part-time) + Freelancer: After completing the college, the title changed to Remote Software Developer. One benefit of remote work I like the most is you can work with different companies across the globe. So, I decided to keep working with my previous company on a part-time basis and dive into the world of freelancing. Freelancing sounds cool but it takes time to get some initial clients. I have worked with companies based in the USA and Europe.
-
Fulltime Freelance Software Developer: After having an initial taste of freelancing, I am now working as a Full-time Freelance Software Developer. This has its own pros and cons. Like no fixed monthly income with the benefit of no limit to the income, you can earn.
Image Source: Pixabay
Remote work Mantra
Communicate early Communicate often - repeat it three times.
Not sure if this is the good way to emphasize the importance of communication in remote work. But communication plays an important role. No matter how good you are as a programmer. If you can not understand the project requirements and communicate with your remote team you can not succeed in the remote world. Some points specific to communication are:
-
Communicate early: Great, you got your first project. You received the feature document but wait some things are not clear to you. Early communication is necessary so you do not go in a different direction. Jump to your team communication tool like Slack and discuss early.
-
Communicate often: You have started the feature development work but you are not sure about the coding approach. Again discuss with your team and continue work.
-
Read twice: Please read the message again that you just typed before hitting send button. Typos are common but sometimes the meaning from your text can be different from what you want to convey. So, read it twice.
Some learnings and observations
-
Contribute to Open Source projects: Open Source work is mostly remote work. Open Source projects have a range of contributors working from different time zones. Open Source teaches you important skills like practical coding skills, communication etc. These skills will help you a lot when applying for remote work and day to day activities.
-
Do not commit if you cannot deliver (Learn to say No): In freelancing, you may get requests for new work when you are fully occupied with work. Do not make false promises to work as you know you will not be able to work with your current schedule. Again comes the communication Mantra. Discuss with the client about your availability. If the work is not urgent, the client will be happy to wait for your availability.
-
Have a work schedule and not be available 24 X 7: People working remotely have a hard time separating work from their personal lives. In case of onsite office work, developers coming out of office close their working day and will again continue next day. Creating such a boundary line in remote work is harder as there is no one to tell you to stop. So, create a work schedule depending on the type of person you are. I am a morning person and do not like to work late at night. So, I work mostly in the daytime. I have clients in vary timezones sometimes with a time difference of 9 hours and 30 minutes. So, work completed by me in the daytime can be reviewed and deployed in my client's daytime. I respond to questions using my phone and jump to laptop only in case of urgent work. So, create a schedule that suits you, discuss it with your clients and do not be available 24 X 7.
-
Your work is your attendance: In case of traditional office setup, a developer presence marks the attendance. But when you are working remotely, your attendance is marked by the commits you push and communication you take part in.
-
Identifying bad clients: There is no full proof method to identify bad clients but I look for some hints in my conversation with clients. Some clients use words like it is very easy again and again. They use it again and again. With no technical perspective, they make the assumption. One reason may be they are in the search of cheap labour. Better is to avoid these clients to have a peace of mind.
-
Do not start with freelancing as a beginner: Good companies often hire remote freelance developers because they have a limited in-house team or do not have experience with a particular technology. So, they only hire the experienced developers. As a beginner, it is better to start contributing to Open Source projects and find a remote internship.
-
Do not depend upon freelance marketplaces: Platforms like Upwork are great to start but do not depend upon it entirely. Create a portfolio of projects and apply to companies directly you want to work with. Create your online presence so clients can contact you directly.
-
Exercise and eat healthy food: We developers have to admit our work is not friendly to our health. Sitting long hours in front of a screen cannot be healthy. So, develop the habit of exercise each day and eat healthy food.
There are two hard things in freelancing: calculating hourly rates and project estimation
A project specification that does not change is very rare. So, working on a project basis makes it harder to have future change requests. Changes in the specification mean you have to estimate the project price again. When you are working alone, this makes it even more problematic. As a freelancer, it is better to work on hourly basis.
Solving one problem creates another problem - Calculating hourly rates.
Hourly rates depend on a number of factors like your skills, location etc. In theory, your skills should be the only important factor. But your location also matters. Like the cost of living is very different in the USA than India. So, perform some research on the market value of your skills. And have two hourly rates depending upon commitment duration. For short-term commitment, you should charge high. You can give a discount for long-term commitments.
You are still here. Thanks for reading my journey. If you have some specific questions, feel free to ask it in the comments below. Happy remote working.
Comments !