-
Management
-
#1: On Leadership
-
The industry is aging
- We need new management rules for old geeks (who already regret missing their 20s)
- These rules mean establishing process that ensures work-life balance
- Old geeks want their capability to produce balanced with the demand from the business
-
Prairie Chickens who survive long enough end up in the middle
- Because failure was punished and success could be achieved by sitting back and watching money pour in, the executives that made to to the top were those who avoided mistakes not those who made bold moves.
-
Managing to the values vs Making the numbers
- You cannot sacrifice the values to hit the numbers in the short term
- Managers who don't live by the values should be removed. Period.
-
Lead people, manage things
-
2 different roles for 2 different people
- Project Manager
- oversight of the delivery to the customer
- day-to-day issues & problems
- removing obstacles and facilitating flow of work
- Engineering Manager
- oversight of the system of software engineering
- lead & motivate people to do good work
- build the team into a learning organization
- The team reports to the leader, rather than the manager
-
New line managers need to learn to live vicariously through their staff
- Learning to settle for "good enough" rather than "perfec" (as they would do it themselves)
- occasionally, hands-on guidance may be needed
- Lead to believe through example
-
Compensate for Uncertainty with Leadership
- the discussion around defining how many good or experienced people are required for any given method is a red herring.
- the greater the uncertainty in a project, the more leadership is needed (at all levels) to compensate for it
-
Some Military Lessons
- Nobody gets left behind - "drive out fear"
- Everyone gets some sleep
- Everyone gets to eat sufficiently
- Separation of strategy, operations, and tactics are the three basic levels of delegation for any corporation
-
Failure tolerance
- More responsibility means that more people will act on their own initiative, and that inevitably means more mistakes
- If leaner, flatter structures are going to work, we have to invest a lot of effort in helping those in the front line to make the right decisions, not punishing them if they make the wrong ones
- Asking for help when in doubt must be seen by everyone as a sign of responsibility, not as a symptom of weakness.
- If you're trying to build a high-trust culture, but you've got 14 layers of hierarchy, there's a mismatch
-
Observations on "The Apprentice"
-
The show appears to have educated us on bad management
- mistakes edited out
- leaders taking care of their people considered boring
- identifying someone to be "sacrificed" for the survival of the others treats the symptom, not the cause
-
#2: On Management
-
Improving managers would have the greatest economic impact on software development
- "Poor management can increase software costs more rapidly than any other factor" (Barry Boehm)
-
Managers are responsible for the system
- people performing activities
- policies that govern, regulate and coordinate those activities
-
Management
- Goal setting
- decision making
- measurement
- analysis of feedback
- actions
- interventions
- investment strategy
-
Managers as Permission Giver
- People can tip the balance and cause a cascade of behavioural changes by either leading by example or giving permission
- "I give you permission to take the time to do designs"
-
Management misdirection: mechanisms to deflect blame / elude responsibility
-
Individual measurement is management misdirection
- Bad managers use it to know who's to blame
- Bad managers do not see it as their own failing that they don't develop their people
- Flipping the metric around: interpret the metric as the measuring the manager's ability
- individuals are almost never responsible for their own performance, but rather victims of the variation in the tasks that they had to perform (Deming)
- When you start measuring developers, you incentivize them to start hoarding, rather than sharing information
- individual measurement is also demotivational, as it is seen as invasion to privacy
- trading off quality in exchange for fast hacking sets the team for failure
- Line manager squeeze: setting an impossible tasks for line managers to accomplish: senior management diverts attention and deflects blame and criticism onto junior managers
-
Much of your team's performance is being constrained by policies
- Policies are under your control (or your boss' control)
- Just change the policies!
-
Two types of underperformers
- Performace is the manager's responsibility
-
Managers are responsible for the "can't do the job" employee
- The manager should never have hired them in the first place
- The employee is still trying to do their best, even when it isn't nearly good enough
- Managing the "gardener" out of the team is the manager's responsibility
-
For those who "won't do the job", the manager's responsibility is to deal with the "attitude" by making plain why and how they need to change
- Treat the person as bench slack, out of the critical path
- The person will either change their attitude and re-integrate into the team, or self-select out of the organization
- Learn to deal with dysfunction as a separate management problem, and focus on improving capability
-
#9: On Human Resources
- HR Myth #1: Merit-based pay
- HR Myth #2: Divide & Conquer
- HR Myth #3: Performance Buckets
- HR Myth #4: Tribal Markings
- HR Myth #5: More thoughts on Pay-for-Performance
- HR Myth #6: Where comparative pay scales came unstuck
-
Systems Thinking
-
#3: What Would Drucker Do?
- Drucker told us to lead people and manage things
-
The next great challenge: manage the knowledge worker for productivity
- Invisible work is impossible to manage
- Invisible work is easy to hoard and stockpile
- Excessive demand and invisible work result in overburdening
-
Effectiveness is a habit, a complex set of practices. Practices can be learnt
- Drucker leaves us hope: if we teach, coach, mentor, and instill the correct set of practices, effectiveness will follow
-
Workmanship must be encouraged, but it must always be related to the needs of the whole
- "I'm making a living" (just getting what I need out of the job)
- "I'm doing the best job of stonecutting in the country" (this is the problem)
- "I'm building a cathedral" (the true manager)
-
Developer as Executive
- Every line of code affects performance (functional or non-functional) of the product
- Every design decision potentially affects the ability of the business to respond to market demands
- if developers are simply left to design, develop, and test without supervision, individual developers are making "executive decisions" in their own, every day.
- Understand that each knowledge decision is an executive decision and put processes in place to control the quality of those decisions and ensure that they are aligned with the strategic direction of the business.
-
#4: Inspired by Deming
-
Demings teachings
- capability must be viewed in light of it variation, and that it isn't constant (or average)
- to truly respect people, managers must design a system that sets them up for success. To do so, one must understand the capabilities of the system, and the demands set upon that system
- 95/5 rule: 95% of the observed capability of the system is determined by its design, only 5% is affected by the capability of individual workers
-
2 management mistakes
- #1: Interfering when everything is normal (tampering - behaving in the way it is designed to work)
- #2: failure to intervene when a process is out of control (behaving differently from what is designed to do)
-
Choose to be inspired by Deming rather than dogmatically following his methods
- A narrow focus on reducing variation may not be optimal from a customer-service perspective
- Calculating control limits based on +/- 3 sigma may not be relevant in our world
-
Deming's thinking is very well aligned wkth Agile
- Quality is defined by the Customer, and not the spec
- Quality is conformance to process and not to spec
- Management is about managing the process
- By embracing variation and accepting it as inherent to the work, the people aspect of "individuals and interactions over processes and tools" is embraced
-
Kanban training is management training (in the Deming's sense)
- promotes understanding the system, explicitly defining its policies
- makes managers take ownership of system design
-
Variation
-
Knowledge work has high level of uniqueness to it. Variation is then inevitable.
- We need a probabilistic approach to managing software development rather than the predominantly 20th-century deterministic approach
-
To meet project promises and deliver on time, schedules must be buffered against common-cause variation
- This requires understanding an understanding of the team's historical capabilities and a prediction of their future capability
- To buffer for special-cause events may allow for face-saving, on time delivery, but it's very expensive
- Any reasonable senior manager should expect line managers to buffer common-cause variation appropriately, while accepting that unforeseeable special-causes can still make a delivery late. They should accept the outcome as a consequence of an appropriate risk-management choice and avoid attributing blame or fault
-
Understanding variation is the vital ingredient in driving out fear
- There will be fear at the staff level only if assignable-cause variation has been inadequately addressed through risk-management planning.
- The only fear should be on the impact of the event, and not the repercussions from managers
- There is no point in assigning blame for assignable-cause variation that is beyond the control of the team, the managers, or the organization. And there's never a basis for assigning blame for excessive chance-cause variation
- Large amounts of chance-cause variation are the norm in software development. If we can teach managers to see it for what it is, we can teach them to act appropriately. The result will be less fear in the workplace.
-
Quality as a competitive Weapon
- The Four States of Control helps us understand how to reduce fear in the org
-
Conformant quality means that customer expectations were delivered
- We can be there just by luck (in spite of lots of assignable-cause variation) - Brink of Chaos
- We can get stay there (Ideal State) by getting eliminating assignable-cause variation, and reducing chance-cause variation, or understanding it sufficiently to set proper expectations
-
If you can reduce your chance-cause variation, that moves the Spec Line to the right, essentially pushing your competitors into the Threshold State
- To do this, you need to change your process
- you need better technical practices and better, more consistent implementation of those practices
-
#5: Goldratt and His Theory of Constraints
- ToC gave us the model to look for explanations of why Agile works
-
Lesson #1: Small Batches
- instituting small batches (coupled with a focus on quailty) is often enough to bring big results (D. Reinertsen)
-
it is the size of the iteration or project that represents the amplitude of the control signal (the size of the feedback loop).
- The longer the amplitude, the more difficult the process is to control
- Small batches enable "conformant quality == on time, on budget, with required scope", because they reduce the likelihood that requirements will change (pg 108)
-
Lesson #2: Resistance to Change
-
A hero is the master of chaos
- Heros are heros because they delivery
- A hero measures their self-esteem by their prowess at putting out fires
- A hero doesn't want to be under control because their self-esteem will drop when they are no longer praised for being a hero
- The organization wants to be under control and to deliver predictably, but some staff members thrive on chaos and their status in the organization depends on it
- Senior management must start to reward people for behaviours that are congruent with controlled performance, and they must build self-esteem around that behaviour
-
Lesson #3: Don't assign blame
- Describe your challenges as system problems
- "I can't deliver to expectations because my inputs suffer from [this] excessive common-cause variation and [these] specific special-cause variances"
-
Socratic Method considered dangerous
- The person being questioned feels manipulated
- The method works when the relationship is a coaching relationship (the coachee is treated as an expert)
- The Socratic Method is considered dangerous when the inquisitor is an expert and the inquisition is designed to educate the other party.
- I think that using the Socratic Method as a teaching tool is best avoided altogether
- Kanban system design is about mapping the current practice and exposing it in such way that system effects are revealed for everyone to see, and in a way that connects with them emotionally as well as logically. A purely logical analysis, based on expert knowledge and experience and using the Socratic Method to reveal common system effects, is still likely to invoke a negative response.
-
When Policies move the bottleneck
-
Introducing a new policy can move the bottleneck, suddenly causing people downstream from it to become idle
- If this is not planned and understood in advance, it can lead to accusations, blame, and loss of trust
- The introduction of new policies should not be made locally; local benefit could be outweighed by negative system-wide effects
-
Variability & Drum-Buffer-Rope
-
The production rate can increase in a stable fashion only if you either
- increase the size of the buffer
- decrease the variability at the constraint (while avoiding moving the constraint to other part of the system)
-
Geeks don't like to be idle
-
"I've been under-utilized in this project" == "I had slack time" == you weren't the bottleneck
- Developers like the idea that success lives and dies with them: if they work more, software is done earlier
- Intellectual efficiency: the preference for bigger batches that allow for longer, focused period of work
- The solution is to provide for planned "bench" activities
-
Intangible CoS improves overall capability
- Reduces likelihood of overproducing customer work through large batches, leading to longer delivery times, and the cost of perishable knowledge
- It helps putting "slack time" to good use and reduces emotional resistance
-
Improving a Constraint
-
Measuring Capability
- To measure capability, simply observe the throughput of units of value over a period of time
- then, define capability in terms of a mean and a reasonable range around it (per unit of time)
-
Subordinating to Capability: this is how you identify the constraint
- The average capability of the whole system, shown at the output, is the average capability of the constraint
- I.e. if we observe throughput at the output, we don't really need to know where the constraint is
- We then need agreement from the upstream process to supply us with work at the same rate we can consume
- The constraint now will be revealed: all the other stages will have slack time
- Devs will start putting this slack time to good use, because they don't like to be idle
- Now we can apply the 5 Focusing Steps
-
Stop Estimating
- Estimates are inaccurate at best, pure fantasy at worst
-
The logical argument that is psychologically unacceptable
- Plan based on observed throughput capability and embrace the concept of natural variation
- The problem is that the spread of variation can be so great that customers are unwilling to accept plans that are based on such wide spread of variation
- The pragmatic alterative: offer a package of classes of service
-
Drive Variability out of the Bottleneck
-
The original thinking
- Driving variability out of the bottleneck is required for predictable delivery, since the bottleneck determines the performance of the system
- Also, if your bottleneck capability fluctuates significantly, the bottleneck might move somewhere else in the workflow, and now you don't know where it is again.
-
What was learnt since then
- large amounts of chance-cause variation are normal in knowledge-work
- shifting bottlenecks are a fact of life, and therefore attempting to contain variation at the bottleneck so it remains at a constant and predictable position is not practical
-
Evolution of TOC & Kanban
- Goldratt identified that the real constraint in change is emotional resistance. As a reaction, he developed the Thinking Process, which defines an outcome known as the Future Reality Tree (FRT)
- DJA chose to develop an evolutionary approach that doesn't define an outcome or prescribes a transition plan. It pursues a guided-evolution approach based on scientific understanding of the flow of work and the implementation of safe-to-fail experiments that guide the existing process in a series of steps
- Both the Thinking Process and the Kanban Method can be seen as evolving from a common ancestor (the Five Focusing Steps). The Thinking Process took the route of a planned transition, whereas the Kanban Method continued the evolutionary approach inherent in 5FS.
-
Process Batch & Transfer Batch: How long should the iteration be?
-
Process batch
- a batch of work that is done by a person, group, or system.
- they are grouped together for efficiency, or for reasons of constraints
- Every batch has a setup and cleanup cost
-
Transfer batch
- a batch that is transferred down the value chain and passes to another set of workers or to the end customer
- they tend to be optimized for the costs incurred by the next stage in the value chain
- the transaction costs associated with transfer batch can mean that the transfer batches have to be significantly bigger than the process batches
- Iteration and release sizes need to take all these costs into account, and that means they are different in every domain, ad potentially for every customer
-
#6: On Constraints and Transportation Systems
- Good Systems Thinking examples
-
Tribalism
-
#7: Recognizing Tribal Behaviour
-
Sense of belonging
- Identity marks within a larger organization are divisive
-
Emotional resistance should be trumped by a stronger emotion.
- people must be motivated by emotion in order to change behaviour
- logic doesn't motivate, but emotions will
- fear is the most common choice, but it comes with negative side effects
- Pride is strong, largely positive
- Hope is also strong
-
Tribalism
- Sense of belonging goes too far when it becomes tribalism rather than affinity and shared experience
- Your tribe will make enemies by exclusion
- We need to recognize tribalism as inevitable, genetically wired. Denying tribalism leads to dysfunction
- When tribes are warring,, the way to unify them is not to appeal to their intellect, but to create a super-tribe to which they can all affiliate
-
#8: Managing Tribes
- Change is the norm! There's really no TS+, it's an illusion
- Great leadership ensures just enough insecurity to keep innovation and risk taking at the fore while it controls the comfort that leads to backstabbing and infighting
-
Understand your Tribe
-
Agile Development
-
#10: Understanding Agile
-
Good, Fast, Cheap -- pick three!
- Companies that are built to last do not accept the "tyranny of OR"; instead, they embrace the "genious of AND"
-
Agile is really about having it all
- A core focus on quality and workmanship results in less escaping defects, freeing capacity to use it in more valuable work
- face-to-face communication & less bureaucracy produces faster lead times
- small, self-organizing teams reduce cost
-
Trust is the essence of agile
-
What is Agile?
- two schools of thought
- short feedback loops
- treating people as humans
- psychology has been acknowledged as important in software development since the 60s, but inclusion of sociology and an understanding that the interactions between people are a vital part of successful knowledge work is the novelty Agile introduced
- Trust is what makes Agile unique
- Where there's trust, there's less waste, less extra work, less verification, less auditing, less paperwork, less meetings, less finger-pointing, less blame storming
- The first goal of an Agile manager is to build trust between the engineering team and their customers, and within the team
-
Various aspects of Agile are about building trust
- frequent delivery
- focus on working code rather than documents
- face-to-face communication
- pair programming and peer reviews
- stand-up meetings
- shared responsibility & joint accountability
- direct collaboration with Customers
- tracking and reporting based on customer-valued functionality
- information radiators, big visible charts & complete transparency
-
Agile Litmus Test
- How much trust is there in the room?
-
The more trust there is, the fewer transaction costs there will be
- Less overhead for transaction costs means less waste
- Less waste means better economic outcome
- A better economic outcome should ultimately be the reason we adopt Agile
-
Instilling Discipline
- Traditional heavyweight methods replace professional discipline with process; they don't trust the discipline of workers
- When you have discipline, you don't need hierarchy
- Discipline is not a pre-requisite to Agile, but it's a necessary component (both at team and individual levels) for successful Agile adoption
-
Making progress with imperfect information
- while Trust is the key differenciator for Agile, the true essence of Agile is the concept of moving forward with imperfect information and being prepared to rework later
-
The core mistake was to assume that acquiring perfect information is possible in a complex endevour like software development
- Boehm's 1976 findings on cost of change favoured the pursuit of perfect information early in the lifecycle, leading to analysis-heavy processes
- But software development is too complex for that to work
- Kent Beck's intuitively refuted Boehm when framing XP
-
What is required is to probe for more information with partial or approximate solutions, and implement feedback loops to iteratively pursue the answer
- Boehm's later work on the Spiral Model during the 80s shows that he understood this; the rest of the industry didn't
- Rework is not "waste" in the traditional sense; rather, it's a mechanism for further information discovery
-
Real-options analysis
- the option we're buying is to deliver working code sooner
- the cost of the option is having a developer start work before the final spec is ready, which carries the risk of incurring rework that will make the whole effort longer than waiting for the full spec
- if all this rework is performed by a non-bottleneck resource, then it doesn't cost anything extra (non-bottlenecks have idle capacity)
- Developers can use that slack to perform required refactoring
-
What are the right conditions for Agile adoption?
- high social capital (trust)
- liberal thinking (open to new ideas, new thinking, and influence from outsiders)
-
#11: Agile Practices
-
Why we lost focus on Development Practices?
- Programming and programmers are not the constraining factor on improved performance
- with immature teams having sloppy development practices and poor initial quality (high defect insertion rates), development is the constraint. Agile has successfully fixed that!
- The rest of the community has moved its focus to other areas, most notably project management and business analysis, where the constraints are occurring
- As the wider community fixes the issues there, and improves flow of value, the focus will swing back to engineering and development practices
- In the meantime, it's a compliment not to be the focus of attention :-P
-
Agile Estimating & Why it is "muda"
-
traditional forms of estimation are a waste of capability
- When we spend time estimating something, and we use a capacity-constrained resource, we lower our capability
- Doing the estimate in advance before the work is actually done means that anything learnt from the estimating process is lost
- Often we estimate work that gets cut or doesn't get done at all because the estimate was too large!
-
Analysis is value-added work
- analysis creates knowledge that is used to deliver customer-valued functionality
-
replace estimation with a lightweight estimation method: a model and some data to develop a probabilistic view of the future
- Data about the throughput by unit of time
- an idea of the mean rate
- an idea of the spread of variation
- a buffer to account for variability
- Caution: don't use velocity data for short term planning !
-
replace estimation with analysis [just-in-time] to do the work
- Estimation is about quantification of cost; analysis is about decomposition and integration of a set of parts
- Analysis reduces variation and makes plans more accurate
-
#12: Defining Agile Leadership
-
Declaration of Interdependence
-
We need to treat project as flow problems
- The value chain creates consumer value by transforming ideas into working knowledge through a series of transformative steps
- Once you have a flow model, you can look for bottlenecks in the flow, and know where to focus to maximize ROI
- The primary role of the Agile Manager is to focus on what's obstructing flow
- the role of the Scrum Master
-
close partnership with customers
- "partner" means to align the supply chain's interests and focus on the end consumer
- putting the customer's skin in the game through inter-active partnership and frequent contact is what gives us the ability to deliver reliable results
-
we expect uncertainty and manage for it
- variation, change, unknowns, chaos
- Anticipation should enable swift, more agile reaction
- we view individuals as assets in a business, encouraged to take risks, make a difference, and innovate
-
optimal performance through group accountability and shared responsibility
- optimal performance is reached when everyone in the value chain partners together and has a vested interest in the success of the whole chain (as opposed of by focusing on individual efficiency)
- group accountability = "we are all in this together"
- We succeed together
- we accept responsibility for our failures
- by creating an environment of personal safety individuals as motivated to do the right thing for the whole system, since they don't need to make local decisions to protect themselves
- No need to ask for "courage" when we provide "personal safety"
-
effectiveness and reliability come from situationally specific strategy, processes, and practices
- it's OK to customize techniques, methods, practices, IF you can show it leads to more economically effective solutions
- unique processes evolved for fitness in their own environment
-
Kanban fully implements the DoI
-
Increase ROI though focusing on continuous flow
- by visualizing the workflow, limiting WIP, managing flow, measuring lead times, and optimizing value delivery with classes of service based on the economics of delay
-
Reliable results by engaging customers in frequent interactions
- Customer engaged through visualization
- By asking Customers to take shared ownership of the system and it's effectiveness, and to throttle their demand to the rate at which the system can deliver
-
managing uncertainty through iteration, anticipation, and adaptation
- Classes of service demonstrate anticipation of demand
- quantitative measurement, using statistical observation of capability, manages for uncertainty
- WIP limits and social interactions encourage adaptation
- Time-boxed increments are replaced with cadence
-
unleash creativity and innovation by recognizing individuals
- Limiting WIP creates slack, which creates space for creativity and innovation
- Making policies explicit empowers people to make their own decisions, and be creative about their process, and optimize the economic outcome
-
boost performance through group accountability and shared responsibility
- operations review allows a wider group of stakeholders to take shared responsibility for the effectiveness of the whole system
-
improve effectiveness & reliability through situationally specific solutions
- Start from where you are now and evolve from there
-
#15: On Roles, Responsibility, and Organizational Structure
-
ARCI (rather than RACI) is firmly a facet of the command-and-control management style
- In a command-and-control world, if no one is assigned as accountable (to give out orders) the work never gets done
-
Committed-Involved (pigs-and-chickens) removes the problem by merging doing with giving orders
- Those in the team doing the work (committed) are jointly accountable & responsible
- Those in the team not doing the work (involved) are simply consulted or informed
-
Line managers are "Chiglets"
- When an assignable-cause event happens and escalation is needed in order to remove the impediment and get work moving again, suddenly the line manager is a pig.
- Line managers live in a world that oscillates between two states, neer quite stable as either chicken or pig
-
The chicken/pig division is a direct impediment to successful enterprise Agile transformation
-
Negotiation vs collaboration
- Governing policies should be agreed upon collaboratively
- You must get everyone committed to delivering on business goals
- Then, everyone must be a pig
-
Transparency and Inclussion in Policy Making
- Giving stakeholders a say in setting policies and day-to-day transparency makes everyone a pig, and changes the relationship
- If stakeholders are kept "chicken", they will feel they can't really get a sense of what's going on and they will start intruding, eroding the relatioship
- Lack of inclusion coupled with lack of transparency breeds fear in managers, often causing them to react with inaction and immobility.
- Conclusion: there are no chickens.
-
#13: Lean
-
Inventory is more than Documentation
- Early use the Lean Manufacturing metaphor led to interpret that inventory is documentation, and needs to be eliminated
-
Inventory is all the work flowing through the system but not yet sold
- Documentation is only part of inventory
- WIP is inventory
- Unfinished goods are inventory
-
Waste elimination is a tertiary concern
- Waste should not be reduced to the detriment of flow, and smooth flow can be sacrificed to improve value delivery
-
Lean Decision Filter
- Value trumps flow
- Flow trumps waste elimination
- Eliminate waste to improve efficiency, do not pursue economy of scale
-
Use of Cumulative Flow Diagrams (CFD)
-
Burn up charts are not sufficient for managing a project
- they have no concept of WIP
-
projects tend to follow an S-Curve
- projecting the anticipated end-date is problematic if you just draw a linear trend
-
WIP is knowledge inventory, and is perishable
- (1993) Marvin Patternson: design as an information discovery process
-
(2003) Mary Poppendieck: all software development is design
- We can model the flow of value through a software engineering system as the gradual reduction of uncertainty and the discovery or more and more detailed information until working code is produced
-
(1997) Donald Reinertsen: the value of information depreciates over time
- To have real value, a design must be appropriate for its time, and come to market within its window of appropriateness
- knowledge and information are perishable
- the faster requrements can be realized as working code and brought to market, the more value will be delivered
- Lead time for turning an idea into working software is then critical for the financial success of any software activity
-
WIP is a leading measure
- The size of the inventory is directly proportional to the average lead time (Little's Law)
- WIP can be used to predict lead time and delivery date
-
Dark Matter
-
Project dark matter is unrecognized , client-valued functionality
- Requirements that your customer knows to be there, but couldn't see when defining the requirements
- It will look like scope-creep, but the customer denies having asked for any changes
-
Is always there, embrace it!
- If part of the essence of agile development is to make progress with imperfect information, dark matter is inevitable. Attempts to prevent it destroy the very agility you're trying to achieve.
- Analysis can never be perfect. When you can accept that, and accept the probabilistic paradigm, you can move forward earlier and complete sooner
-
Use two questions to calculate a scope buffer
- How certain are we about this domain?
- How comfortable are we that we caught all the detail while doing the domain modeling and client-valued functionality identification?
-
Enter a "Dark Matter" line in earlier project plans, and replace it later with new things that are discovered
- in the CFD, dark matter should be plot different from "new requirements"
- understand Cost of Delay, and recognize that earlier, faster progress to a partial solution is ofteh better than delaying to acquire better information leading to a more solution.
-
The "Standard Work" concept is dangerous when translated to knowledge work
-
centralized tool decisions is a manifestation of the cost accounting fallacy
- There's economy of scale for a larger license purchase
- But, what does it do to thorughput
-
centralized tool standards represent a constraining policy
- They disempower development managers and developers, creating a poor environment for optimal productivity
- demoralizes workers and constraints performance
-
Software process choices should be aligned to workflows
- the market into which the product is deployed should be well understood
- the minor cost-efficient advantage of the whole staff being trained in one method is far outweighed by the problems created, and the cost in ROI, by the use of the wrong process for the job
-
Genchi Gembustsu ("going to the source")
-
imagination-based techniques deliver a better payback than actually "going to the source"
- Lean Startup: Don't just go to the source beforehand; rather, spend very little time and money and go to the source with something that works and gets feedback.
- going to the source (sitting with the users) can be misleading if it leads to observing a badly broken system
-
Set-Based Design isn't relevalt in sofware development (Reinertsen)
- SBD has made little progress in software development
- Perhaps the reason is that sofware is inherently "soft" and the cost of change is generally lower than the cost do developing parllel alternative solutions
- Software can be architected to leave options open and defer design decisions, or decisions can be made and then changed at relatively low cost
-
Good vs Bad variation
- Organizing for routine work: drive out variation
- Organizing for innovative work: encourage variation
-
#14: Random Thoughts on Risk
-
Two definitions of "risk"
-
event-driven risk
- Common in PMI lierature, but much more narrow
-
Risk is an event that will hinder or affect the successful completion of a project
- it has a likelihood of occurrence, and an impact
- it can be managed through efforts to reduce likelihood or mitigate impact
-
uncertainty-driven risk
- much broader meaning
-
Risk refers to the uncertainty being managed by the enterprise as a whole, rather than specific events
- wider economic factors
- the competition
- the quality of the product
- how well prospective customers like the product, and how quickly they adopt it
- our ability to understand the market
- our capability to deliver against fluctuating demand
- ability to react to unfolding events
- our propensity to innovation
- our strategic and market positioning
- Risk management is everything we do to make our business successful
- By implication, all knowledge workers are risk managers
-
Risk Planning
- how to deal with variation
- how to set expectations accordingly (in the presence of variation)
- how to accommodate variation as if it were natural (because it is!)
-
Risk: how long?
- "Approximately 44 minutes" is variation-aware language
-
Risk: what should we build?
-
strategic positioning: your business can be (one of)
- a cost leader (there can be only one)
- a niche player (with market share typically less than 10%)
- differentiated (many forms of differentiation)
-
what features do you need?
- If you're a cost leader, all you need is the table-stakes, and possibly Cost Reducers
-
if you're an innovator
- Differentiators
- Spoilers
-
An enumeration of [Table Stakes, Differentiator, Spoiler, Cost Reducer] allows you to align strategic positioning directly with our maketing prodict mix selection choices
- works better than "prioritization"
- Risks should not be "prioritized"; rather, they should be allocated
-
Risk: future changes in design
-
We cannot generalize about the cost of change
-
Both curves are wrong
- Traditional guidance (Boehm's cost of change curve) suggests that options for future changes are ALWAYS worth buying (leading to BDUF)
- Kent Beck's YAGNI heuristic suggests that options for future change are NEVER worth buying, because changes later in the lifecycle can be made lower
- The cost of change depends on the position of the constraint in the workflow, the variability inherent both in the domain and the method, and the skill level of the practitioners performing the work
- Getting software developers to think abut early-lifecycle decisions as "options" would be a step forward
-
Risk: building something the market doesn't want (market risk)
-
what's the likelihood and impact of change on different kinds of requirements?
- Table stakes are unlikely to change
- Cost savers may suffer change more often than table stakes, but it's still rather unlikely
- The risk with spoilers is that they become table stakes by the time they are introdiuced
- Differentiators are the most risky because they may turn out to be features customers don't want
-
We should delay risky items that are likely to suffer change until the last possible moment
-
commodities first, differenciators later
- proper market segmentation will reveal are truly table-stakes, and for whom
- developing differentiators early to test them confuses research with product development. These are parallel activities
-
two reasons NOT to pursue a value-first strategy
- value is hard to define, and will have high variability in it
- market risk that puts the viability of the feature at risk. It's bad use of option theory to prioritize something before we have enough information to be sure we really want the feature delivered.
-
Banish "priority" and "prioritization"
-
Priority is a "proxy variable" (Reinertsen)
- masks real information, like cost of delay, required skills, technical impact, transaction cost, etc.
- find ways to capture and visualize true risk information that the business is managing
-
"Priority" then becomes something that can be decided dynamically when a pull decision is made
- Prioritization is then not needed
- Backlogs can remain an unordered list
- instead, we can use "selection", "scheduling", "replenishment"
-
Prioritization is wasteful
- It encourages roles/positions for people who do mostly non-value-added coordination work, and they add to the transaction cost of flowing work through the system
-
#16: On Transition Initiatives
-
The Kanban Method is a truly agile approach to change management
- attempts to change towards a defined process is likely to be met with resistance.
-
the irony of "agile transitions" is that they are based on traditional change management methods
- the defined process prescribed in a textbook is to be implemented over a transition period that integrates education, training, practice and coaching
- this goes against the agile core concept of making progress with imperfect information, which imply that we cannot know everything in advance, and that predicting the future is a low-leverage activity
-
No mode quality initiatives
-
The problem with "quality initiatives" is that change does not last
- Just say no
-
Two likely results of a process-led change initiative (in which responsibility for change is seen as delegated to a group)
- attitude of "improvement isn't my responsibility"
- resistance to changes that are seen as imposed from the outside
-
The fix: quality and continuous improvement is everyone's business
- change must be cultural and that the focus of any management-led initiative must be to drive cultural change towards a culture of continuous improvement
-
Institutionalization of Culture vs Prescribed Process Change
-
At Corbis, DJA opted for the longer game of cultural change instead of prescibing a method
- the J-curve effect would have been too deep and too long
- instead, a kaizen culture was encouraged: grassroots, shop-floor improvement suggestions within a structured objective framework of management metrics
- monthly all-hands ops reviews
-
Gradual, sustained improvement, not knowing how it's going to turn out
- emergent results
- no testable definition of DONE
-
there was wide recognition of improvements, but not "hyper-productivity"
- higher degrees of autonomy, delegation & empowerment, self-organization
- a lot of successful software releases
- DJA concluded that it takes longer to achieve hyper-productive results with cultural change
-
The hope was that changes would survive longer, but they started to degrade after DJA left in 2008
- Management decided to reduce the frequency in ops reviews, signaling a change in culture
- It sent the signal that management didn't care much about process improvement
- Corporate culture emerges from the sum of management actions and decisions. It only takes a few decisions and actions to significantly change culture (for better or worse)
-
The relevance of (CMMI) Level 4
- Level 4 is often seen as a level to skip (from 3 go to 5)
-
But organizations want to be predictable, to deliver on business goals within tight financial controls and corporate governance
- strong delivery with low variability
- proactive
- drive down cycle times using quantitative management
- Subtopic 4
-
Six-Month Review
-
Acceptance Tests for an Agile process
- Is software being released into production every two weeks or less?
- is the quality of the software high?
- is the technology organization able to respond to changes in the business rapidly?
- The AT does't include the test of doing things that are "recognizable" agile practices
- There is more than one way to achieve agility