I work as a software engineer for 12 years now. Most of that time I’ve also been a freelancer.
Basically, I do freelance for 2 things: get extra income and to have a different perspective of building things.
When I’m at the office, my activities are limited to code, tests, sprints, reviews. Everything that a software engineer should do.
Everything changes when I’m doing freelance.
I need to handle lots of things that are not related to code. I need to define what needs to be built, do some basic wireframing, design, code, test, deploy, analyze interactions, announce changes, and keep the user engaged.
Looks awesome, right? The thing is, I have a daily job.
So how do I manage to work efficiently as a freelancer?
Here are 13 rules I've developed over time to get the best quality work
when doing freelance.
I learned the hard way that it’s not a good idea to work in more than 2 projects at the same time as a freelancer.
Last time I did this I end up overwhelmed with a ton of work and the result was pretty obvious. Both projects were delivery late. — Just don’t do this.
I prefer working on long-term projects.
Most of my projects last between 100~200h work. This makes me comfortable to plan and execute the whole project without the need to rush.
I use Upwork for most of the projects. It’s perfect for freelancers.
I have a limited time to work, so spending any extra time with things that are not related to the work itself is a wast of time.
I have contexts for everything.
I have 2 accounts in my browser, one for work and another for me/freelancing.
I do this with everything: Multiple calendars, multiple terminals (sessions in Tmux), Multiple emails, etc … This helps me get organized and change context when I’m at home working on the projects.
I plan my freelancing week every Sunday.
I open up the calendar and fill the slots of how many hours I want to work every day. During the week is usually 1h/day and on the weekends 2~4h a day (if I’m not busy).
Before start working, I make a list of what I’m planning to do on that specific day.
If I need to complete a task, I break it into small tasks that need to be completed to get the whole thing done.
When you have items to cross out it makes the path clean and you have only one goal: Mark all items as done.
Every single time I start working on a task I know what I need to complete.
In my experience, start working without knowing what I need to do next usually makes me do lots of things that don’t matter or are not very important (small tweaks on the interface, tuning a code that is already working and so on)
I break big tasks in small chunks of 1h work.
At least for me, it’s almost impossible to get good quality work if I try to work more than 1 hour in a row. — Some folks like to use the Pomodoro technique.
To solve that I plan my tasks separated by 15~45 minutes intervals.
For example, if I want to 4 hours of quality work in a day I usually do 2h in the afternoon (separated by 30 minutes break) and 2h in the evening, also with 30~45 minutes break.
Those are incredible efficient hours.
All my projects have roadmaps describing each sprint (usually 1 week) and what I want to complete on that sprint.
This is extremely important if you want to get the whole project completed.
If you don’t have a clear plan of what you need to do, it’s very easy to lose lots of hours tuning things that are not important.
Focus on what matters. Get the project completed first, think about improvements later.
As I have a very limited time to work and I want to get the best of my hours, I can’t be interrupted during that time.
For that, I leave my phone far from the computer and I also turn off all notifications.
I usually take a notepad everywhere I go.
Creativity rarely happens when you are doing the work. So it's always good to have a notepad with me all the time.
I have a ritual to try getting my creativity flow.
Usually, I put some relaxing music (this playlist on Spotify is my favorite for that) and I go for a low/medium effort run for one hour, earlier in the morning.
If I’m stuck with some problem or need some ideas for a product I’ll probably figure it out at that moment.
Learn how to do some basic sketching.
I have never been good at sketching. A couple of months ago I started watching some videos on youtube to learn basic sketching.
It helped me a lot to create some basic wireframes and visualize what I’m trying to do. This is also good when you need to share ideas with another person.
I don’t try to work more than 4 hours a day because after that time I lose efficiency.
I’ve done lots of experiments and 4 hours a day is perfect for me.
Why I would want to spend more hours in front of the computer knowing that I’m not being the best I can be?
I could be at the pool, going out with my Girlfriend, doing groceries, or just not doing anything else. It’s okay to take breaks.
While working from home I end up depending on some important tools.
- Spotify (Soundtrack)
- Notion (Project management)
- Klokki (Time management)
- Tmuxinator (Terminal Sessions Management)
- Notepad (the real one, not a software)
This is it, thanks!
Do you have your own rules when working as a freelancer? Feel free to share below!