[DevDay2018] Embrace the challenge – working as a developer in Content Management Systems - By Serge Yurovsky -Accounts Director & Quang Dang – Digital Marketing Specialist at Code Engine Studio
In today's marketplace every developer has to be faced with working in a Content Management System. Balancing limitations of these systems with the advantages of broad open source communities and benefits to content owners is a constant challenge. We will discuss how developers can be more productive, efficent, and successful by shifting their mindset and learning to work within a CMS environment.
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...DevDay.org
Weitere ähnliche Inhalte
Ähnlich wie [DevDay2018] Embrace the challenge – working as a developer in Content Management Systems - By Serge Yurovsky -Accounts Director & Quang Dang – Digital Marketing Specialist at Code Engine Studio
Designing salesforce solutions for reuse - Josh DennisSakthivel Madesh
Ähnlich wie [DevDay2018] Embrace the challenge – working as a developer in Content Management Systems - By Serge Yurovsky -Accounts Director & Quang Dang – Digital Marketing Specialist at Code Engine Studio (20)
[DevDay2018] Embrace the challenge – working as a developer in Content Management Systems - By Serge Yurovsky -Accounts Director & Quang Dang – Digital Marketing Specialist at Code Engine Studio
3. Definition
A CMS is a web-based application that provides capabilities for
multiple users with different permission levels to manage
content, data or information of a website project, or internet /
intranet application.1
When content is altered, added, or removed, integrity of the
code, design, and functionality remain intact.
1
http://www.comentum.com/what-is-cms-content-management-system.html
4. Brief History
● The 1990s and later years
○ Manually edit static HTML
○ Even a simple modification required re-uploading the whole data to
publish
● Early 2000
○ The start of multiple CMS platforms such as Joomla, Drupal, Mambo
● Early 2003
○ Wordpress entered the market and quickly took over the majority
of the market share
5. CMS vs Frameworks
While Frameworks allow for streamlined and consistent
development within and between project, they still require
technical/coding knowledge to manage content within the
sites.
CMS can provide users with Content Autonomy, allowing
non-technical team members and clients freedom to alter
content at their convenience without breaking the site’s
functions.
6. Types of CMS
● Home-made CMS
● Cloud CMS
○ Square Space, Weebly, Wix, Google Sites
● Enterprise CMS
○ Liferay, Alfresco
● Mainstream Open Source CMS
○ Wordpress, Magento, Drupal
● Niche or Industry Specific CMS
○ Artstorefront, Site Theory
8. CMS Assumptions
● CMS is not the perfect solution for every problem
● CMS works best when there is a need for the middle layer
of content management between application and end
user
● Content development within CMS allows for more
Sustainable and Dynamic presentations of previously
static content.
● Long term success is more likely when non technical
users are empowered and own the content.
9. Advantages for End Users
● Content autonomy for end client
● End client (user) does not need to have coding skills
● Ability to alter design without losing functionality
○ Drag and drop builders make layout changes easier
10. Who Likes Cake?
CMS Allows for a Layered
approach
● Content
● Design & Styling
● Custom Code
● Theme/Plugin Code
● CMS Core Code
● Server Architecture
11. Advantages for End Users
● Content autonomy for client
● End users have multiple training resources available
● End client (user) does not need to have coding skills
● Ability to alter design without losing functionality
○ Drag and drop builders make layout changes easier
● Content approval workflow or Editorial Controls.
12. Contributor
Contributors can write,
edit, and delete their own
unpublished posts, but
their content must be
reviewed and published
by an Admin or an Editor.
Author
Authors can publish, edit,
or delete their own posts,
but they can’t access
anything created by other
users.
Editor
Editors can review, edit,
delete or publish content
created by any user.
Editors do not have
access to administrative
functions of the site.
Example: Editorial Controls
13. Advantages for Development
● Many structures are already part of the system
○ Users creation and management
○ Content entry interfaces
○ Control Panels familiar to users
15. Advantages for Development
● Many structures are already part of the system
○ Users creation and management
○ Content entry interfaces
○ Control Panels familiar to users
● Access control
○ Limit permissions/Access (without having to think through all the
access rules, database rules, etc)
17. Advantages for Development
● Many structures are already part of the system
○ Users creation and management
○ Content entry interfaces
○ Control Panels familiar to users
● Access control
○ Limit permissions/Access (without having to think through all the
access rules, database rules, etc)
● Shortcodes or Dynamic Queries
○ Allowing backend users to place content with pre-developed
shortcodes or dynamic visual queries, releases developers from
needing to understand all the possible future iterations of content.
22. Advantages for Development
● Speed of development can be increased
● Maintenance can be streamlined
● Tools (plugins, themes)
○ With themes, many of the presentation/UI best practices (even
responsiveness and performance optimization) are often already
taken care of, allowing developers to focus on the more complex pieces
○ Many solutions exist for the most popular problems (free or paid)
● CMS community is supported by existing (open source)
knowledge base
● Outsourcing/contracting community
24. Maintaining custom functionality
along with updates
● CMS get updated frequently to add features and fix
security issues.
● Understanding Child Theme (or similar structure) allows
for layered development.
● Maintaining extended plugins:
○ Plugins don’t allow for update-friendly modifications through the
existing structure
○ Making sure that the custom functionality works after updates can
be time consuming
■ Structures and supported functions change after updates
25. Working within existing structure
It takes time to learn and make best use of the large existing
structure.
Example: wp_enqueue_script vs on-page script.
Using wp_enqueue_script allows developer to:
● Avoid including a script more than once or avoid
re-registering script dependencies
● Control loading position of a script
● Minifying and caching of the script as it is now its own
item rather than part of the overall (html) output code
26. Code Quality issues
● Plugin conflicts
○ When things do not work, plugin conflict is the most likely culprit
○ While limited testing is done, comprehensive testing accounting for all
variables is not possible for plugin developers.
● Inconsistent code quality in 3rd party tools
○ Not all developers invest into code reviews
○ Generally, paid plugins are more likely to have better code quality
■ They definitely should have better support
■ Find reliable plugin makers and stick with them
● Code bulk: too many requests lower the performance
○ There is such thing as too many plugins
○ When working with 3rd party tools, avoid ones that have multiple
functions you do not need
27. Deployment issues
● Because CMS allows for middle content management
layer there are deployment challenges when using
nuke/re-publish types of tools
○ Database synchronization is often unavailable or is not simple to
integrate as many of the CMS tools have not accounted for
distributed and multi-server development
● Various types of hosting environments have different
standards and permissions for tools (e.g. SSH) needed for
deployment
● Existing tools (e.g. WP Stagecoach) offer too many
limitation and are in their infancy
29. Avoid reinventing the wheel
● Use themes with existing functionality
○ Find themes that meet business needs and allow for flexibility and
growth
○ Balance having functions with need for cleaner code and fewer
requests
○ Good theme developers already spent the time to make themes
responsive, use the existing rules and code
● Use Plugins
○ Seek out examples - someone has done this before
○ Carefully extend plugins as needed to meet your business needs
● Work with plugin/theme developers
○ Ask them for input, they know their code better
30. Expectation for flexibility
● CMS backend users have an expectation for flexibility
with business rules and content.
● Developers must think of ways to present controls and
inputs to backend users to allow them more flexibility
with rules and content.
● Creating a scalable structure within a CMS will allow for
growth flexibility
○ Example: adding ecommerce, multi-language environment
31. Frame Calculator
Business rule: for each cut, charge
$25
Not optimal solution:
- Hard-code cut cost ($25) into the
calculator
Better solution:
- Create a product Cut Cost with price
of $25
- Calculator will take the price of this
product into calculation for each cut
32. B612 Title Area
Not optimal solution:
● Page title, description and image
background are all hard coded in
the page templates
● Different page templates are
assigned to according pages
through page URIs
Better solution:
● Allow for flexibility to edit
individual elements through
content entry screens.
● Account for styling issues that
users may encounter, set limits
and controls as needed.
33. Make custom functionality work
within the system
● Make sure to take advantage of the existing structure
when building custom functionalities.
● Consistency in UI leads to user satisfaction and better
data quality.
● Lower the cost of training, maintenance, and integration.
35. HUB API Product
Review Screen
WooCommerce
Default Product
Listing Screen
Better solution:
Example: Work Within System
36. While working within a CMS is challenging
and requires an adjustment in mentality, the
long term benefits of having higher user
satisfaction, lower costs, and more
sustainable products make the investment
worth it.
42. What We Do.
Technology
Web Dev: CSS, JS, Vue,
Angular
Backend: Java, PHP, Rails,
Node
Mobile Web & Native Apps
QC/QA
Digital Marketing
SEO & SEM
Web Analytics
Digital Marketing
UX & Design
User Experience
UI Design