An agile software developer, or developer for short,
is anyone who is actively involved with the creation and evolution of a software-based solution.
The responsibilities of this role can include the
responsibilities traditionally associated to the "traditional roles" of
programmers, modelers, testers, team leads, business analysts, project managers,
and deployment engineers. Agile developers work very closely with other team members, including
Agile data engineers who are responsible for
working on the data aspects of one or more applications.
Agile software developers will adopt and follow agile software development
strategies such as
Disciplined Agile Delivery (DAD).
When it comes to modeling and
documentation they are likely to enhance these processes with the
principles and
practices of
Agile Modeling (AM).
All three of these approaches, being agile, implores
developers to work closely with their stakeholders.
The implication is that developers are responsible for helping to educate their
stakeholders, including both users and managers, in the basics of software
development to help them make more informed decisions when it comes to
technology.
What Agile Developers Do
The responsibilities of this role can include the
responsibilities traditionally associated to the "traditional roles" of
programmers, modelers, testers, team leads, business analysts, project managers,
and deployment engineers. Application
developers work very closely with Agile data engineers who are responsible for
working on the data aspects of one or more applications.
Application developers must recognize that your although your primary focus
is fulfilling the current needs of your direct stakeholders that they
also need to recognize that their initiative exists within the larger scope of your
organization. This strategy
reflects Agile Modeling's principles
Software Is Your Primary Goal and
Enabling
the Next Effort is Your Secondary Goal - in this case part of the next
effort is ensuring that your team conforms to the overall enterprise vision.
Application developers are best served by recognizing that they are
working on one initiative of many within their organization, that many teams
came before theirs, that many teams will come after theirs, and therefore
they need to work with people in the other roles to ensure that they do the
right thing.
Application developers will adopt and follow agile software development
processes such as Disciplined Agile Delivery (DAD). When it comes to
modeling and
documentation they are likely to enhance these processes with the
principles and
practices of Agile Modeling (AM).
All three of these processes, being agile, implores
developers to work closely with their stakeholders.
An implication is that developers are responsible for helping to educate
their
stakeholders, including both users and managers, in the basics of software
development to help them make more informed decisions when it comes to
technology.
Application developers will often find that they are constrained by they
organization's
legacy systems, including
legacy data schemas.
These systems will often be very difficult to evolve, and if they can
evolve will often happen very slowly. Luckily
Agile data engineers will be able to help application developers deal with the
realities imposed upon them by legacy data sources, but they will need to work
with enterprise professionals, particularly enterprise architects, to ensure
that their efforts reflect the long-term needs of your organization.
Application developers will also need to recognize that they need to follow
their organization's development practices, including
guidelines and
standards.
Application developers are expected to provide feedback regarding the
standards and guidelines, every in the organization should do so, and should be
prepared two work with enterprise professionals to develop guidelines for
development environments that are new to your organization.
Application developers also need to work closely with
enterprise architects
to ensure that their team takes advantage of existing enterprise resources as
well as fits into the overall enterprise vision.
The enterprise architects should be able to provide this guidance and
will work with your team to architect and even build your system.
Furthermore, application developers should expect to be mentored in
"senior" skills such as architecture and modeling.
This approach makes it easy for your team to support enterprise efforts
and helps to keep the enterprise architects grounded because they quickly
discover if their architecture actually works in practice.
Data Skills for Agile Developers
My experience is that all developers, agile or not, need to learn fundamental data techniques.
This includes:
Agile Database Skills for Agile Developers
Furthermore, agile developers need to adopt evolutionary, if not agile, database techniques
such as those of the
agile database techniques stack
summarized in Figure 1. This includes:
- Vertical slicing
- Clean data architecture
- Clean database design
- Agile data modeling
- Database refactoring
- Automated database regression testing
- Continuous database integration (CDI)
- Configuration management
Figure 1. The Agile Database Techniques Stack.