SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Working as a
developer in
Content
Management
Systems
April 2018
What is a CMS?
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
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
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.
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
Why bother
working in a CMS?
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.
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
Who Likes Cake?
CMS Allows for a Layered
approach
● Content
● Design & Styling
● Custom Code
● Theme/Plugin Code
● CMS Core Code
● Server Architecture
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.
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
Advantages for Development
● Many structures are already part of the system
○ Users creation and management
○ Content entry interfaces
○ Control Panels familiar to users
Example: Using Familiar Controls
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)
Example: User access by role
Admin View Shop Manager View
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.
Example: Shortcodes
Shortcode with attribute
value of “mcguire”
Products populated
belongs to “McGuire”
Example: Shortcodes
Shortcode with attribute value
of “clubcu” and “club-cu”
Products populated
belongs to “Clubcu”
Example: Dynamic Queries
Query Builder Query Result
Example: Dynamic Queries
Query Builder Query Result
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
CMS challenges
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
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
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
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
Mentality when
developing in CMS
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
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
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
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.
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.
Not optimal solution: Saved Quotes Reporting Screen
Example: Work Within System
HUB API Product
Review Screen
WooCommerce
Default Product
Listing Screen
Better solution:
Example: Work Within System
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.
Questions
Boutique Outsourcing
Digital outsourcing Studio
Delivering high quality products and services
30+ FULL TIME STAFF
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
WE ARE
HIRING
PHP Developer
Java Developer
Intermediate - 3+ years experience - 15mill - 20mill
Senior - 5+ years experience - 20mill - 30 mill
Tech Lead - 8+ years experience - 25mill - 35mill
WE ARE
ACCEPTING
Developer Interns
Quality Control Interns
Digital Marketing Interns
SEND YOUR ENGLISH CV TO:
career@codeenginestudio.com

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

Symantec - From Early Drupal Adoption to the Latest Drupal Innovations
Symantec - From Early Drupal Adoption to the Latest Drupal InnovationsSymantec - From Early Drupal Adoption to the Latest Drupal Innovations
Symantec - From Early Drupal Adoption to the Latest Drupal Innovations
Tag1 Consulting, Inc.
 
Content Management Systems (CMS) & Wordpress theme development
Content Management Systems (CMS) & Wordpress theme developmentContent Management Systems (CMS) & Wordpress theme development
Content Management Systems (CMS) & Wordpress theme development
Dave Wallace
 
Mlb drupal bizday_presentation
Mlb drupal bizday_presentationMlb drupal bizday_presentation
Mlb drupal bizday_presentation
erlee72
 
Blue Lang - Engineering Leader
Blue Lang - Engineering LeaderBlue Lang - Engineering Leader
Blue Lang - Engineering Leader
Blue Lang
 

Ä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)

Content Management Systems
Content Management SystemsContent Management Systems
Content Management Systems
 
The Testers' Secret Weapon - Code Reviews
The Testers' Secret Weapon - Code ReviewsThe Testers' Secret Weapon - Code Reviews
The Testers' Secret Weapon - Code Reviews
 
Symantec - From Early Drupal Adoption to the Latest Drupal Innovations
Symantec - From Early Drupal Adoption to the Latest Drupal InnovationsSymantec - From Early Drupal Adoption to the Latest Drupal Innovations
Symantec - From Early Drupal Adoption to the Latest Drupal Innovations
 
NAO Technical Discovery ITT National Audit Office
NAO Technical Discovery ITT National Audit OfficeNAO Technical Discovery ITT National Audit Office
NAO Technical Discovery ITT National Audit Office
 
Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
Convince Management to Invest in a CCMS (Lessons learned)
Convince Management to Invest in a CCMS (Lessons learned)Convince Management to Invest in a CCMS (Lessons learned)
Convince Management to Invest in a CCMS (Lessons learned)
 
Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design pattern
 
Twelve Tasks Made Easier with IBM Domino XPages
Twelve Tasks Made Easier with IBM Domino XPagesTwelve Tasks Made Easier with IBM Domino XPages
Twelve Tasks Made Easier with IBM Domino XPages
 
