Everyone wants to hire the perfect Drupal developer - but you need a way to identify future potential Drupal back-end developers. What transferable skills are going to help someone make the switch to Drupal and excel on a busy team for a typical Drupal site owner.
What are the transferable skills and characteristics someone could look for in a potential Drupal developer? To put it another way, if you have a group of 10 people how would you narrow down your choices?
There are many roles recognized in the Drupal community, yet for the purposes of this discussion, we are grouping them into two roles:Back-end developer, and Front-end developer.
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.
- 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 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.
- 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.
- 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.
- 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.
- Knowledge of XML syntax for markup and content.
- Knowledge of how to use XML for the interchange of data
- 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.
- 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.
- Creating and controlling windows and dialogs.
- Processes for troubleshooting and debugging
- Familiarity with development and debugging tools for cross-browser issues.