How To Choose the Right Software Solution

Ardi
Namhost is very well-known for building Drupal-driven websites, but Drupal is only one fish in a very big pond. There are many options available to programmers when trying to decide how they are going to go about building websites. This blog post is going to try to explain the difference between these options and how to decide which is the best solution for you.

There are four main types of solutions you will encounter when choosing a website solution:

  1. Build the entire system from scratch (in a language like PHP)
  2. Use a framework (like Yii, Laravel, Zend etc)
  3. Use a Content Management System (like Joomla, Drupal, etc)
  4. Use a script made specifically for the problem at hand (like Wordpress, Magento, Moodle, etc)

I wish it was as simple as saying these types are ranked from best to worst  but this is not always the case. In order to say which one is "best", you need to define what makes a solution "good". For most people it ultimately boils down to a combination of the following factors:

  1. Cost: Is the solution affordable?
  2. Development Time: How long will it take to complete the project with the chosen solution?
  3. Ease of Use: Can the users of the system do what they need to do without hassle?
  4. Security: Is the solution safe to use?
  5. Performance: Will the solution be fast?
  6. Aesthetics: How good will the final product look?
  7. Uniqueness: Will the final product be unique?
  8. Web Standards: Will the solution, W3C compliant, SEO Optimized, Responsive etc?

Based on these factors you will see that no solution will ever score full marks in every category. For example, building something from scratch might mean that you get a lot of speed because you eliminate any bulky components that may come with a solution that's not built from scratch, but it comes at the cost of a significantly longer development time. More development time also means a higher cost because there are more man-hours that need funding.

This means that those looking to build a website could become frustrated with the amount of solutions out there and ultimately not know where to start. So let's try to analyze each potential solution and figure out when each one is most appropriate. In order to do that you might need to buy into a rule that may sound obvious, but I still find many people (including myself) breaking this rule every day:

1. Do not re-invent the wheel.

It seems obvious, right? The problem is in software development it isn't always obvious when you are busy re-inventing the wheel. For example, you might be presented with the task of building a blog. The most obvious and most popular solution available is Wordpress, but if you didn't know about Wordpress, you would probably start by building a solution from the ground up or perhaps using a framework like YiiLaravelZend or some other technology that you have been exposed to. There are cases where doing this is valid, but generally, you will be wasting a lot of time building something that already exists.

Re-inventing the wheel isn't just bad because of development time lost. Building something from scratch could also result in building something less effective. Wordpress, for example, was initially built by less than 10 people but there is an entire community of developers out there that also contribute to it and constantly help to improve it. No matter how good your team of developers may be, it is unlikely that they will be able to build a blogging system more robust than Wordpress, purely because no team can beat the man-power behind a system like Wordpress.

"Re-inventing the wheel" also ties in with another rule that, if broken, could have far more dire consequences than just the time wasted re-inventing the wheel.

2. Never use software for anything other than what it was meant to be used for

There are exceptions to this rule, but generally if you are building, for example, a "cutting-edge" online shop using Wordpress, there's a good chance you're going to hit a wall after a while. Wordpress was designed to be a blogging platform and yes, there are thousands of plugins out there that allow you to do many weird and wonderful things with Wordpress, but ultimately what you are doing is trying to change its original purpose (blogging) and use it for something else (e-commerce). You might be able to setup your shop, load a few products and maybe even manage to do a few sales, but the moment you try to scale up, or perhaps require a custom feature like calculating shipping based on a formula, you could very well end up wasting more time trying to get Wordpress to behave a specific way, than you would have had you used the right software to begin with. Also keep in mind that one of the main reasons why Wordpress sites get hacked is because of badly coded plugins. Is it really worth using the wrong tool for the job when there are so many risks involved and potentially so many better suited solutions out there?

The tricky part about this rule is that there is only one way to know which one is better for a specific task: experience. Someone might tell you that X is the best thing for the job, but without actually installing X and spending time working with X, you may never know if X is in fact the best solution. That is why it's important to team up with clued up professionals that have experience with a vast range of technologies who won't force a solution down your throat because it's the only one they know. 

That, however, brings us to another problem. If not even qualified web developers know of all the solutions, then how are non-technical people supposed to know which are the best solutions for them? A good development company will usually have very good explanation for suggesting a specific solution. Always ask: 

  1. Is this the absolute best solution for my company?
  2. Why did you choose it over alternatives?

