3 Tips for New Sitecore Architects

As more web developers come into the Sitecore community, I have seen a conceptualization gap from a .NET developer who is not use to building websites within a CMS such as Sitecore. The realization that the web solution of a CMS is not the same as building an application from the ground up takes a couple of failed implementation to convince. There is a natural propensity to treat Sitecore as a relational database of content rather than a system that is used to manage units of content. Take for instance a case where the requirements of the website dictate to the developer that it must show an image with a caption and a summary that leads into full page of detail. To a developer this appears straight forward and easy enough to build the full implementation based on what has been visually communicated. However the issue that most inexperienced CMS developers make is that they lose context of why the business or marketing team purchased a CMS. They forget that a non-developer, non-technical person has to maintain the website AFTER it has been built without the need for their assistance to be simple changes. This is typically the main reason for purchasing a commercial CMS product such as Sitecore. So I wanted to share some tips on how to keep that context and what I have done over the years to keep my Sitecore architectural aspirations in check.

1. The content authors are your first customer.

These are the users who will use what you build more regularly than those probably making the decisions on how the site should look and how the content will be organized from an end-user perspective. However, these individuals often do not realize what it takes to maintain a site on a day-to-day basis, which often results in a website not having the most updated content. Therefore, maintaining the website needs to be easy. It needs to allow the content author to accomplish their goals without extreme amounts of hours trying to figure out a fancy editing interface for a database. They don't want to call you. They don’t want to bug you. They won’t even remember who you are until it frustrates them to the point they pick up the phone or send that nasty email to their bosses. As developers we may feel they want the world, but in reality they want to control every aspect of their web message from content to design layout. The difficultly is achieving such flexibility whiling keeping the focus on usability.

2. Use the product.

A lot of times we are so busy trying to build the solution that we forget to educate ourselves concerning the solution in the eyes of a content author. It sounds like a no brainer, but it is essential in order for us to truly meet the usability needs of content authors. We need to know how the system works in order to make it better for the those managing the content. It is nearly impossible to make Sitecore more useable for other authors if we do not use Sitecore as an author. By following this practice it will empower you to tactically solve authoring usability issues instead throwing a new Sitecore data template at it :).

3. Understand the content.

This is the major area where most developers fail. It simply has to do with changing your mindset of how you look at a content management system. Most developers will treat content as data instead of what it is - and that’s content. My philosophy that I’ve instilled in developers that I’ve trained, is that content is not normalized it is organized. When a DBA is architecting a database to store data, he must determine the relationship between all data points to create relational structure of data. This often means that if all data entities share the same attributes they most likely will go in the same database table. This approach can be said about organizing content but only to a degree. Content needs to be truly understood before it can be organized. Two types of content may share the same attributes but it does not necessarily mean they should be organized the same way. This is something that new CMS developers have a hard time grasping. It is conceptually reprogramming your mind to not view content as transactional data in a database.

I hope this helps those who are new to Sitecore or even CMS development. It certainly helped me in the transition from custom .NET development to CMS development.