Content Management System
Content Management SystemContent Management System
Content Management System
 
Research study on content management systems (CMS): issues with the conventio...
Research study on content management systems (CMS): issues with the conventio...Research study on content management systems (CMS): issues with the conventio...
Research study on content management systems (CMS): issues with the conventio...
 
Content Management Systems (CMS) & Wordpress theme development
Content Management Systems (CMS) & Wordpress theme developmentContent Management Systems (CMS) & Wordpress theme development
Content Management Systems (CMS) & Wordpress theme development
 
LvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemLvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design System
 
What functions do content management systems perform_.pptx
What functions do content management systems perform_.pptxWhat functions do content management systems perform_.pptx
What functions do content management systems perform_.pptx
 
Migrating and adopting Drupal 8: Why you need Cohesion
Migrating and adopting Drupal 8: Why you need CohesionMigrating and adopting Drupal 8: Why you need Cohesion
Migrating and adopting Drupal 8: Why you need Cohesion
 
Web CMS vs. Custom applications - different approaches
Web CMS vs. Custom applications - different approachesWeb CMS vs. Custom applications - different approaches
Web CMS vs. Custom applications - different approaches
 
Mlb drupal bizday_presentation
Mlb drupal bizday_presentationMlb drupal bizday_presentation
Mlb drupal bizday_presentation
 
From prototype to production - The journey of re-designing SmartUp.io
From prototype to production - The journey of re-designing SmartUp.ioFrom prototype to production - The journey of re-designing SmartUp.io
From prototype to production - The journey of re-designing SmartUp.io
 
Content management system a full guide
Content management system a full guideContent management system a full guide
Content management system a full guide
 
Blue Lang - Engineering Leader
Blue Lang - Engineering LeaderBlue Lang - Engineering Leader
Blue Lang - Engineering Leader
 
Designing salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh DennisDesigning salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh Dennis
 

Mehr von DevDay.org

Mehr von DevDay.org (20)

[DevDay2019] Lean UX - By Bryant Castro, Bryant Castro at Wizeline
[DevDay2019] Lean UX - By  Bryant Castro,  Bryant Castro at Wizeline[DevDay2019] Lean UX - By  Bryant Castro,  Bryant Castro at Wizeline
[DevDay2019] Lean UX - By Bryant Castro, Bryant Castro at Wizeline
 
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
 
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
 
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
 
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
 
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
 
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
 
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
 
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
 
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
 
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
 
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
 
[Devday2019] Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
[Devday2019]  Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...[Devday2019]  Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
[Devday2019] Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
 
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
 
[DevDay2019] Opportunities and challenges for human resources during the digi...
[DevDay2019] Opportunities and challenges for human resources during the digi...[DevDay2019] Opportunities and challenges for human resources during the digi...
[DevDay2019] Opportunities and challenges for human resources during the digi...
 
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
 
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
 
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
 
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
 
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

[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

  • 1. Working as a developer in Content Management Systems April 2018
  • 2. What is a CMS?
  • 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)
  • 16. Example: User access by role Admin View Shop Manager View
  • 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.
  • 18. Example: Shortcodes Shortcode with attribute value of “mcguire” Products populated belongs to “McGuire”
  • 19. Example: Shortcodes Shortcode with attribute value of “clubcu” and “club-cu” Products populated belongs to “Clubcu”
  • 20. Example: Dynamic Queries Query Builder Query Result
  • 21. Example: Dynamic Queries Query Builder Query Result
  • 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.
  • 34. Not optimal solution: Saved Quotes Reporting Screen Example: Work Within System
  • 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.
  • 38.
  • 39. Boutique Outsourcing Digital outsourcing Studio Delivering high quality products and services
  • 40.
  • 41. 30+ FULL TIME STAFF
  • 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
  • 44. PHP Developer Java Developer Intermediate - 3+ years experience - 15mill - 20mill Senior - 5+ years experience - 20mill - 30 mill Tech Lead - 8+ years experience - 25mill - 35mill
  • 46. Developer Interns Quality Control Interns Digital Marketing Interns
  • 47. SEND YOUR ENGLISH CV TO: career@codeenginestudio.com