However, it helps a lot knowing the difference between the types of solutions when presented with options. So let's look at the pros and cons of the different types of solutions to understand what might work better in different scenarios.

Pros and Cons of The Four Types of Solutions

SolutionProsCons
Build the entire system from scratch
  • No limitations or restrictions
  • Potential speed increase due to only building exactly what's needed
  • Not necessary to learn any new technology or design pattern other than the underlying programming language
  • Very expensive
  • Very long development time
  • Re-inventing the wheel is inevitable
  • Losing out on experience others gained through building solutions for the same problem
  • Can be very dangerous if created by inexperienced or negligent developers
Use a Framework
  • Considered a far more professional solution
  • Solutions built with frameworks are generally faster when used by the end-user
  • You have access to small, robust and re-usable building blocks that have been tried and tested by other programmers
  • Development time is significantly faster than building something from scratch
  • Other developers can easily build on the solution because the framework will have predefined ways of doing things and more often than not, documentation explaining these
  • Easy to update / deploy
  • Expensive
  • Development Time can Be Time-consuming
  • You might still spend a fair amount of time "re-inventing the wheel" 
  • Some frameworks have very steep learning curves (Zend2 comes to mind)
  • You will need experienced developers that understand programming on a more intimate level
Use a Content Management System
  • Very affordable
  • Much faster development time
  • A large set of pre-defined features that can easily be used to create the functionality you need, often without needing to write many or sometimes any lines of code
  • Usually you will find that all the basics are covered and are very secure, e.g: login forms, contact pages, SEO etc.
  • Content Management Systems are often more than sufficient to build almost any modern website
  • Clients can manage their own content from the word go (no need to build CRUD forms)
  • Can be very bulky due to the large number of features available of which only a small subset is usually used
  • The bulkiness ultimately leads to slower load times
  • Security can be low if not setup properly
  • Due to the ease of use, there are many fly-by-night companies that call themselves CMS Experts, but are far from it.
  • Difficult to update / deploy
Use a script tailored for the problem at hand
  • Usually very affordable
  • Tailored scripts often solve 99.9% of your problem
  • You can be up and running in no time
  • Usually very difficult to extend the functionality of the solution, especially if you need to cater for software updates in the future
  • Solving "most" of the problem usually means that the tiny percentage that it can't solve is extremely difficult to solve.
  • Without some effort your website could look like a clone of another website

Let's identify when these solutions should be considered.

 

Use a script that is tailored for a specific problem

This is usually ideal if you are trying to do something that many have done before and for which there are already popular solutions available. Wordpress is an obvious example (although many might argue that Wordpress has evolved into a Content Management System). Very little has happened with regards to blogging that would require someone to build something from scratch. If you just want a basic blog, Wordpress will solve that problem. It also has countless plugins that will allow you to get many extra features on top of the standard ones, but when it comes to filling the need of blogging, Wordpress has you covered.

However, Wordpress is just one example. There are countless other solutions for problems out there that you can try for free. Need to send e-mail to subscribers? Try PHPList. Need chat software? Try phpFreeChat or X7 Chat. Need eLearning software? Try Moodle. Want to run a message board? Try phpBB, or SMF, or punBB or many of the others out there. Need an online shop? Try OpenCart, or Magento, or Zencart or one of the many other solutions.

It should be clear that being aware of other solutions is the key here. If you have a small budget, aren't too fussy about the software doing exactly what you want it to do, then using a script can be your saving grace. Just be aware that should your site grow, there might come a time in the not too distant future where you might have to scrap the entire solution and build a completely new one.

Use a Content Management System

Drupal, Joomla, Typo3, phpNuke, Xoops... the list goes on. Content Management Systems are not something that's hard to find. What is hard to find is the right Content Management System for the problem at hand. Here at Namhost we've become extremely good at developing solutions using Drupal for the simple reason that Drupal isn't quite like your typical Content Management System. Most Content Management Systems, as the name suggests, focuses on managing content. In other words, you often have the ability to add "Pages", "Forms" and perhaps "Sidebars" and so forth. Drupal has all these features of a conventional Content Management System, but it's true strength lies in its ability to define data from the ground up.

