Originating in a discussion about the CSD certification, I was asked to give a talk at the Agile Graz Meetup about my view about: How should an agile developer look like? What skill set and what kind of person is needed?

Through my years of in-depth study and work with agile development methods in different positions, I had developed a gut-feeling about it, but this talk required me to think in-depth about that topic and the reasons for my believes.

What Do We Want to Achieve with Agile Development?


In order to be able to answer the question how an agile developer should look like, we must first ask our self: “What do we want to achieve?”

The first principle of the agile manifesto states: “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”

The benefits that are promised by agile development are: High customer satisfaction, short time-to-market cycles, quick changes, minimum overhead, and high quality.

As we have now a better picture about what we want, we can now ask: “How can we achieve these goals?”

Sources like Agile Manifesto, Scrum Guide, XP Rules, and The SW Craftsmanship Manifesto contain guidelines. From them I extracted some keywords/key-concepts and categorized them as follows:

General Concepts

  • Frequent delivery
  • Short timescale
  • Responding to change
  • Working software
  • Well-crafted software
  • Steadily adding value

Character/Personality

  • Motivated individuals
  • Support
  • Trust
  • Self-organization
  • Interaction
  • Collaboration
  • Courage
  • Focus
  • Commitment
  • Respect
  • Openness

Technical Tools

  • Face2Face communication
  • Community of professionals
  • Continuous integration (CI)
  • Pair Programming (PP)
  • Test-driven development (TDD)
  • Collective code ownership

Social Concepts

  • Teams
  • Partnerships
  • Reflection
  • Simplicity
  • Technical excellence

How Should a Person Be to Work in This Setting?


Based on these categories, I see a three-level pyramid in which the higher levels are more important.

Level 1: Agile “Compatible” Personality – Share the Values

The keywords suggest that in an agile environment we need motivated, flexible team players who like to communicate and are curios to learn new things as well as to improve themselves and the product, tools, etc.

If the personality does not fit the agile values, the understanding will be hard to achieve, and the mindset will not be formed.

Level 2: Agile Mindset – Understand the Principles

In agile development, responding to change – of environment, requirements, circumstances, etc. – is key. These responses also include modifications of the development process itself to be able to cope with changed situations.

To be able to adapt a development process and preserve the agile principles, an agile mindset is necessary – which is developed by understanding and living the agile principles.

Furthermore, the agile principles are the core and reason for the agile practices. The understanding of the “Why?” allows everyone to use the practices more efficiently, as well as to modify them on demand or devel-op new ones if needed.

If understanding and mindset are not there, the practices will be chosen inadequately, and their application will not bring the expected results.

Level 3: Agile Skills – Know your Practices

The third level and basis of the pyramid are the skills in the application of agile practices which are based on the principles and are designed to support them. I would divide them in general and specific practices.

General practices should be known by every team (or company) member regardless of their role or position. They include popular development processes like Scrum, Kanban (How many “Scrum” developers have read the Scrum guide? ), and practices like whole team approach, sprint planning, daily stand-up, pairing, review, retrospective, etc. While some of these practices may depend on the chosen process, most of them are gen-erally applicable in an agile environment. As they are not role dependent, they should be known by everyone.

Additional to skills in general practices, team members should also have skills in specific practices depending on their role and field of work. This includes basic practices which are state-of-the-art in the field as well as agile specific practices. For an agile developer e.g.:

  • Basic: Version control, design patterns, clean code, (unit)testing, infrastructure as code, ...
  • Agile: TDD, PP, continuous integration (CI), automation, refactoring, incremental design, ...

The Ideal Agile Developer: T-Shaped Team Member


Coming back to the original question “What should an agile developer look like?”, my ideal is a “T-shaped team member”. A T-shaped team member has a profound knowledge and skill on a specific area as well as some basic skills on other relevant topics, as well as an interest in broadening the skill set. This allows team members to distribute work and help each other if needed as well as learn from each other.

What I expect from an agile developer:

A personality which fits the team and agile methodologies

  • Flexible motivated team player
  • Courageous, respectful, communicating

General interest and understanding of

  • The product, the customer and the customer’s needs
  • Continuous improvement (product, process and self) as well as learning
  • Agile methods

Specific skills in

  • State-of-the-art software development
  • Agile software specific practices

Mindset

  • Everything that happens concerns me
  • Focus on “Getting things done” instead of hiding behind rules, roles and responsibilities

Conclusion


The most important characteristic for a developer in an agile context is an agile compatible personality which matches the agile values and principles. Beside this basic requirement, a profound knowledge of software development best practices is needed, as well as knowledge of agile practices in general and developer specific ones.

While personality is nothing a course can teach, principles and practices can be taught. And as continuous improvement is one of the agile core principles, an urge for learning is expected from an agile developer. He or she thereby becomes a T-shaped team member with an agile mindset as well as an up-to-date skillset in different areas.

Haben wir Dein Interesse geweckt?

Kontakt aufnehmen


Gibt es noch offene Fragen? Dann bitte zögere nicht und melde Dich bei uns. Wir würden
uns freuen Dich demnächst in einem persönlichen Gespräch näher kennenzulernen.
Telefon
+43 316 27 86 60
E-Mail
office[@]gamed.com
Adresse
Harter Straße 48, 8053 Graz