On Sitecore Development

> Broadly speaking
Cover Image for On Sitecore Development

TLDR;

Sitecore development is mostly about displaying data from a model on a page, but also involves a number of other activities, some in common with any other kind of web development, and some specific to Sitecore.

Summary

Richard Seal, Principle Partner Technical Advocate @ Sitecore, summed up Sitecore development well:

... most of what we do with Sitecore, especially headless CMS work, is just displaying some data from a model on a page. There isn't usually much complexity to it.

The bit about headless is important to understand because headless marks a distinct departure from the traditional process of Sitecore development, whereby Sitecore becomes an abstracted data source that is consumed by a front-end technology such Next.js. This is in contrast to traditional Sitecore development, where the front-end and back-end are more tightly coupled. This shift is hugely significant.

Broad Areas of Sitecore Development

The Sitecore Developer Certification Exam is broken down into the following competencies:

  • Sitecore structure & platforms
  • Security & user management
  • Item management
  • Layout & placeholders
  • Components, controls, & renderings
  • Sitecore Content Serialization
  • Containers

Based on my experience, I would also add:

  • Information architecture
  • Template design
  • Configuration
  • Building components
  • Workflow and publishing
  • Tracking and personalization
  • Emails
  • Forms
  • Analytics
  • Content delivery and caching
  • Integrations
  • Search and indexing
  • Commerce
  • Content serialization
  • DevOps and deployment
  • Upgrade and migration
  • Performance tuning

The Difficulty / Complexity of Sitecore Development

As Mr. Seal said, the difficulty and complexity of Sitecore development is generally low. Once you have your software design patterns in place, there's a lot of repetition and boilerplate code.

I see the evolution of Sitecore development as being similar to Linux system administration. In the early days, there was little documentation and only a small community of people knew how to use it. As time went on, it became more mainstream, and now it's relatively easy for any developer to learn and get help with challenges along the way.

As a fun thought experiment, I asked ChatGPT to generate a list of software development tasks from simple to complex. Here's what it came up with:

  • Simple Websites (Static or CMS-based)
  • Mobile Apps (Non-Real-Time, Basic Functionality)
  • E-commerce Websites
  • Sitecore Development (Including Headless CMS Work)
  • Corporate Internal Tools (HR Systems, CRM)
  • Mobile Apps (Real-Time Features, Complex Interactions)
  • Business Process Automation
  • Data Analytics Platforms
  • Enterprise Resource Planning (ERP) Systems
  • Video Games
  • Banking and Financial Systems
  • Healthcare Systems (Electronic Health Records, Medical Devices)
  • Telecommunications Systems
  • Automotive Software (Infotainment, Navigation)
  • Flight Systems (Avionics, Air Traffic Control)
  • Critical Infrastructure (Power Grids, Water Supply, Transportation Networks)
  • Space Systems (Satellite Control, Spacecraft Operations)
  • Military and Defense Systems

Generally, I agree, though where Sitecore development truly stands in that list depends on the project. Most Sitecore projects are quite simple, but some are extraordinarily complex.

The "Commoditization" of Sitecore Development

Sitecore has made it very clear that they're working to improve developer experience and decrease costs and "time to market". In doing so, Sitecore is making Sitecore development easier and more accessible to a wider pool of devs. This is both good and bad, depending on who you ask.

In the past, Sitecore development was a niche skill that required a lot of training and experience to master. Now, with headless development, Sitecore development is becoming more like any other kind of web development. At the same time, we have two major trends happening in the Sitecore economy:

  1. Increased global interest and competency in Sitecore development India and South America (just to name a few), as well as a trend toward more offshore development.
  2. Rapid advancement of large language models such as ChatGPT that are highly proficient at generating code; particularly around popular languages and frameworks such as JavaScript, React, Next.js, etc.

Those two trends come at a time where Sitecore now ships with pre-built components, boilerplate code, one click deploys, and composable architecture that is simple to integrate.

For these reasons, the value of low to mid level Sitecore developers are likely decreasing... However, the value of Sitecore architects and consultants is likely increasing, as they are the ones who can design and lead the implementation of the complex solutions that Sitecore is capable of. That advanced skillset is less likely to be commoditized in the near future.

The Role of Sitecore Developers is Always Changing