Drupal and other Content Management Systems are generally a great solution if you intend to build a website that doesn't require a great deal of custom or advanced features but has a fair amount of content that will be added or changed on a frequent basis. Most websites can be built using some or other form of a Content Management System, but it can become complicated when certain custom requirements arise. However, the low cost of developing a website using a Content Management System as well as the wide range of features that are inherently available is often what makes it so attractive to use. Not to mention the large amount of community support, free upgrades (open source), extendability and many other features.

Use a Framework

Frameworks offer a very high degree of freedom to design the system as you want to while still decreasing how often you "re-invent the wheel". For example, most Frameworks will have features that deal with Database Management, Sessions, Forms etc, but you will still have to hook those components up and turn them into a website. You will also need very skilled developers to put it all together.

Frameworks are ultimately more secure than Content Management Systems, provided the developers know what they are doing. With Content Management Systems anyone can download the codebase from the internet and see exactly how the system works. With Frameworks, although the core of the system is available online, a much bigger part of the system is custom code and security is highly dependent on the developers of the system.

Frameworks should be used when:
  • The system requires a lot of custom code
  • Speed is extremely important
  • There is enough funding to build as well as maintain the product
  • You want a truly unique solution tailored to your business

Build the Entire System from Scratch

This is usually a bad idea. Apart from wasting a lot of time re-inventing the wheel by building things that very rarely change across systems (e.g. Database Management, Sessions, Forms etc) you are basically saying that you can build something better than what thousands of programmers have already tried and tested and proved to work. If you are building something from scratch, you probably didn't do enough research to find the best tool for the job.

That said, there are some cases when building something from scratch does make sense:

  • You need a very simple one-pager with very little programming
  • You are building something that has never been built before (but even in this case, starting with a framework could still make more sense)

The extra development time and therefore cost involved in building something from scratch almost never makes it a viable solution.

Conclusion:

The most important thing to take from this blog post is that there is never a one-size-fits-all solution, but understanding your options can save you a lot of time and money.

Drupal and other Content Management Systems can usually work great for most websites out there, with Drupal being particularly good for building websites because of the level of detail you can go into when building a site with it. However, if you have the budget, and you want to build something truly versatile, professional, fast and that requires far more custom work, then you should look at the likes of YiiLaravel or Zend. There are many other frameworks, but those are among the most popular, with Laravel being a really good option if you don't know where to start. Building something from scratch is rarely a solution and using custom scripts will limit you in the long run. However, both can be very valid temporary solutions, or work well when combined with a Content Management System or a Framework.

Work with professionals that try to get you the best solution possible for your money, rather than someone trying to sell you a once-size-fits-all solution.

About the Author
Ardi
Ardi
Armed with a degree in Computer Science and over 15 years of experience building applications for the web, Ardi functions as the go-to guy for all technical problems that might arise at Namhost. His problem-solving skills are second to none and has been critical to the success of Namhost. Although very skilled in a variety of frameworks such as Laravel and Zend, Ardi has become an expert in Drupal.

Comments

Posted by Alexus on 26 February 2015 - 5:13pm
 
Hi nice Article. Just one thing don't you think that on your pros and cons table that one of the pros for both "Building from scratch" and "using a framework" is that user data collection is more controlled and more flexable. Something that I've found as very important when doing a project. Something that is a real hassle with a CMS.

Then also one con that I experienced with frameworks is that not all of them are always supported with all hosting providers, which is no problem if you know where it is going to be hosted, but in some cases you don't and then the entire framework idea is useless. I have to say this is very rare, but has happened with me twice in one year before. When clients either had their own hosting or some idiot hosting provider that just sucks.

I have to say I prefer building from scratch, although I've actually build my own framework, which is extremly lightweight, super fast and I've recently started creating modules for it as well. So it is now a tailored framework CMS. Thus it's more flexable, faster to deploy, faster loading speed and also tossed it to the dogs (hackers) to check security and it actually performed better than 97% of the other frameworks and CMS based sites I through at them as well. Only one that performed better was a flat HTML site.

Login Using Facebook To Comment
Ardi's picture
Posted by Ardi on 26 February 2015 - 5:16pm
 
Valid points indeed. Often I would also prefer to build something from scratch because it gives you that truly "I'm in control" feeling. The problem is that the bigger the project, the more expensive this will become. The big thing I learn around this is that as long as you do research and know your options, you'll make a better decision going forward.
Login Using Facebook To Comment