Benefits of agile
software delivery to software developers
Agile and continuous delivery practices can add tremendous
value to a software developer’s life and career. Here are some key benefits!
You work only on one
feature at a time
The team has to start and finish a feature to production
quality levels, and ideally (if Product and DevOps is enabled) deliver the
feature to customers, and confirm the value of the feature for customers (DONE
CRITERIA). While every developer prides himself at being able to multi task,
focusing on one feature allows you and your team to focus deeply on the WHY (customer or business problems to
be solved by this feature), WHAT
(Product solution design to solve required problems) and HOW (technology, experience, architecture, test scenarios. i.e.
actual implementation, testing and delivery of the feature) of the feature and
deliver it to required levels of quality in one GO!
Additionally, if your team is in the middle of a feature
delivery iteration, your manager or scrum master or executive cannot interrupt
an individual or the team and request attention to other matters or additional
scope on the side, WITHOUT calling off the entire delivery iteration. Any
changes to scope or any other form of course correction has to be at the end of
the current iteration, with invocation of appropriate change management
processes. This protects your focus on the current iteration and feature
delivery to the maximum extent possible.
Maximum amount of
your work hours are spent writing or debugging new code
Effective continuous delivery practices require that you
team adopt maximum automation to make this goal possible: Time-efficient
compilation, Automated unit test suites, automated deployments to
dev-test-staging-production environments, automated and comprehensive
regression suites. You and your team have to plan for time to build and
maintain these levels of automation with every iteration. This level of
automation ensures that you are not spending your time repeating manual time
intensive activities, and can be very efficient in your code delivery cycle.
Less meetings, no
status meetings!
Agile adopts lean practices, and the only regular meeting
you are to be a part of, is the stand-up meeting, where you and your team
members sync up with each other. This is a technical meeting and you get to
briefly update the team on your progress, and optionally raise any challenges
and ask for help, if necessary. The rest of your discussions are face to face
discussions with you counterparts across functions, wherever necessary, as you
drive and complete tasks required to make the deliverable possible.
Minimal product
design & implementation documentation
Another implication of adopting lean practices; You are not
required to create elaborate functional specifications or design documents,
before you start coding. At the same time, it’s a best practice for you to be
able to come up with an effective way of representing a complex
implementation (be it a picture of a whiteboard diagram, or using some other
smart tool), and make it available (say on wiki) to enable adequate information
to be available to stakeholders who might need the information. For e.g. Such
information is very useful to create test scenarios; In complex implementations
we cannot always verbally convey everything or remember everything that what
was conveyed verbally or through emails; Your architect might want to review
your design; your product manager might want to understand your
implementation in detail.
Takes the fears away
from code changes and release delivery!
High levels of automation enable you to be unhesitant in
making code changes for fear of breaking a part of code that was previously
comprehensively, but manually, tested by the team. At best, you will be able to
quickly confirm that your changes work as expected, and have not had any
unintended side effects, and at worst, you will be able to quickly revert back
your changes. You no longer have to hope and pray that the manual tester has
covered everything in re-testing. You can know for sure that your feature works
as expected through always being in sync with results of the automated test
suite!
You get to establish
yourself in a new team in quick and iterative cycles over time.
Every new feature presents a new opportunity for you to
establish yourself and build on your success in the team. Working on and
delivering on a single feature all the way to customers, ensures high
visibility to your successful work.
Better work life
balance!
Focusing on one feature at a time eliminates context
switching across multiple features, eliminates long and never ending release
cycles, eliminates intense defect fix cycles & last minute surprises at the
end of a multi feature deliverable to production, and ensures alignment of the
complete cross functional team to the complete delivery of the feature, thus greatly
reduces the variables you have to deal with on a day to day basis.
Additionally, the time span that you have to focus on (and are thus likely to
be consumed by!), in terms of individual, team and business success, is greatly
reduced to each short iteration, as opposed to long 6-9+ monthly durations which
always seem never ending or burdensome by sheer size of the release feature set
and amount of product release risk variables you are grappling with at any
given point in time.
Frequent engagement
with customers
Agile stresses on frequent customer interactions, and calls
for wing to wing ownership and delivery of feature to customers. You are
empowered and are to be a part of customer interactions, significantly
improving your detailed understanding of customer problems as well as varying
customer needs, as well as your knowledge of the business domain. As a
developer and as a team, you own your destiny and have to no longer rely
exclusively on a product manager defining feature requirements or deciding on feature
success. Agile delivery practices cut through the clutter and inefficiencies or
Organizational layers and functions and gets coders and customers together to
work on customer solutions!