How to Be a Master Drupal Developer

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Sarvasri's picture

How to be Master Drupal Developer
— Essential Skills and Knowledge

Benjamin Franklin knew how to run a printing press. Because of that, he was a powerful force for positive change. There is a lot I would like to share with the world, but the new “printing press” is the Internet and I have not yet mastered it.

I could not figure out why I was having so much trouble creating Drupal sites. Then I did a search to find out what skills I need to master Drupal, one of the better “printing presses” for the Internet. I don’t yet have the resources to hire people with these skills, so I have to learn them all myself (as rapidly as possible).

Below are the skills required to be a MASTER Drupal Developer – compiled from various sources on the Net…
This may serve as a resource for group meetings.
It could also serve as a training base for independent study, since it will take a long time to cover all these skills in meetings and all of these skills are not Drupal specific skills – which is the focus of the group, although most people will either want to master these skills or find others they can rely on for these skills, since they are all required for the “printing press.”

I would like to create a spreadsheet, table, or database that others could contribute to (don’t yet know how or where to put it).
There are six columns to the spreadsheet:

Knowledge - the field of knowledge that is useful for building Internet sites
Description - why this knowledge is needed
Software Tools - things like Firebug, Chive, Code Editors, Drush, Limechat etc. to apply the knowledge
Learning Sources - Ideally Free, but best resources of any kind could be listed, with links
Best Practices -
Comments -

Below is my list culled from Internet searches (as complete as I can make it, perhaps others could add to it)
Knowledge Items (in bold) then a Description. Following my list is a list by Heather James of Acquia

Linux Knowledge Drupal and most other Content Management Systems are often installed on Linux hosts. If your site goes down, and emergency service isn’t available from your hosting provider, you may need to login via ssh and fix it. This requires command line knowledge of Linux. Perhaps using VI or VIM.

MySQL / Database Knowledge - MySQL, PostgreSQL, MariaDB, SQLite, Nginx are some of the flavors. Drupal modules can compensate somewhat for a lack of phpMyAdmin knowledge, but there is no substitute for understanding database technology. All Drupal data is stored in databases. Manipulating that data is often needed in certain circumstances. Rolling back to a recent stable database is often a fix. Command line with Linux or phpMyAdmin are ways to fix it. MySQL and database knowledge and experience is a core requirement for Drupal programmers.

