Line 42

Igor talks about the steps he takes before creating estimates and how he creates estimates.

Sponsor: Simple Giveaways

Creators & Guests

Host
Igor Benić
Talking about Web Development: https://t.co/JdGhezakMx. Sharing my journey on 5-figure/mo freelancing, ~$500-1k product MRR. Working on my first SaaS using Notion.

What is Line 42?

A podcast on Web Development and ways to improve it. Two developers talk about their experiences, opinions, and challenges with projects on which they are working on.

[00:00:00] Igor Benić
Hello and welcome to another episode. And in this episode, I'm talking about how to estimate better. Before I started working and applying on projects outside of my job, or while I was at college, I was really bad at estimating. For example, I did four sites, the same HTML template which I converted into four WordPress sites. And it had an index site that had a Flash animation that shoved all the four categories, which are separate sites. And I charged them only $200. I also did a complete design and WordPress custom coding for a construction firm, and I charged that for $100. Well, yes, you can say I was really bad at it. But if you take into consideration that I was a student at the time, and something like $200 would be a nice amount for a month for me, or even two, maybe it doesn't look that bad. But the constant calling, emailing, and new stuff they required to be added without paying more, it was definitely a lesson to be learned. And that's why it's important to estimate better for yourself and also for your business. And I always say as a rule of thumb, if you get a call for a project in the middle of the night, the estimation shouldn't make you hate yourself.

[00:01:57] Igor Benić
So the first step is to gather information. I won't start a project before I know everything I need to know. Before getting involved in further discussion, you should know everything about the project and its environment. And some of the general questions I would always ask is what works? With that, I'll know what they are happy with so I can work around it. What doesn't work? I get to know what's their priority to work on and how they want it to work. Then I ask about the environments. Find out if you'll need to set up a staging site and such. Include ours for that as well. Then I would ask if there is a deadline. This is a big one because you don't want to accept if you can't make it happen. Or you can at least propose a future date. And also I would ask what's the ultimate goal. Find out what they want to achieve with it. Maybe you have a better solution for them. And of course for each project there will be additional questions. So ask everything you can think of such as questions about different scenarios. Something I like to call the if-else questions. What if something happens? How should something else behave? And stuff like that.

[00:03:37] Igor Benić
The second step is to identify project requirements. If this is a project you're inheriting, check the state of the current project. Ask the potential client for access to their staging and or production site. Go over everything you think needs to be looked at. Try not to spend more than one hour checking everything, but if it's a big project and it requires more, just do it. I mean, if further investigation is needed, ask them if you can copy the project, if it's a smaller one, locally and play around with it, or if they can create a clone site. Maybe you'll lose two more hours of your time, but if you can solve what they need, you'll save yourself a lot of headaches. After the investigation of the current state, you'll have a clearer picture of what they want to achieve. Also, some do charge for that. So think about that. Sometimes, it's a consultation call or something like that where you'll charge your hourly rate until you investigate everything with them. Then of course, another part of identifying the project requirements is about the tools and software. So you go over the functionality they need and see if you can save them time and money by using existing tools and software. For example, they want an e-commerce site with shipping. Well, I will go for WooCommerce as I know it best, and then propose them a few add-ons such as WooCommerce subscriptions. If they need tools and software for the project to work better and such, need licenses, my advice would be to let them purchase and manage licenses.

[00:05:51] Igor Benić
The third step would be to define the scope of the project. This is a really important part of the whole project before you begin estimating. Go over each question you have asked at the beginning. Write the questions and answers down, then write what you will need to do with it, if such questions require it, of course. Then write down the current state of the project and write what you'll need to do with it. Will some optimization or refactoring be needed? Maybe migrations are here a safe choice as well? Write everything down. And then, once you have all that written down, go over it one more time. After that, you can start scoping the project by writing down what you'll need to do and try to put that in bullet points so you can easily skim over it later. And write every detail. And if you want to make sure your client will understand it well, write specifically in detail what you'll do. And that will also help you as well. So for example, a bad scoped feature would be create an upload form, because this doesn't tell you anything, even to yourself. A good one would be create an upload form on the admin post area that will upload the zip files by clicking on the upload button. Well, now you are starting to get somewhere, right? Because with that, you can even help yourself when you will estimate this part. And also, if you happen to get more questions while scoping, ask the client and start scoping again. Because many times when I was scoping projects, some parts, while I was writing them down on the paper or in the document, some parts would just bring up more questions, like the if-else questions or stuff like that. So definitely don't be afraid to ask more questions.

