USING FEATURE TEAMS TO DELIVER HIGHER BUSINESS VALUE Sameer Deans
Aug 11, 2014
USING FEATURE TEAMS TO DELIVER HIGHER BUSINESS VALUE
Sameer Deans
How can IT organize to deliver higher value to the business?
2
AGENDA
! What does business expect from IT?
! How is IT set up to deliver?
! Introducing feature teams
! Q & A
3
4
All businesses are driven by Return on Investment
RoI can be in monetary form or intangible like a brand or social recognition
5
The role of business is to maximize
Customer Experience
and Revenue
or to Reduce Costs
Software project aims to achieve at least one of these
6
Once a business idea emerges, time to market is critical
Can value be delivered to the business incrementally?
What does business expect from IT?
! Visibility into progress
! Flexibility to change requirements
! Ability to change priorities of requirements
! Expectation that domain knowledge will be retained in the organization for future development
7
So how does IT set themselves up to deliver?
Typical team organization is around competent teams formed around architecture modules of the system.
8
User Management Security Account
Maintenance Transaction Processing
Quite often organized by layer of application
9
UI team
Business Logic team
Services team
Database team
Number of applications in
the system under development
UI team
Business Logic team
Services team
Database team
UI team
Business Logic team
Services team
Database team
UI team
Business Logic team
Services team
Database team
What do component teams lead to?
10
HANDOFF AND DELAY
Team A Team B Team C
Consider a requirement from the customer that needs to be developed by 3 component teams
Handoff Handoff
Waste due to rework
and handling partially finished
work
Waste due to delays
DUPLICATION
Team A Team B Team C
Writes method to calculate interest so it can show this in the
UI class SimpleInterestCalculator
def initialize(principal, interestRate, numberOfYears)
@principal = principal @interestRate = interestRate
@numberOfYears = numberOfYears
end
def compute (@principal * @interestRate *
@numberOfYears) /100 end end
Writes method to calculate interest
so it create a reusable service Class InterestCalculator
def self.compute(loan_amount,
rate_of_interest, term_in_years)
(loan_amount * rate_of_interest *
term_in_years) /100 end end
Writes method to calculate interest so
totals can be updated in database
class SimpleInterestCalculator3
def initialize(options = {}) @loan_amount =
options[:loan_amount] || @rate_of_interest =
options[:rate_of_interest] || @term_in_years =
options[:term_in_years] || end
def compute @loan_amount * @term_in_years *
rate_of_interest_in_fraction end
private def rate_of_interest_in_fraction
@rate_of_interest / 100 end end
BAD CODE AND DESIGN
Work with the same code month after month Acceptance of bad design
No outside eyes look at the codebase Do not seek to refactor
COORDINATION AND INTEGRATION
Team A
Team B
Team C Requirement
that spans several
component teams
EXTRA MANAGEMENT
SEQUENTIAL DEVELOPMENT
UI team
Business logic team
Services team
Database team
UI team
Business logic team
Services team
Database team
UI team
Business logic team
Services team
Database team
!!!
Requirements analysis
!!!
Planning
!!!!!
Testing
DO THE EASY WORK
Team A
Team B
Team C
A A A A
B B B B
C C C C
This comprises a customer
requirement
PROMOTES SPECIALIZATION
!!! !!!
!!!
ANOTHER RESPONSE FROM IT : FEATURE PROJECTS
Spin up a project to deliver a particular feature of the larger system
Unfortunately this has its drawbacks too
Feature touches 3 different components
Component A Component B Component C
! ! !! ! !
NEW TEAM : LOWER PRODUCTIVITY
Component A Component B Component C
! ! !! ! !
RESOURCE ALLOCATION TEAM USES KEY PEOPLE AS BAND-AIDS
Component A Component B Component C
! ! !! ! !
! Component C
!
Component C
Impact to existing
team
OVER ALLOCATION
Component X Component B Component C
! !! !
Component A
Component B
Component C
! !! !
!!
100%
25%
!!
LOW MOTIVATION AND JOB SATISFACTION
INTRODUCING : FEATURE TEAMS
What is a feature?
Functionality that delivers usable value to the customer
FEATURES : EXAMPLES
Internationalization Adding a new
service provider to eCom site
Ability to grant and
service loans
What does a Feature Team look like?
NOT ALL GENERALISTS
! ! ! !!
! ! ! !
IDEALLY WOULD BE CO-LOCATED
TEAM MEMBERS WORK ON ANALYSIS, CODING AND TESTING
Requirements analysis Testing Coding
! ! ! !!! ! ! !
HOW DOES A FEATURE GET DELIVERED
UI task
Business logic task
Services task
Database task
A A A A
B B B B
C C C C
This comprises a customer
requirement
A B B B C S S S S S S S
Analysis & Planning Analysis & Planning
S
What are the advantages of feature teams?
LEARN AND JELL TOGETHER
NO HAND OFFS
UI task
Business logic task
Services task
Database task
S
VALUABLE WORK CAN BE PRIORITIZED
8 7 6 5 4 3 2
Analysis & Planning UI task
Business logic task
Services task
Database task
1
Business Idea
UI task
Business logic task
Services task
Database task
1 8 7 6 5 4 3 2
Analysis & Planning This gets
channeled into two features and two
feature teams
VALUABLE WORK CAN BE PRIORITIZED
8 7 6 5 4 3 2
Analysis & Planning
8 7 6 5 4 3 2
Analysis & Planning
UI task
Business logic task
Services task
Database task
1
UI task
Business logic task
Services task
Database task
1
The business wants a change and re-prioritizes the backlog
6 5 4 3 B A 2
Analysis & Planning
7 6 5 4 3 2 A
Analysis & Planning
LESS MANAGEMENT OVERHEAD
So, can IT now organize differently to deliver higher value to the
business?
THANK YOU