AgilePracticeLibrary
Programmer Anarchy
notes from Fred George [video]
WHY
- Agile = social change, especially beyond software groups in organizations
- Programmer Anarchy grows out of ‘’story tyranny,’’ the drive to micromanage agile work
- Requirements hierarchy:
- initiatives
- products/projects
- features
- stories
- tasks
- PA wants to elevate customer conversations to the feature level, to get clients out of complexity’s way
- normal agile evolves toward micromanaging at task level and standups
WHAT - ROLES
agile roles
- management - project mgr, iteration mgr
- development - developer
- business - customer, QA, BA
PA moves to all customers and developers, only
- QA - need real programming skills now, and architecture skills as shift from acceptance testing to active monitoring
- BA - just a middleman in conversation, a redundant intermediary
- iteration manager - role invented by thoughtworks for a specific situation, same as project manager
- project manager - overloaded term/role: from clerk to leader, ambassador to coach/mentor, concierge to power hungry boss - team can handle these better for themselves.
PA evolved as a way to go faster - published a number of updates and started killing processes that got in the way, without loss of safety => looked like “anarchy” but it worked great!
WHAT - PRACTICES
- agile practices NOT used: standups, story narratives, retrospectives, estimates, iterations, MANDATORY pairing, unit tests, acceptance tests, refactoring, patterns, continuous integration
- instead: trust w/ co-location, results not blame, small short-lived apps, and continuous deployment
WHAT - SHIFTS
- project focus => feature focus
- specialists => poly-skilled
- desks => team tables
- scrum => aggressive agile, table-based teams and people moving around, choosing their own tables (looks like ongoing open space!) => flexible project approach
- change tech stack
- key business tech = platform/languages/software delivery to assess skills
- titles and job descriptions gone. people focus. master/journeyman/apprentice (2 yrs to master, or fail out, 2-6 months to journeyman),
- training in working together: option to join new way of working, incentive because had to join or be stuck w/working in old code base
- new roles... (1) new graduate developer, (2) developer, (3) senior dev (speicialized) and systems dev(polyskilled), (4) master (3+ key skills)