ExpressionEngine makes it easy to separate the HTML code from the content of your website. Once the design of your website is built, you can add new content to the website simply by filling in a web form, which then automatically saves the content to your database. It is easy enough that anyone can learn to do it.
The HTML code that formats the pages exist in templates. However, instead of having paragraphs of content inside these templates, like you would in most HTML files, your content is stored in a database and retrieved dynamically using special ExpressionEngine tags. These tags simplify the process of accessing the database, making it easy to build a database-driven website without any knowledge of database programming.
This separation of the HTML that builds the website from the content that is displayed on your website makes it much easier for the website designer to update the design without any risk of accidentally changing the content, and makes it easier for someone else to update the content without any knowledge of the HTML that builds the website.
With that said, ExpressionEngine also brings value even when you are building your own website. With HTML files, every time you want a new page, you have to create a new file. In ExpressionEngine, one template can be used to generate hundreds of pages of content on your website, with ExpressionEngine using the URL to determine what content to display. Furthermore, snippets and global variables allow you to re-use design elements across multiple templates. Reducing repetition in this way makes it easier for you when there are updates — if the logo changes, you only have one place to update, instead of hundreds of individual pages.
In addition, ExpressionEngine makes it easy to implement advanced features such as RSS feeds, a photo gallery, a mailing list, or a calendar. You can allow visitors to leave comments, or join your site as members.
Finally, ExpressionEngine comes packed with industry-leading features to keep your website secure and spam-free. You can require people to register as members before they can submit comments to your site, you can personally review every comment before it appears on your website, or you can allow non-members to submit a comment if they type in a CAPTCHA correctly (a CAPTCHA is a randomized image of letters that a person must correctly type in order to submit data; it ensures that it is not an automated spambot that is submitting the data).
Furthermore, you can prevent people from submitting the same comment twice, restrict how much data one person can request from your website in a certain timeframe (to prevent denial of service attacks), blacklist certain words so they cannot be used in comments, and blacklist URLs or IP addresses of spammers that you do not want accessing your site.