Why don't small companies do big a agile?
Upcoming SlideShare
Loading in...5
×
 

Why don't small companies do big a agile?

on

  • 3,330 views

Why don't small companies do big-A-Agile? Are they agile by default? Is Agile just a way for a large company to behave more like a small one? In this retrospective on agile adoption in companies large ...

Why don't small companies do big-A-Agile? Are they agile by default? Is Agile just a way for a large company to behave more like a small one? In this retrospective on agile adoption in companies large and small we'll look at what drives adoption, how effective it is at meeting those goals and whether software craftsmanship could teach us more.

Statistics

Views

Total Views
3,330
Views on SlideShare
3,330
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • I'd love to hear the talk behind those slides =)
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Java developer Agile enthusiast Aspiring software craftsman Co-founder of LSCC Twitter Why don't small companies do Agile?
  • Start with some definitions Tried doing by numbers About names not roles ” We need Mike to help with this” ” That's a job for Rachel” In large co ” We need QA to help with this” ” That's a job for the operations team” Not to say ppl don’t know each other Identifying by role/team creates short hand – but creates barrier
  • We mean agility Responsiveness; ability to react Bottom up – enthusiastic developers introduce specific practices
  • Agile goes mainstream Big-A-Agile is how we try to get there
  • Take away the theatre and buzzwords – agility is pretty simple Iterate!
  • XP practices fit this perfectly Scrum & kanban provide structure on top – forecasting, planning & process improvement
  • BA vs talking direct to customer Requirements review; architecture standards committee; design sign-off Not been in business long Large business, older, more time to build legacy Interesting metric: LOC/developer 50k 10ppl = 5k/dev 1m 20ppl = 50k/dev Large companies, more code & more code per-developer More to remember Harder to change Software factory
  • With less inventory, even starting on wrong foot easier to retro-fit tests Dev owns junit tests; BA owns acceptance tests; who owns browser tests? QA or dev? What if they're written in junit?
  • Small company trying to find product market fit – can’t wait
  • So small companies naturally do something approximately agile; what stops a large company replicating that?
  • Byzantine process – dedicated job to navigate Failure of an alternative, nervous management return to process safety net “ We’re doing agile, but...” Requirements review, design sign off This isn’t “scrum, but” – its “waterfall, but we’re pretending its agile”
  • Separate QA, build, operations team More people, more meetings, more waste
  • Everybody ”does their job”, instead of delighting the customer ” I fixed the bug, it's up to QA to test it” ” I raised the defect, I'm waiting for dev to fix it” ” The build's ready, operations need to deploy it” ” It's the maintenance team's job to fix bugs” Thrashing - reviewing possibilities / changing direction
  • Development is documenting requirements Start from vague ideas; most precise form is code Project idea has a lot of appeal – but software is weird stuff People feel threatened by agile
  • So why do large companies do big A Agile... Or the stupid...
  • Coming from waterfall background, or half arsed agile
  • What would a diabolical agile roll out look like? How would Dilbert's PHB do it?
  • Project mindset Have team size, fixed scope, fixed date Backlog full of mandatory stories Extra credit: new to company
  • Alpha geek & passive-aggressive cynic Solve all design problems – can't estimate without understand what we're building Everything is a 5 anyway Might feel like planning theatre, but its important to be able to hold developers accountable for their commitment
  • Sprint end – stories not done carry over Process set in stone, can't change it But of course, this isn't agile – it's a checklist of behaviours
  • Now agile is mainstream First line of the agile manifesto Ironically...
  • If big-A-agile isn’t the answer for large companies, perhaps software craftsmanship provides a better view?
  • Software craftsmanship typically focuses on the individual developer How can I improve? How can I learn? How can I mentor others? I’d like to go off in a slightly different direction – if I built a team of craftsmen, what would that look like
  • Responsible for, and capable of , delivering a working increment More dependencies, more project management Developers want to understand the business Let them work with the customer, not for the customer
  • Bob Martin talks about 1 master, 3 journeymen, 9 apprentices Fred Brooks “If a 200 man project has 25 managers who are the most competent and experienced programmers, fire the 175 troops and put the managers back programming”
  • If team responsible for customer to production; all process is internal to team Conforming to standard should be choice of team – because it’s beneficial to the team Some mandatory – rest owned by team
  • Most developers need to work harder on improving quality; very few over-engineer Rush design, multiple code rewrites Skip unit testing, bugs found late – expensive to fix. Not my fault – unlucky Bugs thrive in crap code; debugging crap code takes time -> just fix the code! Scrum/kanban etc give ways of tracking velocity/cycle time to make projections based on past experience If schedule is slipping, cut features not corners
  • So how does craftsmanship help?
  • Developers understand the business; customer trusts the development team -> what to build next. Small, autonomous team; with right experience; producing clean code -> implement smallest thing One team (devops); minimal, self-improving process; working in partnerhsip with the customer -> get feedback quickly On top of the XP practices, craftsmanship is about the relationships, the team structure and a focus on quality
  • XP is about the day-to-day practices What developers do
  • Scrum is about the iteration-by-iteration practices What project managers do
  • Software craftsmanship is about developers “raising the bar” But it’s also about building the right team and genuinely empowering them to craft great software This is in management ’s domain Craftsmanship has these four key goals to enable agile delivery: autonomy, experience, process & quality – let me summarise my thoughts about this into what I think the software craftsmanship manifesto should have said
  • We don’t want dependencies, scheduling and project management – we want autonomy We don’t want armies of untrained developers – we want to hire great developers with a balance of experience and help them all progress We don’t want long process definition documents – we want permission to use the right process for the job Finally, we have to stop writing crap thinking its quicker. If we do the job right, speed will come naturally.

