Sie sind auf Seite 1von 32

Sam Hwang

2010 Mar
Working Harder

= X

Time Time Time


Actual Performance Effort Capability

Working Smarter

= X

Time Time Time


Actual Performance Effort Capability
Project Controls
Project Stresses
Collaboration
User Requirements
Methodology
External Dependencies
Expertise
Competition
Decision Making
Disruptive Technologies
Leadership
Disruptive Business Models
Culture
Cost Management
Simplicity
• A User need and vision so it is clear what is being built

• Rapid refinement to adapt to change

• A Close relationship with users so they can provide


timely feedback

• Continual learning to refine the product so it best meets


user needs while avoiding unnecessary features
• Continual Refinement of the product & project practices

• A Working product at all times

• A Continual investment in & Emphasis on design

• Valuing Defect Prevention over defect detection


Features Bug-fixing
Working
Product
Defect Design
Prevention Emphasis
Continual
Refinement
Ultimate goal

Flexibility Working Agility


Product

Virtually Shippable
• No ‘Broken Windows’
• Be Uncompromising about Defects
• ‘Barely sufficient’ Documentation
• Continuous Integration
• Nightly Builds
• Prototyping
• Don't Neglect Performance
• Zero Tolerance for Money and Resource Leaks
• Coding Standards and Guidelines
• Adopt Standards (Concentrate on Your Value-Add)
• Internationalize from Day One
• Isolate Platform Dependencies
Number Number
of Defects of Defects
Found Found

Developers QA Customers Developers QA Customers

Defect Defection Defect Prevention

• Code then Fix • Finding defects


• Manual Testing • Automated Test
• Low-value manual testing • High-value manual testing
• Ruthless Testing

• Use Available Tools

• Pair Programming & Code Reviews

• Lightweight Root-Cause Analysis


• Software must be designed to support and enhance changeability

• Well- designed software is useful and easy to:

• Use
• Maintain
• Extend
• Understand.

• The elements of design in sustainable software development are:

• Working software
• The process of doing the design
• Collaboration and face-to-face communication
• Simple design
• Design vision
• Guiding Principles
• Simple Design
• Refactoring
• Design Pattern
• Frequent Rapid Design Meetings
• Commitment to Rearchitecture
• Design for Reuse
• Teams need a way to balance short-term requirements and
long-term needs: to ship their product as soon as they can while
accepting, anticipating, and even welcoming change
• The core agile software development practice of iterative
development encourages continual refinement

• In agile development, teams work from a simple and clear


vision and deal with change through frequent iterations; the goal
of each iteration is to deliver something useful to customers

• The main advantage of agile methods is that they help teams


manage uncertainty and change early and throughout the
project
• Iterative Development

• Release Planning

• Daily Standup Meetings

• Retrospectives

• Coaching & Team Development

• Make Key Metrics Visible


• Organizations are complex simply : the mix of different people

• Software people :

• Come from many backgrounds


• Tend to be introverts
• Don't like being told how to work

• Many organization do not pay attention to key people issues

• Professional development and leadership


• Focus on projects, schedules, and results

• Software education lacks standards and a poor understanding of


what the basic are
• Culture Factors:

• Leadership
• Sense of urgency
• Executive support

• Culture Enablers:

• Persistence
• Training
• Continuous ‘wins’
• Positive reinforcement of desired behaviors
• Communication
• Background
• Software development is a complex undertaking
• The method : code-then fix or waterfall method

• Unsustainable Development
• Too many projects can’t cope with the complexity of
the software development taking
• The teams are largely only able to respond to
changes in their ecosystem
• The most effort goes toward adding features and
fixing bugs
• These projects respond to complexity with complex
solutions that are unreliable(buggy), brittle(break easily),
and unable to support future change
• Sustainable Development
• Teams are able to be proactive about changes in
their ecosystem
• Requires acknowledging the need for change
• It means that adapting a different mindset and being
uncompromising

• The Principle of sustainable Development


• Having a working product every day
• Defect prevention
• Design emphasis
• Continual refinement
• Having a working product every day
• Even if it is not functionally complete,
• gives teams flexibility
• allows teams to be much more responsive to
changes in their ecosystem

• Defect prevention
• A change in mindset for virtually all teams
• Central to defect prevention:
• the practice of ruthless testing
• computers are relied upon to do the repetitive
and boring testing tasks that people do today
• Design emphasis
• Good design is required to ensure that the period is
designed to promote future maintainability and
modifiability
• Simple design, refactoring and design patterns all
play important role in design
• Every project and team has to find the right balance
between iterative design and up-front design

• Continual refinement
• Applies to how the project is planned and tracked
through iterative development
• Team can continually enhance its development
processes and collaboration

Das könnte Ihnen auch gefallen