PHP Knowledge Drupal is built with PHP, but PHP versions vary. PHP configurations need to match requirements. PHP libraries may need to be added. Drupal Modules and Themes are written in PHP. PHP knowledge may be as valuable as knowledge of Drupal itself. Knowledge of PHPMyAdmin or Chive to administer MySQL databases (http://www.chive-project.com/Features).

CSS, and HTML All browsers are based on CSS and HTML. All content is rendered in HTML and CSS. Some say that when Drupal content isn't rendered properly, knowledge of CSS and HTML is vital. An example: When a mailing module is scheduled to send thousands of newsletters and graphics don’t display properly, CSS and HTML knowledge is a must. Knowledge of Firebug and compatibility issues in IE and Safari are also needed.

Security Knowledge Knowledge of permissions and correct php.ini file structure can prevents security breaches. Installing up to date Drupal patches, may not be sufficient. The host needs to be secure and you should know how to check that it is. Hosting providers may not protect against the security issues related to Drupal. They may threaten cut off service, if the problem isn't fixed quickly. For this reason and others, fundamental security knowledge is a must.

Knowledge of Apache is useful as is knowing how to configure and restart the httpd. If a broken connection arises from Apache to the local MySQL server breaks knowledge is needed. Knowledge of database configuration and Apache processes is needed.

Software Design Methods and best practices. Agile software development as applied to web design. Development, Staging, Production and version control with CVS, Subversion, or Git that is connected to an IDE such as Eclipse. Formal code structure. Website design methods and processes.

jQuery and AJAX allow sites to do cutting-edge things. While knowledge of them is not critical, exposure and awareness is useful.

Business Analysis - mapping key business processes as translated into web requirements, forms, user interfaces, roles, landing pages, and many other important website deliverables. When Business Analysis is done correctly, a website saves money and time. You can see the example in successful on-line businesses like ebay. Many different internal and external users of varying roles interact to make e commerce happen seamlessly. An understanding of business analysis is critical for success on larger projects.

Project Management is essential on large projects with many stakeholders. Development priorities, tangible development tasks, stories, and projects, can come together nicely if well planned and managed.

Drupal Knowledge Obviously. Example - http://drupal-interview-questions.blogspot.com. Knowledge of designs, themes, modules, problems. Knowledge and development of modules, or themes and how to go live.

Graphic, Video, and Audio Design How to work with graphic designers and media creators. How to optimize performance. How to ensure graphics, videos, and audios are efficient for rapid page loads and are compatible with mobile devices and mobile data plans (load within 3 seconds). How to convert psd files to themes. Knowledge of Adobe Photoshop and Illustrator for graphics and knowledge of video and audio editors such as Final Cut Pro and Logic Pro or other graphics-video-audio applications if you don’t have a graphic artist/videographer/recordist on staff. How to optimize graphics, video, and audio for the web.

Photography, Stock Photos - Knowledge of stock photography, video, and audio resources. Knowledge of photography, videography, audio voice recording, and music production to produce content for web sites that require it — if you don’t have production artists on staff. How to find such specialists if you don’t have or want to develop these skills and have a budget.

Search Engine Optimization Content is king. Verify how great content produces a high ROI through Google Analytics or Awstats? How to use the SEO checklist module.

See also, http://drupal.org/node/51169 (working with service providers)

————

From Heather James at Acquia —

Front End Developer

Previous experience

  • Understands key server-side web development concepts through experiences such as:
  • Interpreting graphic visual or interaction designs in HTML, CSS and Javascript.
  • Creating visually appealing web pages or interfaces.
  • Creating, editing or modifying templates for a CMS or web development framework.
  • Programming interaction with JavaScript and/or a library such as jQuery, YUI or Prototype.
  • Testing cross-browser, cross-platform, and/or cross-device compatibility for inconsistencies.
  • Testing for compliance to specified standards such as accessibility standards in the clients region or domain.
  • Conducting observational user testing, or reviewing designs against usability heuristics.


  • Domain specific knowledge or transferable skills
    Experience with web development languages of HTML, CSS and JavaScript/jQuery.

    HTML

  • Familiarity of HTML syntax for multiple specifications, including HTML 5.
  • Knowledge of the semantic meaning of all HTML elements.
  • Familiarity with the semantic markup for display of lists, tabular data, forms, articles, etc.
  • Knowledge of markup used for layout such as dividers.
  • Knowledge at the level to be able to hand-code markup.
  • Including media and images.


  • PHP

  • Familiarity with modifying Drupal Theme hooks to display data
  • Understanding how to utilize PHP to filter, process and output html, json, xml


  • CSS

  • Specifying different CSS for various media, devices and displays.
  • Best practices in CSS file organization and structure.
  • Methods for including CSS inline, internal and external via linked style sheets.
  • How to define, combine and group CSS selectors for HTML elements, ID, classes, pseudo classes, child or sibling.
  • Syntax of CSS declarations, properties and attributes.
  • CSS box model and methods for CSS positioning, absolute and relative.
  • Knowledge of properties and attributes to control the display.
  • Familiarity with differences in CSS 2 and CSS 3.
  • Proficient with a CSS Preprocessor such as Sass or LESS.


  • Best practices

  • Methods to ensure browser & device compatibility
  • Methods for degrading gracefully for older browsers and displays.
  • Methods to ensure accessibility.
  • File compression techniques for improving speed.


  • JavaScript

  • Knowledge of the operators, variables, datatypes, objects, properties and methods.
  • Familiarity with control structures such as objects, functions, conditional statements, arrays, loops and expressions.
  • Forms and regular expression validation and submitting data.
  • Knowledge of how to apply logical operators and conditional statements.
  • Knowledge of the DOM HTML objects and their properties.


  • Event Handling

  • Creating and controlling windows and dialogs.
  • Processes for troubleshooting and debugging
  • Familiarity with development and debugging tools for cross-browser issues.


  • jQuery

  • Knowledge of how to employ the jQuery library for visual effects, event handling, and document manipulation.


  • Back End Developer

    This developer is focused on managing the interchange of data between the application and the browser. This developer focuses on the server-side of programming for the web, yet also understands the programming languages which control the display of content in the browser.


    Existing Knowledge

  • Custom web application development.
  • Developed with at least one CMS framework or web application framework.
  • Employed a framework or extended an existing CMS with custom coding.
  • Knowledgeable about accessibility or security compliance relevant in client’s sector and geographic location.
  • Understands the underlying systems on which web applications are developed.
  • Understands the technologies and languages which power the web such as HTML, CSS and JavaScript.
  • Understands key server-side web development concepts such as:

  • Integrating data or user accounts between multiple systems for a client.
  • Integrating multiple databases and/or database types into one system.
  • Managing a hosting environment, and has administered databases.
  • Scaling an application and/or its hosting environment to support increases in traffic.
  • Setting up or using a version control system, and manage control with file based assets and data.
  • Implementing or working with content approval and staging workflows.
  • Migrating data, scripting migration of data.
  • Implementing, managing or using a backup system and disaster recovery.
  • Securing data or access to applications with multiple user levels, or has the ability to customize based on user levels.
  • Implementing or working with a template driven system with a clear separation between content and display. *comment.
  • Outputting data in multiple document formats.
  • Using XMLHTTPRequest and Javascript to create web applications.
  • Working with multiple delivery platforms such as mobile versus desktop.
  • Creating multilingual websites or applications.
  • Creating and implementing database schemas that represent and support business processes.
  • Ensuring the quality of applications through unit testing.


  • Domain specific knowledge or transferable skills

    Knowledge of a programming language for a framework such as PHP, Python, Perl, .NET, Ruby, Java, or other language.

  • Application and scripting development best practices, architecture, scalability, etc.
  • Can execute tasks with both procedural and OOP development techniques.
  • Familiarity with the syntax and control structures of the given language.
  • Best practices for efficient and easier to maintain code.
  • Best practices for securing web applications.
  • Inserting, querying and managing data stored in databases or files.


  • Knowledge of PHP and database programming including:

  • The features and syntax of PHP datatypes, variables, constants and operators.
  • Knowledge of syntax of and how to employ expressions and functions.
  • Knowledge of how to apply control structures of PHP such as expressions, loops, conditional statements, and switch statements.
  • Session handling, PHP Configuration.


  • Understands web development markup languages HTML/XML; stylesheet languages CSS/XSL and JavaScript. Additionally, knowledge of the DOM, its objects and their properties.


    HTML

  • Familiarity of HTML syntax for multiple specifications, including HTML 5.
  • Knowledge of the semantic meaning of most HTML elements.
  • Familiarity with the semantic markup for display of lists, tabular data, forms, articles, etc.
  • Knowledge of markup used for layout such as dividers.
  • Knowledge at the level to be able to hand-code markup.
  • Including media and images.


  • XML

  • Knowledge of XML syntax for markup and content.
  • Knowledge of how to use XML for the interchange of data


  • CSS

  • Specifying different CSS for various media, devices and displays.
  • Methods for including CSS inline, internal and external via linked style sheets.
  • Syntax of CSS declarations, properties and attributes.
  • CSS box model and methods for CSS positioning, absolute and relative.
  • Knowledge of properties and attributes to control the display.


  • JavaScript

  • Knowledge of the operators, variables, datatypes, objects, properties and methods.
  • Familiarity with control structures such as objects, functions, conditional statements, arrays, loops and expressions.
  • Forms and regular expression validation and submitting data.
  • Knowledge of how to apply logical operators and conditional statements.


  • Event handling

  • Creating and controlling windows and dialogs.
  • Processes for troubleshooting and debugging
  • Familiarity with development and debugging tools for cross-browser issues.