I’ve been browsing and replying on Quora over the holidays and one of the questions made me think deeper about the estimation challenges when quoting custom development work:
At DevWP I’ve already blogged about why I avoid estimates and the reason we do provide retainer services for our ongoing accounts. I’m no stranger to budget constraints and upfront expectations, but unlike the products business, services may vary drastically.
In the Quora example, the customer needed a drawing solution for his website. However, there are plenty of variables, such as:
- What features should be supported for the drawings? This may very well be a Photoshop in a browser
- What kind of UI/UX are we talking about – when it comes to the drawing panel itself, the single drawing view, archives, option pages
- How will that connect to users in the current site
- Is a new user management toolkit needed as a part of the plugin
- How should that scale (are we talking about a large, performance-sensitive site)
- If there are lots of interactions with different users in different roles, what is the security policy, third-party tools using that, etc
These are just a reduced list of all the questions that come to mind. That said, once a similar request is sent to a number of contractors, each will come up with different conclusions based on their point of view.
How Do Products Work?
When you are buying a car, you know exactly what you get – there is a technical specification for every element, car reviews by various experts in the industry. If 10 people buy 10 cars from the same model from different vendors (resellers or partners), they will get the exact same result.
Products are designed to scale, and therefore they follow the very same structure, built by the same materials and available for distribution in hundreds, thousands, or millions of units. If your car is lost or missing for whatever reason, you can purchase the same model and practically enjoy the exact same set of features with the same comfort that you’re used to.
There is zero uniqueness between different products of the same model.
Even so there may be factory/product defects – certain units that were produced with poor quality chips or units that misbehave as compared to the bulk of the ones produced out there.
Why Are Services Different?
Unlike products, services are different. They require custom work produced given a custom set of criteria, by different vendors with different skills, expertise, and workflow.
We have all had to deal with different service providers on a daily basis – from customer support over the phone or email, through courier delivery services by different postmen that craft their agenda and style in a unique manner, through plumbers and electricians solving problems in our homes. We don’t want to call an electrician that would assemble our electrical system in a way that would cause a short circuit burning the entire apartment, do we?
Research Is Often Omitted
There seems to be a common misunderstanding when purchasing online/web services and comparing quotes for services. Additionally it becomes more ridiculous when the lowest price is being targeted regardless of the expertise or a portfolio of the service provider.
In fact that’s what many governments do as well for public tenders.
For example, we do have a problem locally with the road infrastructure. The public tenders for highways and city roads are usually compared by the lowest price criteria, which inevitably leads to picking a provider that uses low-quality concrete and other materials that are not sustainable during the summer or the winter, when the road melts under the hot sun when trucks are driving, or ice breaks numerous holes everywhere due to the lack of durability in the low-cost materials.
Selecting a professional service provider is mandatory in the long run, and this is common for all sorts of services.
You Can’t Describe Your Idea Completely
Regardless of your understanding of what you’re after, there are usually plenty of ways to get your solution executed.
In the WordPress context, even when following the WordPress standards and conventions, assigning the same project to 10 different freelancers or contractors will yield different end results.
Over the years we’ve consulted over a hundred clients requiring technical consulting for their services – through architecture definition, interviewing employees or contractors for their projects, or assessing code quality produced by some. Which is where the difference in experience is quite notable.
- Some contractors merely create a proof of concept model of the work
- Others create a complete enterprise solution for projects that are supposed to be used in a small intranet
- There are the ones who focus on speed or performance, and go out of their way to handle hundreds of millions of traffic to be used only by small blogs
- Some do create a compilation of various plugins which turns out to be cheap at first, and massively unstable in the long run through different updates
Even if you have a 40-page description of your project, there are various ways to get something implemented.
As an example, we had a client in 2015 that came with 70-page specification, 30-page document for sitemap, user roles, use cases and flow charts, a definition of all components connected to their website, an Invision account with 40 mockups for their pages, and their existing website as a reference.
The project took 9 months worth of design and development. During the beta testing phase when the management team assigned the project for active content entry by their team of 10 content producers, we’ve received over a hundred requests for flow updates that contradicted with the original specification.
While the platform was working properly and design was followed to the last pixel, there were business needs that weren’t addressed. And those weren’t noticed over the 3-month discovery period by the entire team (including the content folks and the management), nor through the next 6 months of implementing all of those concepts to a fully-fledged application.
Additional budget was provided for implementing the new requirements as the company decided that implementing these will save approximately 200 hours every single month by improving the way data is fetched and connected to other types of content, which would optimize the work of all administrators that was totally justified as a final cost.
User Experience Depends on Implementation
Often user interface is completely different as well – and often depends on how the client perceives the Internet in general, and what tools have they used before. When working with long-term accounts, we do learn a lot about their usage of a platform, their needs, the regularity of changing certain sections, and the amount of flexibility they require in different areas of the site. Think about CRMs or Project Management systems as well – there are hundreds of alternatives out there, and yet all of them enjoy a good number of customers simply because it’s a pretty subjective matter that is identified through a lot of research and testing.
Some clients find it easy to use the Customizer for adjustments on given page templates. They may prefer shortcodes within the content in order to place sections in-between different paragraphs essential to their business. Other page template may be built with Widgets that allow dragging back and forth and adjusting elements accordingly, or an editor button generating snippets that are more flexible (yet require some minor HTML knowledge). Some prefer metaboxes for editing content in their site, others go for theme options or settings global to the site – depending on how flexible their solution is.
Interestingly enough, this is a case study that you conduct yourself by purchasing 20 themes by different providers and exploring their options and how is content modified. For instance, Elegant Themes do rely heavily on posts for most of their themes – which are being displayed by category in different sections in the homepage, or internal pages. Genesis themes are often widgets-driven – as you can see in their tutorials as well that replicate the theme demo through dragging widgets with predefined markup.
Many ThemeForest themes integrate with a visual builder (back-end or front-end), or provide dozens of page templates with different layout for different problems. They often offer dummy data that some users prefer as editing may be easier than building from scratch.
Estimates Will Always Differ
All of those examples can easily explain why estimates by different service providers depend a lot, be it on their expertise, expectations of how the project will work and how different components will interact with each other, or including/omitting certain details from the end solution. I wrote a lengthy post on how WordPress installs differ from custom solutions as professional software engineers keep in mind a lot of parameters learned through education and practical experience – such as what OS will be running the web stack (and what server solutions will be used, with their versions), what type of bandwidth is supported (i.e. should media be compressed, or buffered asynchronously to allow for mobile connections as well), whether there’s a need for database normalization and custom tables for a solution, are external APIs needed and what not.
Each of those considerations may cost tens, if not hundreds of extra hours, and solve different types of problems for customers.
At DevriX we often write content focused on business owners that are not familiar with the industry. In fact we even launched a free email course for website owners explaining many of those problems in details.
Our experience over the years tailored our work process accordingly – by introducing WordPress retainers that focus on minimum viable products at first and iterating based on customer feedback; charging hourly with approximations instead of coming up with a fixed budget due to limited understanding of the business needs, and providing paid discovery sessions for new clients that allows us to learn more about their needs, expectations, and what are the best ways to implement a solution custom tailored to their needs.