Daniel Pinho

The DX Pattern Language

Table of Contents

Introduction

The DXPL (Developer Experience Pattern Language) comprises a set of seventeen pattern candidates that tackle different actionable factors spanning the three dimensions of DX (developer experience), covering the domain in a way that is as holistic as possible.

The DXPL starts with a set of four patterns that are more abstract, comprising the first two levels of the pattern language. For instance, Pattern §1 , Balanced Scales, is a pattern that takes aim at the DX faced by a developer at a high level, advising them to reflect on what matters most to them. At lower levels of the pattern language (Pattern §5 and beyond), the patterns address more concrete and observable elements in a developer’s physical and mental environment, discussing topics such as skill-building (§13 Practice Makes Perfect), psychological safety (§10 Breathable Atmosphere), and remaining motivated (§11 Intrinsic Motivation). 9 The section on the patterns lists all the pattern candidates in the DXPL and includes their patlets (short summaries of the patterns’ main ideas), based on their problems and solutions. On the other hand, the section on the pattern map provides this overview graphically; as its name suggests, this graphical overview is done through the form of a pattern map, identifying as well how each pattern candidate relates to the others. Full arrows indicate that the usage of a pattern leads to another one, akin to a pattern sequence; meanwhile, dashed arrows indicate patterns that influence other ones. In all instances, the relationship is described in a heavily abridged form — for example, §2 Infrastructure Alignment, a pattern that directly concerns the cognitive dimension of DX , contains §6 A Shoe That Fits , which is related to one of the cognitive factors in Fagerholm and Münch’s framework[1]. The latter pattern, in turn, has a bidirectional relationship with §8 Team Players , both being patterns that support each other.

Target audience

This pattern language primarily targets developers, as our view is that a person’s DX is unique to themselves. However, not every factor faced in their daily work life by a developer is up to them.

We are then left to reconcile these facts. A lone developer cannot change everything, and the knowledge present in patterns ought to be actionable. As such, the DXPL ends up widening its target audience from the developer to the organisation, and even beyond that in some cases.

In their work, a developer interacts with and is subject to the decisions of people with multiple roles. For example, they can be other developers (as is usually the case for team members), project managers, agile coaches, managers, and executives. Beyond the organisation we find relevant roles that can bring benefits from being aware of these patterns and taking action on them if appropriate: this is the case for clients, end users of the software that was developed, or even the people who create the tools the developers use (henceforth referred to as tool makers).

While the current versions of the patterns in the DXPL were documented with a greater focus on industry settings, the same types of factors are also relevant in academic contexts or in hobbyist projects. The surrounding dynamics may differ, but the categories of factors influencing a developer’s DX are comparable across environments. Accordingly, roles such as researchers, administrative staff, and others in non-corporate settings may also play a role in shaping the developer experience.

In summary, the DXPL recognises the developer as the central actor in their own experience, while acknowledging that this experience is shaped by many others. The most immediate influence lies with the stakeholders and managers they interact with directly, but broader roles, including clients, tool makers, and members of non-corporate environments, also contribute.

Pattern structure

The patterns are written using an explicit form, where headings are used to outline each pattern component. Each pattern has a set of mandatory components, described as follows:

  • Name/Title: The name of the pattern identifies it, and provides readers with a hint towards what it discusses or what the solution may be.
  • Context: Each pattern exists within a certain context. This component provides readers with information about where we are and why we are facing the problem and the solution.
  • Problem: The problem we are faced with in the realm of the context and want to address with the pattern.
  • Forces: These are conflicting factors that are in play in relation to the problem and the context it is set within. The forces should be “in tension”, meaning that they do not guide us in a straightforward way towards an easy solution; in fact, the solution should consider the different characteristics of each force and address them effectively, balancing the forces in play.
  • Solution: The solution guides readers as to how they should act to solve the problem, with enough information that they can take action, but without being too specific that it loses applicability. It has a succinct statement in bold, followed by paragraphs that go in more detail about the pattern’s implementation.
  • Illustration: The pattern’s illustration is a visual representation of the gist of the pattern, and should be memorable so that readers can remember the pattern. Depending on the pattern, some illustrations are more abstract than others.
  • Examples: A pattern’s examples showcase how a pattern can be put into practice. In most patterns in the DXPL, this section indicates known uses of a pattern or practices that showcase the knowledge behind the pattern’s solution. In the four first patterns (§1 Balanced Scales to §4 Well-Valued Contribution), due to their more abstract nature in comparison to the remainder of the patterns, this section is presented through example scenarios of a pattern’s application. Both approaches to the examples help illustrate the pattern’s advice and to give readers more information about how to apply a pattern’s solution.
  • Consequences: Applying a pattern’s solution influences the resulting context, and always brings with it a set of trade-offs. The consequences of a pattern can be positive (benefits, indicated with a + list marker) or negative (liabilities, indicated with a - list marker).
  • Related Patterns: This component indicates which other patterns are identified as being relevant to the pattern in question. Most of these will be within the DXPL}, but there are instances where patterns from other pattern languages can be related to a pattern.

