Why Your Project Estimations Are Always Wrong
Estimation is hard, but there are techniques to help. Do you know your knowns, known unknowns, and unknown unknowns?
Join the DZone community and get the full member experience.Join For Free
If you've ever developed software for a client, someone's asked you, “How long do you think that will take you?” If you've heard that question, you understand the frustration and pain of project estimations.
As many as 80% of software projects run over their initial estimations. Whenever you give a client a concrete estimation, you're more than likely giving yourself too little time. There are three main factors you must account for when estimating your project's length:
- Knowns. You can more accurately estimate the time it takes to do things you already know how to do.
- Known-Unknowns. Things you haven't learned yet, but you know you'll need for this project, are harder to estimate, but are at least somewhat predictable.
- Unknown-Unknowns. Obstacles that you cannot predict or prepare for are the things that destroy project schedules. If you don't know you'll need something down the line, you have no way of accounting for it in your estimation.
Accounting for these different factors is almost impossible, but there is one thing you're probably doing that is making the task even harder. You're re-inventing the wheel.
Dumping hours into developing software and features you could get off-the-shelf is a time-suck you can't afford if you want to stay on schedule. Let's take a look at how missing your estimations hurts you, and how Auth0 can make things easier.
How You Hurt Yourself by Missing Estimations
Tom Cargill of Bell Labs once said, “The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”
This quip from 1985 has rung so true with developers over the decades that it is now referred to as the “Ninety-ninety rule.” The joke is so light-hearted that it might lead you to believe that missing your estimations isn't a big deal.
The reality is, missing your estimations hurts you on several different levels:
- You lose credibility with your clients when you fail to deliver on your promises.
- Your team's morale drops when they're constantly failing to hit their goals.
- Your project is in danger of being scrapped when the team and the client are both unhappy.
Some elements of the process are going to be beyond your control. An obstacle is going to arise that you had never considered, that no one on your team has experience with, and that's okay.
What's not okay is wasting time developing in-house solutions when there are tools available on the market that can fix your problems today.
Stop Re-Inventing the Wheel
Let's pretend you wanted to build a user authentication system for your app. Here is a brief list of the high-level decisions you're going to need to make:
- What will your sign-up and confirmation process look like?
- How will you secure transactions?
- How will you store passwords?
- Will you allow password resets? If so, how?
- Will you incorporate social authentication? With which providers? Will you use OAuth or OpenID?
And that's not even touching the nitty-gritty technical side of things, like how you will salt/hash your passwords or which libraries you will use.
All of these decisions are going to lead you to more decisions, each of which is a potential landmine for your project. Why risk making the wrong choice and destroying your project schedule when you can implement a powerful, ready-to-use authentication system right now?
Auth0 provides a lightweight authentication system that has been developed and refined by thousands of users and developers over several years. When you use Auth0, you aren't just saving yourself months of work, you're getting years of testing and product development that you couldn't get immediately with an in-house product.
One of the benefits of those years of development is that Auth0 has been a part of almost every use-case imaginable. In order to keep up with our user's needs, Auth0 has had to develop an incredibly robust feature set.
Making Auth0 the Bedrock of Your Software
Auth0's massive feature set doesn't just provide a solution to your authentication needs. It can serve as the spine of your entire project. Thanks to Auth0 Rules and User Profiles, any automation that involves collecting user data or authentication is perfectly served by using Auth0.
Need to run an automated email campaign? Use Auth0's Segment Rule to collect user data, analyze it in Segment, and use Segment's built-in Customer.io integration to automate your emailing.
Or maybe you need to run analytics on your customers based on their location, income, and other personal details? Customize your own analytics dashboard using data collected with Auth0 Rules. You can have it running in a couple hours as opposed to a couple weeks.
After all these years, Auth0 can immediately introduce a ridiculously diverse set of features to any project, regardless of the language or library it was created with. You're paying for more than easy authentication. You're paying for the bedrock of your entire project.
Published at DZone with permission of Martin Gontovnikas, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.