In the very early 2000’s I was really busy building static web sites for an ever increasing number of clients. As the internet evolved the need for customer editable sites grew I began searching and learning about 3rd party scripts to do the job. There were many Perl/CGI scripts around that catered for specific tasks such as photo galleries, shopping carts, directories, mail forms and the like, but nothing really to manage a whole site the way I needed, at least nothing that offered genuine flexibility.
My lightbulb moment
PHP was just becoming a “thing” at the time, I’d downloaded and tested several PHP scripts but nothing seemed to offer the flexibility I wanted, including the various blogging systems available at the time. Then in early 2004 I discovered pMachine which later became ExpressionEngine (EE). My world changed overnight.
Upon installing pMachine I found I could create custom fields, categories, separate different types of content into “Weblogs” (what we now call “Channels”), create templates for different purposes, make fancy stuff happen like randomising things, and build a site that was truly dynamic.
I rebuilt my personal web site using version EE1.4. The learning experience from that build allowed me to get to know what it could really do, or potentially do. I’d found what I was looking for and began offering EE to my customers. To date I’ve built, modified, updated, or tweaked over 200 ExpressionEngine sites - I gave up counting a while back!
Templating
Virtually every system I’d previously looked at had (to me) really complicated or PHP based templating - nah not for me - I picked up ExpressionEngines template/tagging system right from the start, to me it was logical, easy to pick up, and I quickly started doing amazing things.
Fields for any purpose
One thing I love about EE are field types. Instead of cramming content into a single WYSIWYG field content can be broken down into logical chunks, whether that’s a Rich Text Editor field, a Grid field for repeating content, a Fluid field that can be used as a page builder or combine blocks of different content for presentational purposes, selection lists, single line fields for small bits of text, or Relationships that can be used to cross link items to other items.
Plugins, Extensions and Module addons
Another thing I liked about EE was the availability of 3rd party addons that provided extra functionality. Now, EE can do a lot of things out of the box where most other systems need a myriad of addons to achieve, but certain addons provide me with tools in my arsenal for ecommerce, polls/surveys, form builders, multilingual and more.
Security
ExpressionEngine has always had a good track record with security, unlike many other systems (I won’t name and shame). Nowadays it’s regularly updated fixing bugs and potential vulnerabilities which is a great selling point to customers. Who needs a CMS that could be possibly compromised every week?
Infinite ways to build an EE site
For me one of EE’s major strengths is that it doesn’t assume how I build a site. I’m in control of channels, what content fields to use, templates, CSS, Javascript - the whole lot. I can start from a blank slate and tailor everything to match the customers requirements. Compare that to other systems where you have to remove stuff you don’t need, add endless plugins to get basic functionality, or do lots of custom work to do things that can be done natively in ExpressionEngine.
I’ve worked with a lot of web agencies/designers over the years, typically they present me with mockups and functionality ideas for a site, and for the most part I can say “yeah I can build that for you” without having to think too much.
Customer friendly
Managing content in ExpressionEngine is literally filling in forms, most of the time anyway - if you can type you can create and updated content. That’s a big selling point to my customers who love the simplicity and the ability to manage their own stuff.
Of course, some types of content need a little more thinking for customers, such as ecommerce which can get quite complicated, but with a little handholding I’ve always found they pick things up in no time.
Extendability
When customers come to me wanting to do something new, or change the way their content is managed or presented it’s easily doable. Most things can be done with out of the box tools, others might need a 3rd party addon. In short I’ve never had to say “no” to a request - unless it’s something really odd or outside my skillset, in which case I can often suggest a different approach to achieving the same end goal.
New features and enhancements
ExpressionEngine regularly has nice new things added that improve the user interface, add extra tools, or command line level stuff for developers and addon builders. Most of these are suggested by the community, people on the front line building ExpressionEngine sites every day.
When an improvement opportunity arises they’re submitted for evaluation, some ideas don’t see the light of day, but many do and are eventually added in some form. This is part of what keeps ExpressionEngine special to people who use it.
Community
Small but perfectly formed. Friendly. Helpful. Most of the chat is in EE Slack, but there’s also presences at the EE forums and StackExchange. Anyone can contribute code or submit bugs at Github. Add to that we have EE University where you’ll find lots of articles on using ExpressionEngine including some written by myself!
Finally, what I love about the community is the people who are always willing to help out if you need assistance. On paper many of us are actually competitors, but despite that there’s always someone to get you through.