Pattern map


The patterns

§ 1 Balanced Scales
How can we improve our DX? · Assess the impact of each one of the dimensions of the mind: cognitive, affective, and conative. Considering the limitations in place, regularly assess the importance of each dimension relative to the other ones and focus on improving the most important ones, continuously.
§ 2 Infrastructure Alignment
How can we maximise the effectiveness of the development infrastructure in use? · Reflect on the conditions that influence how your work tasks are carried out, improving upon them if possible. Develop your skills, assess whether the tool is right for the job, and review the activities performed for their usefulness.
§ 3 Good Feelings
How can we strive for a good mindset regarding our development work? · Developers should improve their social environment through good teamwork practices and fostering positive relationships with the project's stakeholders, in addition to bolstering their emotional side by championing an atmosphere of respect, trust and belonging.
§ 4 Well-Valued Contribution
How can developers improve their self-value relating to their contributions? · Reflect on and assess the factors related to one’s own value that are compatible with the current project, including motivation, goals, and interpersonal alignment.
§ 5 Adequate Skills
How can we best learn how to use a development tool? · Engage in a multifaceted skill-building process that includes practice and is supported by guidance from experts and colleagues, written materials, and any other available resources, such as tutorials and community discussions.
§ 6 A Shoe That Fits
What kind of tools should we opt for? · Choose tools that not only facilitate the work to be done but also support it, taking into account factors including usability, skill, and ubiquity, and interoperability.
§ 7 Meaningful Activities
What activities should development teams focus their time on? · Select activities and actions with intentionality to eliminate spurious or unfocused tasks and keep only what definitively drives progress to the work at hand. To that end, reflect on what is done during the day and remove obstacles and redundancies.
§ 8 Team Players
What factors should developers pay attention to when working in teams? · Team members should come together with an aligned approach, working together, sharing knowledge, supporting each other, and applying a process that works for them.
§ 9 Stakeholder Relationships
How can we strive for positive relationships between developers and other stakeholders? · Build bridges between the team and the stakeholders through employing effective communication strategies, understanding differing viewpoints and seizing them as opportunities to learn, and fostering trust and respect.
§ 10 Breathable Atmosphere
How can organisations foster a comfortable work environment? · Fostering developers' psychological safety gives them comfort and helps them to do their jobs without fear of failure. This can be done through giving them the space to speak up, share ideas, take initiative, and build working relationships with their co-workers.
§ 11 Intrinsic Motivation
How can developers boost their motivation? · Developers ought to reflect and assess their working context, including their environment, career, tasks, the results of their tasks, and the people around them, to identify what motivates them and what can be improved.
§ 12 Goal-Oriented Achievements
How should we define goals? · Adopt strategies for effective goal-setting, such as bringing developers and stakeholders together in the goal-making process, employing a mix of large-scope and smaller-scope goals, defining SMART goals, and employing mechanisms to track their progress.
§ 13 Practice Makes Perfect
How can developers effectively develop their skills with the tools and processes they use? · Acquire first-hand experience through practice exercises, and regular daily work to learn more about the intricacies of the tools and processes in use.
§ 14 Learning From A Master
How can we complement our learning process to maximise our proficiency with the tools and processes we use? · Seek guidance and mentorship from their colleagues, other more experienced developers, or instructors, via classes, workshops, or simply by asking questions.
§ 15 Written Knowledge
What approaches should we take to learn more about the tools and processes in use? · Expand your theoretical knowledge through written sources of information, such as reference documentation, books, guides, and tutorials.
§ 16 It Takes A Village
How can we find pertinent knowledge to develop our skills? · Consider joining and being part of the developer community associated with the tools in use, interacting and sharing knowledge with other developers.
§ 17 Makers' Guidance
How can we find knowledge to support our learning about the tools we use? · Seek out and incorporate learning resources made by the developers of the tools, such as tutorials, documentation, and other forms of information, into your learning process.

References

  1. F. Fagerholm and J. Münch, “Developer experience: Concept and definition,” in 2012 International Conference on Software and System Process (ICSSP), Zurich, Switzerland: IEEE, 2012, pp. 73–77. doi: 10.1109/ICSSP.2012.6225984.