These days it seems that everyone is out there developing an app to handle some problem they believe everyone has. People seem to think that if they can just get their app built, then their biggest problem will simply be beating away users who will be demanding access to it and who will be throwing money at them...
As the founder of a web application development agency, you’d think I would be bouncing up and down like a kid in a candy store with this state of affairs, and to be truthful, there is a lot of demand for our services, but we turn away more work than we take on.
This isn't because we are unable to do the work - of course we are - we just want to make sure we can deliver something within realistic expectations to give our clients the best possible chance of making a successful go at building a real business.
There are a lot of articles out there about some bunch of 20-somethings who hacked away for a few months to build a site or app that launched and then sold it for millions of dollars. Anyone reading these stories without context might end up thinking "well then, building my website that connects dogs with lonely dog walkers should take WAY less than three months, and if 20 year olds can build it, well, they don't cost much to hire because they don't have much experience, so it should be quite cheap!"
Unfortunately this is just not true, building a reliable and stable software application takes a LOT of hard work, tough questions and ongoing maintenance, and developers who build effective and well built applications for others are highly paid professionals who have spent a long time learning their craft.
The modern application development world, I believe, is not much different to the traditional manufacturing industry. Say you wanted to build a widget; at the start you have two broad options (1) build the same widget as everyone else with some customizations and hope your marketing works really well or (2) build a completely new and amazing custom widget that no one else is building (...and hope your marketing works really well).
The first option of customizing has lower upfront costs. You might even be able to buy a ready made production line off someone else and just customize it for your needs, or take a tour of a factory to get ideas on how to build yours at a lower cost. But in the end you are producing the same sort of widget as everyone else and your point of differentiation needs to be something other than a cheaper widget, or it’s a race to the bottom.
The second option of building a custom widget has a much higher upfront cost as no one has made your specific type of widget before, so there is going to be an R&D phase, prototyping, building the factory, testing etc., but once you get it built - Wow! You'll be able to make a fortune because you'll corner the market.
Application development is very similar. You first have to decide if you are going to make something that is similar to everyone else (say an e-commerce store) that you can buy off the shelf and customize, perhaps getting it running for a few hundred per month) or if you are going to build something new and completely custom and try to corner the market.
There’s a key point of difference here. Custom or Customize. And this means different things to different people, so let me clarify;
Customizing means you get to buy some existing software platform (perhaps an online helpdesk system, or ecommerce store or Wordpress site) and then you get to customize it within very defined bounds, perhaps change the font, add some nice pictures, change the colour scheme or some of the layout or the like. You might also be able to make some programmatic changes if the platform you have chosen supports it, but that’s the key point on customization, any change you make, MUST be supported by the software you are buying. This is why it costs less than building something Custom.
Making a Custom application in the definition of this article means building something from scratch. You may or may not be doing something similar to another existing site, but this just means your initial prototyping and UX development steps might be cheaper as you can glean some great ideas from the existing platforms. However, the actual development is going to build a platform that does exactly what you are after. All the work we do at reinteractive is with Custom applications.
If you are going for a customized product, then the cost of building the application is going to be many orders of magnitude lower than building a custom application; you can build an AMAZINGLY well designed ecommerce customized application for a tiny fraction of what it costs to build a custom application. But if you want to build something as complex (and unique in it's time) as amazon.com, then your bank balance better have several commas after that leading digit.
Also, if you are trailblazing and building a custom application that is not like anything else out there, then you need to be aware that a large chunk of the money you need to have on hand is going to be spent educating the market that doesn't exist and doesn't know (or care) that your product exists yet. As a rule of thumb, I would say that the amount of money you spend developing the application would be a good estimate of the initial amount of cash you’re going to need to get your product properly launched.
Another large chunk is going to need to go into ongoing support and new feature developments on your application, continuing to improve it to drive more and more users onto your site/app. Again, if you are building the application for real growth and to run as a business, you will spend at least as much as you have spent developing it again in support and upgrades in the coming years.
So where does that leave us?
Well, when I am asked "How much will my web application cost" I am known for replying "at least 20% more than all the money you can possibly predict to spend on it", and time and time again I am proven to have been conservative.
Why is this? Because as you build an application, you get ideas for more features, better integration points, more updates etc., and building these adds complexity and costs development time, and, if you have money available, you will spend it and be over-optimistic about how much it will take to get these things done.
So if you look at it, the development is going to cost at least 20% more than you are planning due to extra features you don't know you want yet. Now add another two times your development cost and really, you should have about 300% of your base estimate available to build and launch this application.
If you are looking at all this and thinking "Wow, this is costing way more than I thought" then I think this is a good thing.
As you read this, I know you might be thinking that I’m doing myself out of work, after all, I do run a company that builds these things professionally. But I take a different view. You see, good ideas will always need to be developed and we will be there to do that, and I believe that our clients should go into a project knowing the full costs associated with it - not just the easily-digestible sugar-coated estimates that they might get from elsewhere.
We’ve all heard “If it sounds too good to be true, it probably is!” And for good reason. Now I’ll be the first to tell you, we’ve lost jobs because we estimated what we actually thought it would cost to build a stable product for our prospective clients and a few of them decided to go elsewhere for a cheaper price but ended up spending more in the end anyway.
We believe in delivering value. If we can't build something that will increase revenues or reduce costs for our client giving a good return on investment on the development costs, then we won't take on the project.
And we would much prefer going into a partnership with a client developing something that has a real chance to succeed, rather than try to get a customer started without them truly understanding what it’s going to take. We are trusted for our expert opinion, we make sure we give it even if we “lose” in the end.
I hope this gives you some ideas on budgeting out your next project and if you need any help or have any questions, let me know, I'm happy to chat.
The Axioms of Software Development - Part 2
Type less when using Git on the command line with gitsh
The Axioms of Software Development - 1 of 4
reinteractive is Australia’s largest dedicated Ruby on Rails development company. We don’t cut corners and we know what we are doing.
We are an organisation made up of amazing individuals and we take pride in our team. We are 100% remote work enabling us to choose the best talent no matter which part of the country they live in. reinteractive is dedicated to making it a great place for any developer to work.
Webinars are our online portal for tips, tricks and lessons learned in everything we do. Make the most of this free resource to help you become a better developer.
The Ruby on Rails Installfest includes a full setup of your development environment and step-by-step instructions on how to build your first app hosted on Heroku. Over 1,800 attendees to date and counting.
The Ruby on Rails Development Hub is a monthly event where you will get the chance to spend time with our team and others in the community to improve and hone your Ruby on Rails skills.