Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Using feature teams_to_deliver_higher_business_value-sameer deans

773 views

Published on

Published in: Technology, Business
  • Login to see the comments

  • Be the first to like this

Using feature teams_to_deliver_higher_business_value-sameer deans

  1. 1. Using feature teams to deliverhigher business value Sameer Deans @ThoughtWorks
  2. 2. How can IT organize to deliverhigher value to the business?
  3. 3. The role of business is to maximize customer experience and revenue or to reduce costsAny software project aims to achieve at least one of these
  4. 4. Once a business idea emerges, time to market is criticalCan value be delivered to the business incrementally?
  5. 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. 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. 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
  8. 8. What do component teams lead to?
  9. 9. Handoff and DelayConsider 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. 10. Duplication Team A Team B Team CWrites method to Writes method to Writes method to calculatecalculate interest so it calculate interest so interest so totals can becan show this in the UI it create a reusable updated in databaseclass 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_fractionend end private def rate_of_interest_in_fraction @rate_of_interest / 100 end end
  11. 11. Bad code and designWork with the same code month after month Acceptance of bad design No outside eyes look at the codebase Do not seek to refactor
  12. 12. Coordination and Integration Team A Team C Requirement that spans several component teams Team B
  13. 13. Extra management
  14. 14. Sequential developmentRequirements 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. 15. Do the easy workA A A A Team AB B B B Team BC C C C Team C This comprises a customer requirement
  16. 16. Promotes specialization      
  17. 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. 18. New team : lower productivity Component Component Component A B C      
  19. 19. Resource allocation team uses key people as Band-Aids Component Component Component A B C       Component C 
  20. 20. Over allocationComponent Component Component A B C     100% Component   C 25%  Impact to existing teamComponent Component Component X B C  
  21. 21. Low motivation and job satisfaction
  22. 22. Introducing : Feature Teams What is a feature?Functionality that delivers usable value to the customer
  23. 23. Features : examples Adding a new service provider to eCom site Internationalization Ability to grant andservice loans
  24. 24. What does a feature team look like?
  25. 25. Not all generalists        
  26. 26. Ideally would be co-located
  27. 27. Team members work on analysis, coding and testingRequirements analysis Coding Testing 
  28. 28. How does a feature get delivered Analysis & Planning Analysis & PlanningA A A A A B B B C S S S S S S SB B B BC C C C UI task Business logic task This comprises S a customer Services requirement task Database task
  29. 29. What are the advantages of feature teams?
  30. 30. Learn and jell together
  31. 31. No hand offs UI task Business logic taskS Services task Database task
  32. 32. Valuable work can be prioritized UI task Analysis & Planning Business logic task 8 7 6 5 4 3 2 1 Services taskBusiness 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. 33. Valuable work can be prioritized UI taskAnalysis & 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 taskAnalysis & 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
  34. 34. Less management overhead
  35. 35. So, can IT now organize differently todeliver higher value to the business?
  36. 36. Thank you

×