Developers tend to disagree on numerous topics, but as we all work in technology, the one thing I think we can agree on is that shit changes, rapidly, quickly and consistently. Like any good product, Umbraco releases updates to improve the product, cater for new technologies and provide security updates. Keeping up with all this change can be a pain and it's easy to fall behind the curve.
After a period of time, you might even find yourself very out of date. For example, rewind to around 2010 all Umbraco sites were written in web forms, in 2017 all sites will be written in MVC, in another 5 years, most Umbraco sites will be written in .NET Core. If your site was built in Umbraco 4 in web forms and you've now decided to upgrade, you have a difficult choice to make. If you find yourself in this situation and you're unsure of whether you should upgrade, or start from scratch, then read on.
My CMS Upgrading Horror Stories
Before I go into some practical tips I'll recount a few of my previous 'upgrade horror' stories. I think anyone working with CMS systems for a long time will have their own tales of woe and misfortune.
One company I provided some advice for, wanted to upgrade from Umbraco 4 to 7. The site in question was pretty big and had numerous sub-sites underneath it and a lot of content. Based on the amount of content they had and only having one developer, they decided to try and upgrade Umbraco. As Umbraco 4 is pretty obsolete now, they wanted to upgrade to version 6 first as they thought it would be easier and then upgrade to version 7 afterward. In this particular situation, however, over a year later and they hadn't made it to version 6. They had numerous plug-ins that were not compatible with version 6. They had Marcos within their content pages that broke, it sounded like a bit of a nightmare for them.
I could understand this plan, if you have limited development resource and you also have current business issues, upgrading sounds sensible. In hindsight it's easy to say maybe they could have tried a different approach, however, it's easy to be an armchair architect after the fact.
Another example in which I was more hands-on, was a website upgrade from Sitecore 7.8 to 8.1. Sounds simple enough? It took me about 4 months to achieve it. Upgrading Sitecore is a different beast to Umbraco (MUCH MUCH WORSE), which is why working with Umbraco is a lot nicer, however, the point remains. Some upgrades can be easy, some can be nightmares.
Should I Upgrade My Umbraco Website Or Start From Scratch
The point of the last paragraph is to hopefully make you aware that upgrading isn't all smiles and magical unicorns. They can take a lot of time and effort. So before you decide if you want to upgrade, or, install, I suggest you ask yourself these questions:
How big is the upgrade jump? Depending on how out-of-date your website is will have a big factor if you should upgrade or start from scratch. Any minor upgrading, e.g. you're on the same version but want to do a slight upgrade, e.g. 7.1 to 7.11 will be an upgrade. If your CMS is only one version different, e.g. Umbraco 6 to 7 then I'd assume the upgrade wouldn't be too painful. If you want to go from Umbraco 4-7 however, I think this would warrant a discussion if starting from scratch would be better.
Is the current code base high-quality? Technology changes quickly and a bit of code you wrote 4 years ago, which might have been considered good when you wrote it, might be considered bad now. With new packages, libraries, design patterns being released there's a constant stream of new and good work. When you upgrade, you tend to inherit all these past mistakes. As someone who has to pick-up other peoples projects on a constant basis, there are a lot of bad codebases out there. Before you decide if you upgrade, you need to decide and if the company can afford it, to re-write
Is The Design Changing? If your design is staying the same, then you have a better argument for upgrading rather than starting again. If you want to change your design, then you'll likely have to update and change a number of document-types etc.. if you have to rewrite a lot of your document types then maybe an upgrade isn't the right path.
How Many Third-Party Umbraco Packages Does The Site Use? Packages can be a good benefit of using Umbraco. Obviously, the less code you need to write the quicker and easier the build will be. However, most packages are managed by normal developers and after a period of time they can give up on a project and it becomes obsolete. It's very common to see a package that's only supported up-to version 6 of Umbraco if you've used that plug-in extensively throughout your website. You now have an issue as you'll also have to change all the other bits as well. It's for these reasons, I tend to advise clients to steer away from relying too heavily on Umbraco packages unless it's something that is written by a company or multiple people.
These four factors will hopefully give you a starting point to help you decide if you should upgrade, or bite the bullet and start from scratch.
What Should I Do?
To recap, my general advice would be:
Always stay up-to-date. It's a lot easier to do numerous smaller incremental changes than it is to do a big bang once every few years.
If you need to make a big jump do not include time as a factor. As I've said, I've seen upgrades take months and in one extreme case over a year. If you have a bad code base, your design is changing and you use numerous Umbraco packages throughout your content pages, then an upgrade might sound quicker, but it could end up taking you the same time as starting from scratch and it doesn't get you as far.