Why Justin Holt specializes in Craft CMS
Hi Justin, thank you for taking your time. Before we start, how about you tell me something about yourself?
Yes, I live in Charlotte (North Carolina) in the U.S. I'm a long-time web developer. I built my first website in 1996, in College. I made every type of site you can imagine. I have specialized in Craft CMS, Yii, and PHP for the last five years. I do both Frontend and Backend development. And I run my web development and consulting firm. Essentially, I'm a freelancer working as a business and for different agencies in the U.S. and Europe on Craft development, consulting, and training. I've consulted extensively in the last 8-10 months, helping other Craft development teams level their proficiency in Craft.
I also run the local Charlotte Craft Meetup group. We meet monthly. We do meetups about development topics like Craft security and hosting. We try to reach a broad range of skill sets and spread the interest of Craft CMS. I love PHP, Craft, and Yii. I'm definitely an evangelist. I used many different CMS over the years, like WordPress, Drupal, ExpressionEngine, and Magento. I think the Developer and editor experience is by far the best with Craft CMS and Yii. I've settled into specializing in Craft in this part of my career.
How was your journey from College to becoming a web developer?
As soon as I graduated from College in 2001, I started marketing myself nationwide for custom website development. I branded myself as Aqua, which is like water. I looked at it as: I'm fluid and can build any website. I did pretty well. I lived off that for 7 or 8 years out of College. In 2007 I moved back here to Charlotte, where I grew up. The city is one of the larger ones in the southeast. And I wanted to try out working for some agencies. So I worked around the area for 5 or 6 different agencies. I liked it but didn't. I missed having my schedule and doing my own things. In 2019 I decided to go back out at my own freelance full-time.
What was the first proper CMS that you used for clients?
That would be WordPress. So the very early days of WordPress. I went to one of the very first WordCamps. It was in Richmond, Virginia. It was probably 2005. I found that WordPress was really neat and very polished. Even at the early stages of it. One thing I have never tackled well was image management and image upload for the rudimentary content management setups that I put together. So WordPress was a big thing to me because of the real image management control for the client based. That's when I started diving into WordPress.
At that time, I started leveling up on object-oriented programming concepts. I started learning a little bit about CodeIgniter. I found business situations and problems for which WordPress and Magento were not built. More custom developments, so I dove pretty heavenly into CodeIgniter. Did CodeIgniter work for about a year, around 2010 or 2011? ExpressionEngine started getting some market share at that time. I began to migrate my WordPress clients to ExpressionEngine because of the security aspect of it and a lot more customization. And getting away from the whole loop of how WordPress handles everything led me into Craft itself.
I didn't use Craft as much when Brandon first started doing it. But I started working at a Charlotte agency that embraced Craft. So there was no better time to learn Craft if you need it for your job. The first couple of sites I built with Craft, I was like, "Awesome. Such a mature and well-structured platform."
You used ExpressionEngine because of CodeIgniter. What about Craft and Yii?
Now that I work in Yii so much, it is more configuration over convention, which is precisely the opposite of Codeigniter, which is more convention over configuration. I kind of like the Yii type of MVC pattern a little better. Probably I would not have said that ten years ago. But Codeigniter works excellently. I still have a couple of old sites based on it. It's just an evolution of a developer's life cycle. You pro one pattern, anti another pattern until you try the anti-pattern, and then you like it more.
How do you stay updated with web development trends?
I do a lot of reading in the evenings. 10-15 years ago, we shifted the development community to using tools and packages for tooling your front end. So when Node came out and NPM and things like that, that was a challenging period not to feel overwhelmed. Another colleague, Trevor Plassman, gave me some good advice:
Learn what you think will help you in your day-to-day work. - Trevor Plassman
There is not a human on this planet that can know everything about web development. It's grown to the point where you must pick your path and specialize in it.
Nowadays, with Craft, I spend a lot of time on Discord, reading what challenges people are facing and seeing how I can help solve that or if I had met a similar challenge and how I approached solving that challenge in Craft. I don't read a lot of blogs anymore. I do have a subscription to Craftquest. I have to tip my hat to Ryan. Craftquest is a great learning resource for beginning to mature web developers. I spent a lot of time on CraftQuest watching and listening. I am constantly tuning in to Andrews and Ryan's Podcast devmode.fm. I'm always there when Andrea and Ben do their Craft Twitter Spaces. Now that I specialize in Craft, I can focus on what happens within the Craft Community. I try to balance work and life and not get overwhelmed quickly.
So why did you specialize in Craft CMS?
I had been working a lot in the Craft Community. And I had decided at that time that that's where I would specialize. I had no lack of leads for work. I had to turn down work because I had no time to do it. I made the jump and have not been happier. I worked for many different well-known Craft development firms. I have broadened my skillset to do a lot of server management and plugin work. It's been fun. I love building websites. I love solving problems. I love the satisfaction of helping a company do its business online. And I feel that Craft CMS is the best tool to use.
I also definitely fell in love with the Community. I feel like out of all the web communities I've been in over my career. The craft community is the most open, sharing, empathetic people you can ever ask for. - Justin Holt
I've learned a lot and started sharing my knowledge with the Community. We all embrace newcomers to the language and the platform well and make them feel welcome, which is better for all of us as Craft developers. That means more websites will be converted to Craft CMS, which is more work for all of us.
You are going to be a speaker at Dot All 2022. Which topics are you going to talk about?
My topic will be a different approach to content modeling in Craft. For the longest time - myself included - a lot of developers embraced the matrix field. But many content managers - from the client side - really liked to see all the content on a CMS page that outputs on the front end. Matrix is easy to work with, especially when you insert Neo or other plugins. But at the end of the day, using Matrix to manage all of the content on a page can lead to a gazillion queries. The big drawback is that all of the blocks within that Matrix live only on that entry. There is no way to copy and repeat them unless you manually copy them to another page.
Years ago, I had another developer show me the way he liked to manage content. It was not using Matrix as the sole manager of the components on the page. And I say components in the context of a blog. It's about using various channels or structures as components. Let's say you have a hero channel and a grid channel, whatever you need for your build system. And using relationship fields like entry fields to manage what is pulled in and output to that particular entry. First, I was like, "That's going to be kinda weird" because you're not going to manage most of the content on the actual page in terms of where you edit in a CMS. But in Craft 3, we had the little slide-out editor panel that you could double-click on a related entry and edit some of it.
But I still like that content model because it would allow repeatable content and repeatable blocks on different entries from one entry. If you're using the same CTA block on various sites. You will have one of them and manage them across many other entries. And you could still arrange them with drag & drop in an entry field. It took some time to get used to, but after I started modeling my sites and schema like that, I found that it significantly reduced the number of queries. It improved the performance of saving entries, too. If you ever saved a draft for a page with a matrix content builder, an entry that had 17 different blocks, it takes some time to save. There are a lot of queries happening.
I am still using Matrix, but it's more of a clean pattern that abstracts away the components and the content within those components from the actual entries. I feel it's the superior way to structure your schema and manage your content. The one drawback is that you must have a client who understands this pattern. But with Craft 4 and the essential improvements on the full-slideout editor, you can manage all of those "component entries "that you include on the page with the relationship from the actual entry itself. I'm going to try to showcase that. I'm building a fake website to show how you would use that concept in the real world.
I think Matrix is fantastic, but I feel like there's a limit you can reach that will eventually start hindering performance. - Justin Holt
Some clients got messy with Matrix.
It's easy to do. I entirely still do it on some projects. You have to measure your clients, especially if they come from another CMS like WordPress. They are used to managing all the content on a page and thinking in pages. They don't think in a build system and content as its first-class citizen in the concept of your whole site.
As Craft developers, we're really up against competition like Webflow. Tools like that are starting to mature, embracing the build-your-own page experience. If I can help develop that type of experience and how you approach Craft Schema, then I think that helps to give us more market share as well.
Before we go, have you anything to add?
I want to say to all of the Craft developers out there: Thank you for embracing Craft as a whole. The more websites we can build or convert to Craft, the better for all of us as a community. Because that leads to more work for all of us. Just keep the faith! I know some Angst from some of the Community and the recent move from Craft 3 to Craft 4. Any big major version jump of any platform will have bumps in the road. I've converted quite a few sites over to Craft 4. Some of them have been easy, and some of them were very challenging. If we keep moving the ball forward with Craft and giving feedback as much as possible to the Community, then it's all getting better.