Why don't small companies do big a agile? Why don't small companies do big a agile? Presentation Transcript

  • Why don't small companies do Agile?
      David Green
      @activelylazy
      londonswcraft.com
  • Small Company
    • Small company
      • ” Everyone knows everyone”
      • People identified by name
    • Large company
      • People identified by role/team
  • Little a agile
    • Something you are
      • Ability to respond quickly
    • Some teams are naturally agile
      • Find their own process
      • Bottom up agile
  • Big A Agile
    • Something you do
    • Management imposed – top down agile
    • By introducing specific process
      • I.e Scrum
    • Goal is to be more agile
      • to increase agility
  • Agility
      Responding quickly to a change 1. Determine next required change 2. Implement small product increment 3. Get feedback from customer
  • Agility
      Responding quickly to a change 1. Determine next required change
        On-site customer, prioritised backlog
      2. Implement small product increment
        User stories, short iterations, TDD
      3. Get feedback from customer
        CI, small releases, continuous deployment
  • What makes a small company little a agile?
  • Small Company has...
    • Less process / bureaucracy
      • Quicker to describe required change
      • Fewer signoffs before implementing change
    • Less inventory
      • Less code to change
      • Less likely to have legacy code
    • One team mentality
  • Small Company does...
    • Unit/acceptance testing
      • Easier to retrofit tests
      • No arguments over ownership
    • Continuous integration
      • Excellent free CI tools
      • If any test coverage, devs likely to setup unasked
  • Small Company does...
    • Shared ownership
      • Whole team own whole codebase
      • One team mentality
    • Small releases
      • Can't wait months/years for new product
      • Need to recognise revenue
      • Demoable product to drive sales
      • Learn & iterate
  • What stops a company being agile?
  • Constraints
    • Process
      • Response to each mistake is more process
      • Accumulate over time
      • Difficult to unwind
        • “ That’s the way things are done around here”
        • Any alternative must work first time
      • Checklists, sign-offs, reviews
      • Explicitly waterfall process
  • Constraints
    • Functional silos
      • Economies of scale / simplify management
      • Releasing an increment involves multiple teams
      • The result?
        • Resource contention
      • The response?
        • Scheduling, priorities, reviews
      • Needs sufficient bandwidth & reliable SLA
  • Constraints
    • Lack of ownership
      • It's always somebody else's problem
      • Lack of care – someone else can clean it up
    • Competing demands
      • Multiple customers -> multiple views of priority
      • Different priorities: new features, support, technical
      • Team ends up ”thrashing”
  • Constraints
    • Lack of flexibility
      • ” Fixed scope”, fixed deadline
      • Project mentality
    • Command and control
      • Agile removes the illusion of control
    • Politics
  • What drives Agile Adoption?
    • Desire to...
      • Decrease time to market
      • Increase predictability
      • Increase productivity
      • Build the right product
    • Or the stupid, because I...
      • Heard about it from an analyst / at a conference
  • What drives Agile Adoption?
    • If small companies are more naturally agile:
    • ” A large company adopts agile to behave
    • more like a small company”
    • A company only needs formal Agile Adoption if it isn't naturally agile
    • We have heard about new ways of developing software by paying consultants and reading Gartner reports. Through this we have been told to value: Individuals and interactions over processes and tools and we have mandatory processes and tools to control how those individuals (we prefer the term ‘resources’) interact Working software over comprehensive documentation as long as that software is comprehensively documented Customer collaboration over contract negotiation within the boundaries of strict contracts, of course, and subject to rigorous change control Responding to change over following a plan provided a detailed plan is in place to respond to the change, and it is followed precisely That is, while the items on the left sound nice in theory, we’re an enterprise company, and there’s no way we’re letting go of the items on the right. halfarsedagilemanifesto.org
  • What does “Doing Agile” look like?
  • Agile Roll Out
    • Pick project
    • Write requirements as User Stories
      • Create “project backlog”
      • Prioritise
    • Form team
      • No history to base judgements on
      • No story point standard
  • Agile Roll Out
    • Run user story workshops
      • Team takes time to form
      • Let team solve design problems up front
      • By the 3 rd day, everyone has lost interest
    • Run first sprint planning session
      • Team commit to first sprint scope
      • Best if expected velocity “reverse engineered”
      • “ Planning theatre”
  • Agile Roll Out
    • Nominate a Scrum Master
      • Or “Project Manager” as they used to be called
    • Have daily stand ups
      • What I did yesterday...
    • Update burn down chart daily
      • And challenge the team when they're behind
  • Agile Roll Out
    • Sprint retrospective
      • But don't follow up on actions
    • Ship working software
      • But not till the end of the last sprint, obviously
    • Congratulate everyone on a successful agile project
  • Checklist Agile
    • Now a checklist of processes to implement
    • Agile manifesto:
      • “ Individuals and interactions over
      • processes and tools”
    • Ironically – the success of process over people
    • “ Developers started the Agile movement to get closer to customers not project managers”
    • -- Bob Martin
  • Software Craftsmanship
    • All about the people
      • If your business makes money from software, the people building that software are the most important in your business
    • Professionalism in programming
      • Taking responsibility for our craft
      • Taking responsibility for our careers
    • A culture for learning and improving
  • Team of Craftsmen
  • Team of Craftsmen
      What would a team of craftsmen look like?
      • Autonomous
      • Balance of experience
      • “ Just enough” process
      • Producing high quality product
  • Autonomy
    • Small team (7 +/- 2)
    • Deliver an increment of software independently
    • Minimize number of dependencies
    • Productive partnership with customer
  • Experience
    • “ Correct” balance of experience
    • Continuous learning
    • Best developers writing code, not managing
    • More developers ≠ faster
    • Avoid “dead sea effect”
  • Process
    • Rigid process is a constraint
    • Process should be internal to team
    • Standardisation is good – but hard!
      • Limits team’s flexibility in face of change
    • Some mandatory process inevitable
      • E.g. legal compliance
  • Quality
    • “ The only way to go fast, is to go well”
    • -- Bob Martin
    • Rushing will make you go slower
      • Corners cut this morning will cost you this afternoon
    • We cannot successfully trade quality for time
      • Write clean code first
      • Schedule implied
      • Cut features not corners
  • Agility
      Responding quickly to a change 1. Determine next required change 2. Implement small product increment 3. Get feedback from customer
  • Agility
      Responding quickly to a change 1. Determine next required change
        Productive partnership, trust
      2. Implement small product increment
        Autonomy, experience, quality, minimal process
      3. Get feedback from customer
        One team, fast process, partnership with customer
  • Three Layers
      XP
      Scrum
      Craftsmanship
    • Pair programming
    • TDD / ATDD / BDD
    • Continuous Integration
    • Small releases
    • Coding standards
    • Collective ownership
  • Three Layers
      XP
      Craftsmanship
    • Prioritised product backlog
    • Product owner
    • Daily scrum
    • Sprint planning
    • Sprint review
    • Sprint retrospective
    • Information radiator
      Scrum
  • Three Layers
      XP
      Scrum
      Craftsmanship
    • Autonomous
    • Balance of experience
    • Just enough process
    • High quality product
  • Craftsmanship in Software
    • Autonomy over shared responsibility
    • Better developers over more developers
    • Permission over process
    • Quality over crap
  • Questions? @activelylazy londonswcraft.com