Imagine yourself in this situation: you are exhausted after work, laying at you cosy couch and reading a book (of course about programming!). Suddenly, you receive a message from someone you know (might be a colleague, someone from the family, whatever).
“Hi John, am I right that you are making mobile apps? I am asking because I might have met a person who is interested in doing one.”
In the blink of an eye you are full of energy.
“Yes, finally side project has found me!”
You are turning on the computer, opening your IDE and… wait.
What exactly should I do? What are clients requirements? What is the specification? How much will I get for this? How much money do I want?
This is what happened to me twice. This is also the reason why I am writing this article — I hope someone will read this and won’t repeat my mistakes.
My first side-project
I was writing with a designer asking for UI/UX tips so I can make the designs for my app. Suddenly, he asked me what am I doing in life and do I want to take a side project. I answered that I am a mobile app developer
and might want to talk about this project. After sending the email, I was behaving exactly the same as described above. Full of energy, happy, ready to work. One thing I wasn’t thinking about was the money. When the client
asked how much I would want, I wasn’t thinking at all. Just said: “3000PLN” (less than 1000$). I was over the moon. I had a side project and someone was paying me the money. Sounds great?
Not necessary. After I got the designs, I noticed that there around 15 pages to make. Ok, not that much. But none of them was having standard component. Each was having custom controls, the slider was very custom one, everything was custom…
It took almost 3 months of after-hours work.
Let’s count that:
I’ve spent on this project ~192h (4[months] * 4 [weeks] * 16 [hours — 10h in weekend & 6h during the week]). 3000/192 = 11PLN/1h. That’s about ~3$.
Not saying if it is much or not. What I can say, is that if I were thinking while signing the contract I would never agree for this kind of money.
After that project, I received another message from another person. Same thing: he knows someone who would want to make an app. He asked if I can do it and how much money would I like.
“Ha! Not this time” — I thought. I started Googling how to do a proper estimation and thinking what went wrong in the previous side-project. I came to this list:
- I wasn’t aware of what exactly the client wants,
- I didn’t have a chance to look at the designs,
- I was taking money for a whole project, not an hour spent!
So having this in mind I’ve started answering.
“I don’t want to make it with a fixed price. Let’s do it in an AGILE way with an hourly rate.”
Later, I explained the pros of AGILE (they can change everything when they want, we can make demo’s etc.)
Also, I asked if that person has the designs so I can check them. Later, in the same message, based on the previous mail, I estimated the whole work (creating the project, creating base classes, developing the views,
viewmodels, models, API calls etc.).
At this point, please remember to estimate everything and add additional time (for being stuck in the development, client changing the requirements etc. — for your own sake involve everything related to the project). In this
project, I had just added additional 20% of the estimated time. In this case, the project was estimated for only 40h. Now, after some time I can see that I’ve overestimated it. I can tell it by looking at “Add push notifications” task. I estimated it for 12h. 12h for 2 platforms! Knowing the Firebase or OneSignal and how they can cause problems it looks like nearly impossible to do it in 6h per platform.
Later in this project, I added a table for a client asking him/them to fill it. It looked like this. It helps
a client to visualize the things he wants and helps me to estimate the work that needs to be done.
After that, I took the estimated hours, multiplied them by my hourly rate (you should think of yours in this case) and wrote the TOTAL ESTIMATED PRICE. I also wrote the disclaimer that this is not the price for a whole project, but only the attempt to estimate it. This price might be
bigger or smaller — this is up to the client.
Being honest, I didn’t get this project. I didn’t because it occurred that the Client didn’t have money for both mobile app and backend (required in this case). In many cases people think that making an app isn’t that expensive.
Answering the question in the title
Personally, I believe that well-estimated project is worth effort. There is one more thing. You might need to lower your rate because you cannot compete with bigger companies, which have many developers and do it on
a daily basis. At the same time, you need to make the rate higher than the one you have at work because you are going to do it (the project) in your spare time. Your life would be affected by this. Probably you won’t be able to go for a beer with you Friends on Saturday’s evening because you will have to work on Sunday. You won’t be able to go to the cinema because you have to work on your side-project. You won’t be able to do many
other things because you have to work on your side-project.
There is a difference between project for yourself that you are doing in your spare time and a project for a someone who is paying you (or willing to pay). The difference lays in motives. In the first case you are doing it to improve your skills, make something useful for you and your self, to prove yourself that you can do something. In the second some the motive behind is the money. Think how many projects did you manage to finish for yourself?
In a situation when someone is paying you to finish, there is no option that you will tell him “You know what, I am quite bored with this project. Let’s finish it”. No way. Also, one more thing that people are forgetting
when talking about side-projects. They also have deadlines and sometimes require after-hours work. Think about it.
Ask yourself a question: do I really want this side project? Why do I want it? What motivates me? If you can convince yourself than take it!
About the money
I found it hard to decide what my side-project hourly rate should be. I was sure that it should be higher than my “normal rate”.
“How much higher?” — that was the question. If you are in the same position, I’d suggest:
- Ask your managers how much money does your company take for an hour — be careful about this one. Many managers don’t want to talk about the money they are getting for your work.
- visit Clutch.co and find companies which are doing similar projects. Check how much money do they take for an hour — of course, take less! You can’t compete with companies with Scrum masters, testers, many developers and loads of other people!
- visit google.com and google “estimate mobile app” — you should find nice calculators — this is not precisest approach but it can give you the general view of the market. I was using
- UPDATE 2020: today I’ve recieved an email saying that there is another cost estimator that you can use. It’s called App Development Cost. It’s similar to the both mentioned above but after you fill needed data it provides you with report. It’s nice to know what is the cost of each feature.
Having this kind of breakdown should make your life easier and should prevent you from underestimating the cost of the project!