Before Christmas a good friend of mind, Rachel, asked me if I could help her set up a website for a business she was starting selling antique silverware (Argent Antiques) . Rachel needed the site to offer a standard set of e-commerce features where she could add and amend products and content on the site.
The software developer in me immediately starting thinking about how I could build her a solution. I was thinking that I could develop the site using ASP.NET MVC 5, Twitter Boostrap, Braintree payments integration etc. then then I thought, STOP, what are you doing? This isn’t a fun software development project, and Rachel certainly didn’t want to wait 3-6 months for me to lovingly hand craft the perfect e-commerce platform. She wanted a site up and running that fit her requirements in as short space of time as possible. After all, a site that isn’t live, is a site that isn’t generating revenue.
I took a step back and started looking at the different options available to me, these included :
- Develop a custom site in ASP.NET MVC.
- Use a CMS system like WordPress, Joomla.
- Use a SaaS (Software as a Service) eCommerce solution like Shopify or Wix
The option that I selected is based heavily on the circumstances and restraints that I was working within. For example, I was asked to produce this site as a favour to a friend, which meant I was going to be working on it in my spare time. I have a full time career, plus I am a Dad to 2 kids, so spending a lot of time on a solution would be an overall constraint. Plus from Rachel’s perspective, she wanted to get a version 1 website out there as soon as possible. The screen shots of the site in this article are our current version 1.0, quick to market version of the site that is fully functioning.
Here are some of the Pros and Cons I used as part of the selection process.
Option 1 : Develop Custom Site in ASP.NET MVC
This option requires sitting down in-front of Visual Studio and developing the code for a solution. This includes, the program code, CSS, and HTML.
- You have complete flexibility over how the final site behaves, looks and feels.
- You own the code and the intellectual property.
- You can develop exactly what is needed.
- Direct control over future development.
- Full understanding of how the solution works.
- Time consuming to build, especially as I was doing this in my spare time.
- Expensive. In this case I was building a site for a start-up with limited starting capital.
- More prone to bugs if the code is new.
- Future enhancement would require code change, which costs in time and money.
- You are responsible for hosting and maintenance.
Option 2 : Use a CMS system like WordPress, Joomla.
This option involves using a self hosted Content Management System like WordPress or Joomla.
- Already established content management systems.
- Easy to use as a content management system.
- Not built for e-commerce out of the box.
- Requires coding to add in features that are not provided by the CMS.
- Requires CSS and HTML Design.
- Requires hosting of an Apache server.
- The level of changes could be quite expensive in development time.
Option 3 : Use a SaaS eCommerce Platform like Shopify / Wix.
- You pay a small amount to use the platform.
- System is easy to use.
- Already well tested by other users.
- Easy to customise when starting from a base template.
- Quick time to market.
- Adding products and content is very easy.
- Potentially not as flexible for future updates.
- You are at the mercy of their servers reliability. If their servers go down, so does your site.
- If they go bust, you loose your site.
My Final Decision
After weighing up all the options compared to the circumstances and Rachel’s requirements, I decided to go with option 3 and use a pre-existing software as a service provider. I decided to use Shopify as they specialise in building custom shops. Shopify won because out of the box you can set-up products, product categories, inventory management as Argent Antiques is dealing with physical goods and not digital goods. The Pros of using this service certainly outweighs the Cons. Initially, neither of us had heard of Shopify, so the idea of them going bust was an initial concern, but on doing our research, we could see that they were indeed a very well funded tech start-up, so that alleviated our fears.
In the Enterprise
The decision to Buy vs Building a software system is just as relevant in the enterprise too. You have to make exactly the same types of decisions as I did when building ArgentAntiques.co.uk. The answer will not always be the same. As a software developer it is very easy to just immediately be driven to building a solution, but it is very important to weigh up the pros and cons of different options and compare them against any constraints that you may have. For example, vendor lock in may be an issue for you. If you are looking at a critical system for your business, so may not wish to put this totally in the hands of another vendor as that opens up the door for them to charge you silly money in the future. In this case, developing your own customer intellectual property might be the best idea.
If a system is not as critical to the purpose of your business then you may choose to buy a complete off the shelf product, or a product that allows you too configure a base set-up and then configure it to your businesses needs. A retail point of sale system would be a perfect example of this where you buy the base system and then extend it to fit your needs. Dynamics AX from Microsoft is a perfect example of this.
The moral to this story is to always weigh up the various options when you are looking to build a new system. Your business will always have specific constraints when it comes to making your final choice. These may be financial constraints, time constraints, vendor lock in fears, and ownership of intellectual property. Once you have identified the constraints that you need to work within, you then need to look at what options are available to you from bespoke software development, a complete off the shelf package, or a customisable system. These options will serve to mitigate and balance the risks of your constraints. This is part of the role of a good system / enterprise architect. They should be able to make these objective decisions. It would not generally be a good idea to get your software developers to make these choices as they will naturally gravitate to building a new system, and why wouldn’t they, that’s what they do.