[00:08:29] Igor Benić
And before I tell you about milestones, I want to tell you about our current sponsor. And the current sponsor is Simple Giveaways. It's a WordPress plugin to help you create nice looking giveaways with ads. Giveaways are a great way to draw traffic to your business, grow an email list, and get potential leads. And maybe for such leads, you will have to create estimates. So go and visit the WPSimpleGiveaways.com. And now back to the episode.

[00:09:08] Igor Benić
The step number four is break it into milestones. Once you have the whole scope figured out, you can now break it into several milestones. It's much easier to estimate smaller tasks and you'll be also more precise with how much time it will take. You can also charge by milestones, so you'll get some of the revenue much sooner. And if the project suddenly stops or the client ghosts you, well, you'll still have earned something. And if there are milestones that you'll charge the client for, approach each as a separate project. That will push you to break each milestone into smaller tasks. If it's a small project, milestones might not be necessary for your client, but be sure to make them because they are necessary for you and for you estimate precision. You can view them as milestones, tasks, or something else, as long as it helps you get a better picture of what you'll have to do.

[00:10:37] Igor Benić
And now the estimate. Now that you have scoped everything and understand the project better, estimating the project will be much easier. If you have experience with similar projects before, use that when estimating as well. If something actually took longer in previous projects, count on it as something that will happen again. If you have a lot of experience, you could already estimate a fixed amount or estimate it based on the value that the project will bring to the client. But that's not easy if you haven't worked on the same type of project or tech stack or you don't have any experience at all. And another problem here is that at this moment when you're starting to count the hours of how much each milestone or each task will take, the imposter syndrome could kick in. So how to make sure you don't estimate too low? Well, I like to use the three-point estimation system. We have three scenarios here. First is the best-case scenario. That scenario, I like to view it as something that will never happen, right? It takes the least amount of hours because it's the perfect one. Nothing will go wrong, everything will work out, there are no details that a client might have missed or something like that. So for example, let's say that this best scenario will take five hours. The expected scenario is the second one and this is one that it will probably happen like that because when you put everything down on the list and you put hours, time, minutes or something like that on it, you are very close to it. So if you put the hours there on the milestones, use that, calculate it, sum it up and add it as the expected scenario. So for example, 15 hours. And then there is the worst-case scenario where nothing goes as planned. A lot of software that the client provided doesn't work or something like that or the software that they wanted to use and you while working wanted to find out that it doesn't work for their scenario and stuff like that. So yeah, don't use that as something to add just, I don't know, five hours on top. Use it really as the worst-case scenario. In this example we have the best scenario that is five hours, the expected that is 15 hours and now the worst-case is 60 hours for example. And then once you have all those hours there you can calculate it by using the best-case scenario, then add the worst-case scenario to it so we have 65, right? Then you multiply the expected scenario by four and add it to that number so 15 times 4 is 60 so we have 125 hours. And then once you have all that, divide it by 6. And now when I didn't use the calculator, you can tell already that 125 hours divided by 6 is somewhere almost 21 hours. So even by that you can see that our expected scenario which was 15 hours is now 21 hours. So it kind of protects you here, right? So yeah, this is a pretty cool system to use when estimating.

[00:15:22] Igor Benić
But that's not all. We have a sixth step and that is a buffer. Even by following all those steps, you or your client might miss some details. Even with the worst case scenario, such missed details might not be included. Clients might have forgotten to mention a big feature or a requirement for their project. So you can add about 20 to 30% on top of the estimated hours to include that as well. Or you can discuss it with your client so all other additional work that wasn't scoped will be billed by your hourly rate. But remember, you are a business and sometimes you will have to take a vacation or get sick days. A buffer will help keep your business afloat and in a positive cash flow.

[00:16:22] Igor Benić
So now you have a better understanding on how to estimate a bit better. And of course, estimating correctly is an art. You will make mistakes. Sometimes you'll charge too low, sometimes you'll charge much more, and it will all level. But don't be afraid to experiment with it, because sometimes it will take you some time to get it right. Happy estimating, and talk to you in the next episode.