In a certain sense, Sitecore development can be thought of in two distinct periods:

  1. Traditional (C#, MVC, Razor, etc.)
  2. Headless (JavaScript, React, etc.)

With traditional Sitecore development, there are many "manual" steps and esoteric rabbit holes that inexperienced devs and LLMs have more trouble navigating than headless. With headless, the process is more straightforward and the learning curve is less steep.

That said, headless development in Sitecore has its challenges; especially for developers who are used to the traditional way of doing things. The shift to headless is a big one, and it requires a different skillset and a lot of learning to get up to speed.

Ultimately, Sitecore development is a broad field that encompasses a wide range of activities, from simple to complex. The role of a Sitecore developer is always changing. Your future will be dictated by the projects you work on. Some devs will be on the cutting edge, and others will continue to work with traditional Sitecore development for years to come. Both are valuable.

Remember: there is no such thing as an apple core.

-MG


More Stories

Cover Image for Tips for Forms Implementations

Tips for Forms Implementations

> And other pro tips

Cover Image for Don't Ignore the HttpRequestValidationException

Don't Ignore the HttpRequestValidationException

> Doing so could be... potentially dangerous

Cover Image for Script: Boost SIF Certificate Expiry Days

Script: Boost SIF Certificate Expiry Days

> One simple script that definitely won't delete your system32 folder

Cover Image for NextJS: Access has been blocked by CORS policy

NextJS: Access has been blocked by CORS policy

> CORS is almost as much of a nuisance as GDPR popups

Cover Image for Ideas For Docker up.ps1 Scripts

Ideas For Docker up.ps1 Scripts

> Because Docker can be brittle

Cover Image for Azure PaaS Cache Optimization

Azure PaaS Cache Optimization

> App Services benefit greatly from proper configuration

Cover Image for Hello World

Hello World

> Welcome to the show

Cover Image for NextJS: Short URL for Viewing Layout Service Response

NextJS: Short URL for Viewing Layout Service Response

> Because the default URL is 2long4me

Cover Image for Symposium 2022 Reflections

Symposium 2022 Reflections

> Sitecore is making big changes

Cover Image for SPE Script Performance & Troubleshooting

SPE Script Performance & Troubleshooting

> Script never ends or runs too slow? Get in here.

Cover Image for Troubleshooting 502 Responses in Azure App Services

Troubleshooting 502 Responses in Azure App Services

> App Services don't support all libraries

Cover Image for Security Series: App Service IP Restrictions

Security Series: App Service IP Restrictions

> How to manage IP rules "at scale" using the Azure CLI

Cover Image for On Mentorship and Community Contributions

On Mentorship and Community Contributions

> Reflections and what I learned as an MVP mentor

Cover Image for On Sitecore Stack Exchange (SSE)

On Sitecore Stack Exchange (SSE)

> What I've learned, what I see, what I want to see

Cover Image for How to Run Old Versions of Solr in a Docker Container

How to Run Old Versions of Solr in a Docker Container

> Please don't make me install another version of Solr on my local...

Cover Image for JSS: Reducing Bloat in Multilist Field Serialization

JSS: Reducing Bloat in Multilist Field Serialization

> Because: performance, security, and error-avoidance

Cover Image for Super Fast Project Builds with Visual Studio Publish

Super Fast Project Builds with Visual Studio Publish

> For when solution builds take too long

Cover Image for NextJS: Unable to Verify the First Certificate

NextJS: Unable to Verify the First Certificate

> UNABLE_TO_VERIFY_LEAF_SIGNATURE

Cover Image for Year in Review: 2022

Year in Review: 2022

> Full steam ahead

Cover Image for NextJS/JSS Edit Frames Before JSS v21.1.0

NextJS/JSS Edit Frames Before JSS v21.1.0

> It is possible. We have the technology.

Cover Image for Add TypeScript Type Checks to RouteData fields

Add TypeScript Type Checks to RouteData fields

> Inspired by error: Conversion of type may be a mistake because neither type sufficiently overlaps with the other.

Cover Image for Tips for New Sitecore Developers

Tips for New Sitecore Developers

> If I had more time, I would have written a shorter letter

Cover Image for Sitecore Symposium 2022

Sitecore Symposium 2022

> What I'm Watching 👀

Cover Image for Tips for Applying Cumulative Sitecore XM/XP Patches and Hotfixes

Tips for Applying Cumulative Sitecore XM/XP Patches and Hotfixes

> It's probably time to overhaul your processes

Cover Image for Content Editor Search Bar Not Working

Content Editor Search Bar Not Working

> Sometimes it works, sometimes not

Cover Image for Critical Security Bulletin SC2024-001-619349 Announced

Critical Security Bulletin SC2024-001-619349 Announced

> And other scintillating commentary

Cover Image for JSS + TypeScript Sitecore Project Tips

JSS + TypeScript Sitecore Project Tips

> New tech, new challenges

Cover Image for Early Returns in React Components

Early Returns in React Components

> When and how should you return early in a React component?