Software Construction (Voice of Experts) - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Software Construction (Voice of Experts)

Description:

It's better to work smart and hard (Microsoft) ... Code & fix 'All design up front' programming. Design for speculative requirements ... – PowerPoint PPT presentation

Number of Views:44
Avg rating:3.0/5.0
Slides: 31
Provided by: mhk9
Category:

less

Transcript and Presenter's Notes

Title: Software Construction (Voice of Experts)


1
Software Construction(Voice of Experts)
  • Myung Ho Kim
  • National Technology Officer (NTO)
  • Microsoft Korea

2
Agenda
  • Myths of Rapid Software Development
  • Realities of Modern Software Construction
  • Workplace Demons and Code of Ethics

3
Myths of Rapid Software Development (RD)
  • Rapid development is a new issue
  • Productivity is about the same at every org.
  • Working hard promotes rapid development
  • Short estimates produce short projects
  • Productivity can be improved tactically, on a
    project-by-project basis
  • You can trade-off quality for schedule or cost
  • Customers and managers want short schedules
  • Smart developers exert the biggest productivity
    impact
  • Software processes apply only to large,
    old-fashioned, bureaucratic projects
  • Systematic development approaches hurt morale

4
1. Rapid development has been an issue for 30
years!
  • Software crisis has never been overcome

5
2. Productivity varies greatly
  • 201 variations in productivity between different
    programmers
  • 101 variations in productivity between different
    companies working in the same industries
  • Organizations that focus on software best
    practices report improvements in their own
    productivity of 2-5x over time

6
3. Working hard is not enough
  • Whos right at all?
  • Its better to work smart than to work hard (Old
    saying)
  • Its better to work smart and hard (Microsoft)
  • Its better to work smart and hard and long
    (Amazon.com)
  • Working just hard and smart usually means working
    dumb!
  • The average project spends 40-80 of its budget
    on unplanned rework (defect corrections) working
    dumb
  • Work smart, not hard turns out to be the right
    idea after all

7
4. Short estimates increase cost and schedule
  • Estimates must be made accurate before rapid
    development is achieved
  • This typically means increasing estimates
  • Common practice is under-estimation
  • This is hard because people want to believe they
    will develop software faster than they usually do

8
5. Improving productivity is primarily an
organizational strategy
  • Productivity is affected by organizational
    influences that are hard to change on a
    project-by-project basis
  • In software, past performance is your best
    indicator of future performance
  • We werent all stupidity yesterday
  • We arent 500 smarter today
  • Assume no more than 10 improvement in
    productivity from one project to the next
    considering all factors combined!

9
6. Quality explains it all
  • When organizations focus on quality, they
    typically improve in all categories at once

10
7. People want many different kinds of rapid
development
  • Shortest possible schedule
  • Least risk of overrun
  • Better schedule visibility
  • Better schedule predictability
  • Reduced risk of project cancellation
  • Decreast cost

11
8. Smart individuals dont guarantee rapid results
  • A lot of truth to this exists
  • 201 difference in productivity among programmers
    with similar experience levels
  • Similar differences in design quality, program
    size, debugging performance, and debugging
    effectiveness
  • But
  • Team cohesion matters at least as much
  • Organizational characteristics make a significant
    difference too

12
9. Good processes are based on good judgment
Source Adapted from Telcorida Technologies The
Journey to High Maturity, Bill Pitteman, IEEE
Software, July 2000
13
10. Whats really bad for morale?
  • Long hours
  • Unrealistic schedules
  • High stress
  • Feeling of low productivity
  • Working on poor-quality software

14
Realities of Modern Construction (CC2)
  • The worst construction ideas of the 1990s and
    2000s
  • A decade of advances in construction
  • 10 realities of modern software construction

15
Some of the worst construction ideas of 1990s
  • Code fix
  • All design up front programming
  • Design for speculative requirements
  • Components will solve all our construction
    problems
  • Automatic programming
  • Uninformed use of the waterfall model
  • Calling everything object-oriented

16
Some of the worst construction ideas of 2000s
  • Code fix
  • No design up front programming
  • Planning to refactor later
  • Offshore outsourcing will solve all our
    construction problems
  • Automatic programming
  • Uninformed use of Extreme Programming
  • Calling everything agile

