Software development is notorious for running over budget. It has been for many decades. The root of the problem lies in estimation. Most software engineers/programmers are horrible are estimating cost. “Well duh?” you might say. The problem is not quite so clear as you will see.
You might say “Wait, I just need a website” not a software project. The problem with that is that a website is a software project. The project can range in size as well as in effort. I can create the simplest website and have it up on the web in minutes. There are websites on the other hand that have so many features and sophistication that I would not be able to finish them in my lifetime.
So if you want a ball park figure for a “website” without indicating the requirements your cost could be $100 or so – infinity.
So How Can We Get a Better Estimate?
That’s a good question and the answer is: by refining the requirements. The better understanding of the problem the better the estimate will be. Building software is full of risk. There are simply too many variables and too many unknowns for the common project.
The best way to determine your cost starts with you, the customer. Think in terms of what features you would like for your website.
What features do you need now? Do you want to sell merchandise? Do you want gather a customer email list? Do you want to the capability to update certain or all content yourself (prices, products, newsletters, blogs, etc)? Does it need to connect to merchant payment systems? Paypal? Does it require membership and member login authentication and authorization? Does it require any media content management such as live video streams/video stream uploads and management. Does it need to allow for control and management back office processes for your business?
What features will you need in the future? Thinking in terms of what if scenarios, how would your website need to change if your business grew or if your product line change or if your business mission changed? How much would it cost to update it?
The better you define your requirements will not only get you a better estimate but may also get you a better product in the long run.
Does Having Better Defined Requirements Ensure Me With A Better Estimate?
It helps but, actually that depends if the developer is proficient at estimating. How do you know if the developer is proficient at estimating? You could ask for certain proofs. Keep in mind that the more complex your software solution is, the more important a solid estimator becomes.
You could ask the following questions:
- Have you done X technology before? Not having done doesn’t immediately disqualify but you can still get a feel to determine if the developer can estimate that well anyway. The developer may have worked with a similar technology or with a broad set of technologies that are similar in terms of development.
- What is the level of accuracy of estimates in your past projects? All developers have this or can create it within a reasonable amount of time. If they don’t, it’s a bad sign. It’s not hard to dig up when they went over budget or under budget.
- Do you have some previous work that I can see perhaps? If you’re getting a website created why wouldn’t the developer have some proof of their work?
- What is the smallest project you’ve worked on, the median and the largest project? Why is this important? Developers who work on large projects may not be as sensitive or accurate in terms of estimates. If you’re annual budget is $600,000 there is a lot of room for poor estimates from 0-$600,000.
There is a lot less room for poor estimates in a project that is 3 months long and $15,000. There is a joke I’ve heard before in large systems development; the customer asked “How much will it cost to get a print button on that screen?”. The developer replied “Around $1,500”. The customer said “Ok, let me think about that”. The developer followed up with “Just keep in mind that it’s $15,000 if you want it to work”.
That might sound ridiculous to a casual observer but keep in mind that building software is not cheap and the more customization you ask for the more expensive it can get. Large projects allow room for expensive features. It may sound expensive but when you consider that the feature is used by tens of thousands of users the cost is bad at all. For example $15,000 divide by 10,000 comes out to $1.50 per user. The features pays for itself quickly.
You on the other hand may not be able to justify the same feature.
- What types of technologies do you consider when building a website for a customer? There are many different technologies. I will boil it down to three.
But before I do that let me explain why. Developers love to do their thing with what they do. Designers love to design. Coders love to code. They love creating beautiful code and use cool approaches with shiny toys. Developers get a lot of joy out doing what they do. Therein lies a problem.
The developer may be giving you what gives them the most satisfaction but not what fulfills your need the best. It doesn’t matter how much enjoyment the developer gets out of building your website if it’s going to cost you now or in the future many more times that it should have. The developer may be getting joy at your expense.
With that said, here are the three solutions available for your website:
Out of the box solutions such as Wix, GoDaddy Website Builder, etc. These are normally really good solutions and cheapest but are the least flexible in terms of customization.
Completely custom – This could be Java, C#, Node, Ruby, PHP, Python, you name it. This is the most expensive route. Sometimes necessary but it will also be the most expensive route. This is likely the most customizable, but can be many factors more expensive than something like WordPress.
Content Management – There are many in this category. The most popular one is WordPress. WordPress is highly customizable. You can do anything required of a website with it. You can even do what the completely custom sites do, albeit in PHP which many developers don’t like. It’s ecosystem has plug ins for everything under the sun. What his means to you is lower costs for advanced features implementation.
There are many others out there but I am not as familiar with their capabilities and flexibility.
Long story short, a CM package will allow even you to manage contents. These systems are role based so you can limit different roles to different features. Say you want to write a blog every week, easy. Say you want to update your page, easy. Say you want to add stats capability to the site, easy.
Here is a list of the top CM packages: Top CM Packages.
I am a developer but I don’t know how to estimate?
If you are a developer reading this and you don’t how to estimate, I highly recommend reading Software Estimation by Steve McConnell. Many of the techniques are almost common sense but you’d be surprised how we totally miss them when we estimate.
With all that in mind I would recommend getting several estimates. If you’ve ever been surprised by how much the difference in cost is when getting auto repairs just imagine that in software times a factor of 10 or more.
You should be able to determine the best fit by listening to how that developer walks you through their process and answers the questions above.