A few months ago I signed up for Matchist, a new startup that matches up freelancers to clients. A few weeks ago, I finally got matched up to a client, and was excited to freelance as a Ruby on Rails developer for the first time. Here is what I learned along the way:
Include Extra Time For Setup and Research
When I started my freelance gig, the client asked me estimate how long it would take me to fix each bug, since I was working hourly. I did my best to give a rough estimate, but I completely forgot to include any time for setting up their project on my local dev environment.
It took me some time to clone the project from github, install the right version of ruby as specified in their .rvmrc file, install all the gems, setup my local database, and get familiar enough with the project setup to start researching how to approach fixing the bugs. You know the drill, so make sure to include the project on-boarding time in your estimation!
Be Conservative In Your Estimations
It’s really hard to estimate how long something will take in web development, especially if you’re not yet that familiar with the code base at the time of the estimation. So if you think a task will take only two hours, add on an hour to your estimation. The client will be a lot happier if the task takes you two hours instead of three than if you estimate for 2 hours and take 3. I told my client that my estimations were very rough, but once the estimate numbers are on the table, it’s much harder to re-negotiate up.
Communication Is Key!
For the bugs I was fixing, once I figured out the source of the bug, I usually thought of a few solutions, some of which involved significant changes to the existing product. Communicating with my client about these solutions and how long each solution would take me was the key to my success as a first-time Ruby on Rails freelancer.
If something needed extra time, the client was the one who chose the more lengthy solution, and it was a much better situation than if I just decided which solution to implement myself and that didn’t match to what the client actually wanted. I made sure to keep in contact with my client throughout the experience, making sure they understood what I was working on and how long it takes me. Yet, there still was a slight mis-communication about two hours of my work. So next time, I will be even better at my communication!
Have you ever freelanced as a developer? Please share any additional tips in the comments!