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.
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:
Based on these categories, I see a three-level pyramid in which the higher levels are more important.
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.
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.
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.:
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.
A personality which fits the team and agile methodologies
General interest and understanding of
Specific skills in
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.