17
Worst Ideas, 1990s vs. 2000s
  • 1990s
  • Code fix
  • All design up front programming
  • Design for speculative requirements
  • Components will solve all our construction
    problems
  • Automatic programming
  • Uninformed use of the waterfall model
  • Calling everything object-oriented
  • 2000s
  • Code fix
  • No design up front programming
  • Planning to refactor later
  • Outsourcing will solve all our construction
    problems
  • Automatic programming
  • Uninformed use of Extreme Programming
  • Calling everything agile

18
A Decade of Advances in Software Construction
  • Design has been raised a level
  • Daily build and Smoke test
  • Standard libraries
  • Visual programming innovation
  • Nice community of programmers
  • The Web, for research
  • Widespread use of Incremental development
  • Test-first development
  • Refactoring as a discipline
  • Faster computers

19
10 Realities of modern SW construction
  • Construction is a legitimate topic
  • Individual variation is significant
  • Personal discipline matters
  • A focus on simplicity works better than a focus
    on complexity
  • Defect-cost increase is alive and well
  • Importance of design is well perceived
  • Technology waves affect construction practices
  • Incremental approaches work best
  • The toolbox metaphor continues to be illuminating
  • Software essential tensions ever grow

20
1. Todays Software Construction
21
2. Key skills of an expert programmer
  • Designing
  • Flushing out errors and ambiguities in
    requirements
  • Coding (naming, formatting, commenting)
  • Reading and reviewing code
  • Integration
  • Debugging
  • Unit testing
  • Teamwork
  • Using tools for all of the above

22
3. Areas where discipline matters
  • Refactoring
  • Prototyping
  • Optimization
  • Minimal-complexity designs specifically
  • Managing complexity generally

23
4. Simplicity vs. Complexity
  • Why do projects fail?
  • Focus on read-time convenience, not write-time
    convenience
  • YAGNI (You Arent Gonna Need It) and design for
    speculative requirements

24
5. Defect-Cost Increase
25
6. Design extremes are not usually not productive
  • All design up front vs. no design up front
  • Entirely planned vs. entirely improvised
  • Pure iterative vs. straight sequential
  • All structure vs. all creative
  • Document everything vs. document nothing

26
7. Effect of Technology Waves on Construction
  • Definition of technology wave
  • Early-wave characteristics
  • Mature-wave characteristics
  • Late-wave characteristics
  • Construction is affected by technology more than
    you usually think
  • Technology can be addressed in terms of general
    principles

27
8. Perspective on Incrementalism
  • The pure waterfall model is not at all
    incremental or iterative which is why it hasnt
    worked very well
  • Spiral development is highly incremental and
    iterative, which is part of why it does work well
  • All projects will experience iteration at some
    point
  • Think about where and when in your project you
    will get your incrementalism cheaply, or
    expensively?

28
9. Toolbox Metaphor
  • Whats best? Agile? XP? Scrum? DSDM? CMM?
  • Toolbox explains theres no one right tool for
    every job
  • Different industry segments will have different
    tools and even different toolboxes
  • Whats in the Software Engineering Toolbox?
  • Best practices
  • Lifecycle models
  • Templates, checklists, patterns, examples
  • Software tools

29
10. Softwares Essential Tensions
  • Rigid plans vs. Improvisation
  • Planning vs. Fortune telling
  • Creativity vs. Structure
  • Discipline vs. Flexibility
  • Quantitative vs. Qualitative
  • Process vs. Product
  • Optimizing vs. Satisfying

30
Watch out those Workplace Demons!
  • Demons addressed (either explicitly or
    implicitly) in the Software Engineering Code of
    Ethics
  • Dishonesty
  • Gossip
  • Backbiting
  • Intolerance
  • Sexism
  • Sloppiness
  • Inability to Speak to Power
  • Carelessness/Mindlessness
  • Jealousy
  • Lack of Respect for the Other
  • Blaming
  • Non-conformity
  • Please come out from the Color of the Night, and
  • Learn how to transform those demons into positive
    energies
Write a Comment
User Comments (0)
About PowerShow.com