Title: Software Construction (Voice of Experts)
1Software Construction(Voice of Experts)
- Myung Ho Kim
- National Technology Officer (NTO)
- Microsoft Korea
2Agenda
- Myths of Rapid Software Development
- Realities of Modern Software Construction
- Workplace Demons and Code of Ethics
3Myths 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
41. Rapid development has been an issue for 30
years!
- Software crisis has never been overcome
52. 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
63. 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
74. 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
85. 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!
96. Quality explains it all
- When organizations focus on quality, they
typically improve in all categories at once
107. 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
118. 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
129. Good processes are based on good judgment
Source Adapted from Telcorida Technologies The
Journey to High Maturity, Bill Pitteman, IEEE
Software, July 2000
1310. Whats really bad for morale?
- Long hours
- Unrealistic schedules
- High stress
- Feeling of low productivity
- Working on poor-quality software
14Realities 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
15Some 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
16Some 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
17Worst 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
18A 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
1910 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
201. Todays Software Construction
212. 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
223. Areas where discipline matters
- Refactoring
- Prototyping
- Optimization
- Minimal-complexity designs specifically
- Managing complexity generally
234. 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
245. Defect-Cost Increase
256. 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
267. 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
278. 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?
289. 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
2910. 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
30Watch 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