Core skills like Scrum, Kanban and test-first are essential for agile teams. Knowledge of collaborative development and agile architecture can serve as a value-add. Scaling agile across the enterprise represents the next phase of agile evolution, and software developers can use these skills to fuel it.
Adoption of agile practices is growing amongst software development teams, even in remote-work environments, and developers need specific skills to create better applications, increase delivery speed, improve quality and deliver better user experiences.
Agile software developers face a dizzying pace of change. Application development professionals must evolve both technical and interpersonal skills to keep pace with rapidly evolving and newly emerging technologies.
Agile teams are cross-functional and rely on multiple individuals’ skills
The following skills are fundamental to agile application development. Keep in mind that not every developer needs to be an expert in every area, as agile teams are cross-functional and rely on multiple individuals’ skills.
Scrum
Scrum is the dominant agile framework, providing an iterative and incremental approach for solving complex problems. Small collaborative teams typically deliver work in short iterations, sprints of about two weeks.
Kanban
Kanban is a method for visualising, managing and continually improving a process’ ability to deliver a service. It is a pull-based delivery flow system that exposes constraints, creates flow by limiting the amount of work in progress and signals when capacity is available to start new work.
Product development must become customer-centric, with developers getting closer to their customers
Metrics
Successful application development teams objectively measure and analyse their software development processes. Metrics provide actionable feedback to guide agile teams and enable better conversations with stakeholders.
User stories
User stories in agile development shift the focus from writing requirements to addressing customer needs. A user story contains a short description of a feature from the perspective of the role desiring the new capability, typically in the format: As a <type of user>, I want <some goal> so that <some reason>.
Customer focus
Product development must become customer-centric, with developers getting closer to their customers, understanding their needs and validating success through actionable feedback. Learn to empathise with customers using user personas, customer journey mapping, in-depth interviews and usability testing.
Test-first
Test-first practices like test-driven and behaviour-driven development ensure that application developers build the right software the first time. With the additional reuse benefits of validation and documentation, creating tests before writing the code provides exceptional value to the development process.
Waiting for an expert to perform a critical project step impedes team agility
Continuous learning
A key tenet of agility is that practitioners be open to learning new skills, not just from project to project, but also as part of a lifelong learning process. Waiting for an expert to perform a critical project step impedes team agility. Multiskilled teams solve problems and achieve goals faster.
Value-added skills
These skills represent the next level of agile maturity. In-depth knowledge of them enables the team to continuously improve the delivery process.
Collaborative development
In collaborative development, more than one team member works on a single feature or application at any given time. This can benefit teams by providing a built-in mechanism for code review, reducing development cycle time and broadening skill sets as teammates learn from each other.
Ownership and collaboration
Work style, attitude and interactions with others impact success as much as any technical or professional skill. Small, self-directed, autonomous teams collaborating to build solutions only succeed when all members of the team commit to a set of shared values, such as focus, courage, openness, commitment and respect.
Agile architecture
Traditional approaches to software architecture do not support an agile development life cycle. Inflexible monolithic applications, architectural complexity and technical debt burden development teams, impede agility and frustrate users. Component-based architectures provide greater development agility, increased deployment flexibility and more process scalability.
Emerging skills
These skills represent potentially significant, game-changing processes and practices for agile developers.
Agile database management
Agile teams quickly find that database changes become a constraint that limits velocity. To increase the speed of delivery, cultivate database management skills to become more self-sufficient and reduce dependence on database administrators.
Scaling agile
Expanding the validated success of agile pilots to the broader enterprise is both challenging and rewarding for organisations. Agile practices will not only benefit other development teams but also infrastructure and operations, enterprise architecture and security by reducing risk, improving business outcomes and increasing predictability.