Join us
@louiswand ・ Nov 28,2022 ・ 6 min read ・ 1100 views ・ Originally posted on blog.mia-platform.eu
To meet the needs of a fast‑changing market and increasingly demanding customers, companies need quality software that is scalable in performance, resilient, and secure. Needs that require great effort from development teams and, from the company, ongoing commitment to improve the Developer Experience (DevX), by applying a well‑defined Developer Experience Strategy.
DevX is usually related to single persons, as it aims to provide each one with the best possible experience. However, in most organizations, there is not a single person dedicated to the development, but there is an entire team (or several teams in the case of large companies) with different and complementary skills. So, attention should also be paid to the Developer Experience of the entire team, considered a unit. Therefore, it is important to address directly the critical aspects - often relational - of the software development workflow, aiming to reduce delays and frictions.
What are the issues that should be addressed to improve the Developer Experience of teams? In this article, we have identified three different macro‑areas, and for each, we have outlined the main elements and provided some tips for dealing with them. The three areas are: internal team organization, communication/interaction with other teams, and corporate culture. Let's see in detail what these are all about.
The productivity of development teams is not the algebraic sum of individuals' work, but depends on people's abilities to share goals and collaborate consistently and effectively. The following are some solutions that can be adopted to improve collaboration within individual teams.
One of the first elements to be addressed concerns abandoning the classic horizontal structure by specific competencies and organize developers into Feature Teams, that is, groups that have the responsibility, from start to finish, for a single service or application function. With feature teams, you eliminate the stop & go of projects owned by different teams, due to traditional segmentations by back‑end or front‑end skills and by individual parts of the process.
Within the feature team, it is very important to clearly define core roles so that processes and key figures are well defined. Thus, a Product Owner (PO) cannot be missing: this professional is responsible for gathering business‑side requests, managing the budget, and setting the schedule. POs are generally people with more business than technical skills, which is why they are usually supported by a Technical Leader (TL). A TL serves as a point of reference regarding the technical side of development, helping, on the one hand, the POs, to define the backlog of activities and, on the other hand, developers to get the most out of the technologies used. Considering the increasing popularity of agile methodology, particularly the Scrum framework, it is advisable to identify a Scrum Master within the team. The purpose of Scrum Masters is to facilitate all Agile processes: for example, they are in charge of making sure that meetings adhere to the defined times and topics, and that project progress boards are always up to date. This improves internal communication and avoids friction and bottlenecks. Where the team is not particularly large, the Scrum Master may not work on this full‑time, but may also be a team member who takes charge of these activities alongside their work as developers.
The organization is essential, but for improving the Developer Experience, attention needs to be paid to other aspects that are useful in making work smoother and more continuous. In particular, processes play a major role: a slow and laborious process can frustrate the team's efforts, while a clear and simple one can accelerate the teams' efforts.
The first concern, therefore, is automation. Teams often have to carry out recurring tasks, which are time‑consuming and error‑prone because they are performed manually. Automating these tasks contributes significantly to improving the team's Developer Experience, as it reduces frustrations due to repetitive tasks that are not related to the core business and can lead to errors.
Another aspect is the introduction of tools that can avoid bureaucratic demands and steps between different team members. In this regard, the services offered by a tool such as the Internal Developer Platform (IDP) are crucial. An IDP minimizes the cognitive load required for dealing with the underlying infrastructure, simplifying interactions and providing in a self‑service mode the resources needed for daily development activities.
In addition, it is crucial to encourage the reuse of already developed components, to avoid duplication of work on the one hand and to facilitate adherence to corporate standards on the other. The key tool for this activity is the Service Catalog, a library of ready-to-use plugins that also helps speed up development.
Finally, it is useful to have a well‑organized Wiki containing all useful resources for development guidelines. These may include best practices, patterns to follow, antipatterns to avoid, and conventions in use (such as for naming endpoints or API routes). All team members should have access to and be able to actively contribute, expanding the resources available, adding new ones, or archiving obsolete ones.
The second area of focus, after the internal organization of the team in terms of structure, processes, and roles, concerns interactions with other teams within the organization. Indeed, it is crucial that the teams that have to work together cooperate in the best possible way, without frictions, overlaps, and bottlenecks. But it is equally important to share experiences among teams that are disconnected and independent in terms of goals and activities so that knowledge within the company is not scattered and indeed increased.
This requires more communication and clarity about the composition of the various teams, their responsibilities, and their tasks. This avoids areas of uncertainty about ownership, which would lead to difficult artifact maintenance and discontent among teams. To foster collaboration and knowledge, it is useful to create areas and times dedicated to sharing ideas and mutual learning. It is also necessary to have easy channels and ways to obtain support from another team when needed, in the context of a serene and supportive climate.
In addition to aspects related to internal team dynamics and those involving interactions, corporate culture also has a major impact on the Developer Experience of teams. As with individual member involvement, motivation, gratification, and a sense of belonging play a key role in teams.
Here are some ideas for creating a corporate culture that has a positive impact on teams' DevX:
Developer Experience is becoming increasingly important in improving software development, both in terms of individual members and the team considered as a unit. While on the one hand, it is possible to help the work of individuals with better performing tools with better interfaces and automation capabilities, on the other hand, it is necessary to invest in creating ambitious but serene work environments where people cooperate without friction.
By directly intervening in the internal organization of teams, their interaction with other business teams, and the corporate culture, it is possible to enhance the Developer Experience of teams, and consequently increase productivity and improve the quality of released software.
To take full advantage of the advice in this article you will need the right tools. At Mia‑Platform we develop software products that simplify the work of your development teams, providing a great Developer Experience. Check out Mia‑Platform v10 and book a demo now!
Join other developers and claim your FAUN account now!
Marketing, Mia-Platform
@louiswandInfluence
Total Hits
Posts
Only registered users can post comments. Please, login or signup.