Creating useful software is a
craft. There is no black and white formula for success. Yet, there are certain Agile
engineering practices that, if used thoughtfully, have shown to repeatedly add
value to a business. In this article,
I’ll share 4 specific ways that your business can benefit today from Agile
Engineering practices.
(If we use the basic formula of Scrum + Extreme
Programming (XP) = Agile, I am referring to the XP piece of the equation when I
say Agile Engineering Practices. Things like Test Driven Development, Pair
Programming, & Continuous Integration.)
"Scrum
is easier and less threatening than XP(Extreme Programming), so I see a lot
more people starting out with Scrum. On the downside, the teams that start with
Scrum tend to struggle more than the teams that start with XP. The XP teams
experience more pain starting out, but then get to a high performance state
within the first year."
Yet often, a VP of
Engineering or CTO will approach me and say “I want my engineering team to get
better at Agile engineering practices so that we can go faster.”
I agree with James Shore that XP is a struggle at first, which in
fact goes counter to the idea that Agile helps teams move faster. In fact, XP
has a steep learning curve, and by it’s nature, learning takes time and
learning XP is achieved by going slower than a team that isn’t doing any
learning.
So, if “going faster” isn’t the true value of Agile engineering
practices, then what is?
I believe that the true business
value of Agile engineering practices is that they allow a company to embrace change in a way that actually becomes
a competitive advantage.
Why?
As we enter 2014, the argument could logically be made that all,
if not most, companies are technology companies. If that’s true, then it would
follow that the companies that can best
leverage the process of building software are the ones that will succeed in
the next decade.
It is, of course, true that there are many competitive
advantages to be gained outside of software and that will remain true. For
example, the hedge fund that can best leverage a mathematical formula for
tomorrow’s stock predictions will have a competitive advantage. And, the retail
store that can best leverage fabrics and colors to predict tomorrow’s fashion
will have a competitive advantage. But, with 24/7 connectivity and global
information sharing, the minute you have a truly good idea is the minute your
competitors know about it. Which brings us full circle back to the idea that
the companies that can best leverage the process of building software are the
ones that will have the advantage over their competitors.
Let’s say that an Education company called Acme Aces is using
Test Driven Development (TDD), Continuous Integration and Pair
Programming. The engineering team is
working on a project that will bring grading tests on iPads to K-12 classrooms.
One day, word comes down that a new Ed Tech Starup has entered the market and
is offering a service that doesn’t exist in the market – Individual student
grading from the iPads shared with parents.
What’s Acme Aces to do? Luckily, Acme Aces knows their code is
solid, since it’s covered with Tests thanks to TDD. And, they are also confident that no one
person is off in the corner writing code that’s not integrated with the rest of
the system, thanks to Continuous Integration.
Thanks to pair programming, knowledge isn’t silo’d and there’s a healthy
cross functional team where every developer knows all pieces of the code base.
Acme Aces Management decides to be aggressive and aims to have
their own version of the iPad grading to parents available for the new school
year. With the confidence that TDD, Pair Programming and Continuous Integration
bring, the team can incorporate this change quickly. The team finishes their
current sprint and use the planning phase of the next sprint to reset the
priorities.
Acme Aces can swiftly incorporate management’s change in plans
and capitalize on the change in the market so that they have a competitive
advantage.
Specifically, 4 business advantages Acme Aces has today are,
they can:
1.
Turn on a
dime
In a matter of days, the new feature is prioritized,
scoped, and moved to the top of the prioritization list and is being worked on
by the team.
2.
Re-allocate
development team members
Those best equipped to work on the new feature can be
dedicated to it. Since pair programming and collective code ownership allow
team members to rotate and work on various parts of the code, the project isn’t
held up by any one rock star who’s too busy on something else. The whole team
can morf to the new requirements.
3.
Avoid having
to scrap months of work
Because the code they have completed is production ready
code that’s high quality, bug free, integrated and functional.
4.
Have
confidence that the code already built represents the most important pieces of
the project
Thanks to the fact that the engineering team has been
working closely with the business side to prioritize their work every 2 weeks.
The value of Agile
engineering practices has moved beyond the engineering team and is clearly
beneficial for the entire business. Have questions about the best way to
implement Agile engineering practices for your team? Ask any questions you
have, I can help and will gladly bat around ideas over coffee or drinks.
No comments:
Post a Comment