08448380779 Call Girls In Friends Colony Women Seeking Men
Using feature teams_to_deliver_higher_business_value-sameer deans
1. Using feature teams to deliver
higher business value
Sameer Deans @ThoughtWorks
2. How can IT organize to deliver
higher value to the business?
3. The role of business is to maximize
customer experience
and revenue
or to reduce costs
Any software project aims to achieve at least one of these
4. Once a business idea emerges,
time to market is critical
Can value be delivered to the business incrementally?
5. So what does the 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
6. So how does IT set themselves up to deliver?
Typical team organization is around component teams
formed around architecture modules of the system
User Account Transaction
Security
management Maintenance Processing
7. Quite often organized by layer of the application
UI team
UI team
Business Number of UI team
logic team applications in Business UI team
logic team Business
the system logic team Business
Services Services
under team logic team
team development
Services
team Services
Database
team Database team
Database
team Database
team
team
9. Handoff and Delay
Consider a requirement from the customer that needs
to be developed by 3 component teams
Handoff Handoff
Team A Team B Team C
Waste due to Waste due to
rework and delays
handling
partially
finished work
10. Duplication
Team A Team B Team C
Writes method to Writes method to Writes method to calculate
calculate interest so it calculate interest so interest so totals can be
can show this in the UI it create a reusable updated in database
class SimpleInterestCalculator
service class SimpleInterestCalculator3
def initialize(principal, interestRate, Class InterestCalculator def initialize(options = {})
numberOfYears) @loan_amount =
def self.compute(loan_amount, options[:loan_amount] ||
@principal = principal rate_of_interest, term_in_years)
@interestRate = interestRate @rate_of_interest =
(loan_amount * options[:rate_of_interest] ||
@numberOfYears = rate_of_interest *
numberOfYears @term_in_years =
term_in_years) /100 options[:term_in_years] ||
end end end
def compute end
(@principal * @interestRate * def compute
@numberOfYears) /100 @loan_amount * @term_in_years *
end rate_of_interest_in_fraction
end end
private
def rate_of_interest_in_fraction
@rate_of_interest / 100
end
end
11. 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
14. Sequential development
Requirements analysis Planning
Testing
UI team UI team
UI team
Business Business
logic team logic team
Business
Services logic team Services
team team
Services
Database team Database
team team
Database
team
15. Do the easy work
A A A A Team A
B B B B Team B
C C C C Team C
This comprises a
customer
requirement
17. Another response from IT : feature projects
Spin up a project to deliver a particular
feature of the larger system
Component Component Component
A B C
Feature touches 3 different components
Unfortunately this has its drawbacks too
18. New team : lower productivity
Component Component Component
A B C
19. Resource allocation team uses key people as
Band-Aids
Component Component Component
A B C
Component
C
20. Over allocation
Component Component Component
A B C
100%
Component
C
25% Impact to
existing
team
Component Component Component
X B C
27. Team members work on
analysis, coding and testing
Requirements analysis Coding Testing
28. How does a feature get delivered
Analysis & Planning Analysis & Planning
A A A A A B B B C S S S S S S S
B B B B
C C C C
UI task
Business
logic task
This comprises S
a customer Services
requirement task
Database
task
31. No hand offs
UI task
Business
logic task
S
Services
task
Database
task
32. Valuable work can be prioritized
UI task
Analysis & Planning
Business
logic task
8 7 6 5 4 3 2 1
Services
task
Business Idea
Database
task
This gets channeled
into two features and UI task
two feature teams
Analysis & Planning
Business
logic task
8 7 6 5 4 3 2 1
Services
task
Database
task
33. Valuable work can be prioritized
UI task
Analysis & Planning Analysis & Planning
Business
logic task
8 7 6 5 4 3 2 6 5 4 3 B A 2 1
Services
task
Database
task
The business wants a change
and re-prioritizes the backlog
UI task
Analysis & Planning Analysis & Planning
Business
logic task
8 7 6 5 4 3 2 7 6 5 4 3 2 A 1
Services
task
Database
task