Code Complete 2
The first talk of today was CodeComplete 2 by Steve McConnell. His popular book Code Complete has beed reedited, and he is talking about it, here are my notes about it.
First Version Written in 1993 95% is still OK
Book companion WebSite https://cc2e.com/
Worst Ideas
1990s
- Code & fix
- Design up-front
- Design for speculative Requirements
- Components will solve of your 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
- Offshore outsourcing
- Automatic Programming
- Uninformed use of XP
- Calling everything agile
Decade Advances
- Ability to create larger code aggregations
- DailyBuild and smoke test
- Standard Libraries
- Visual Basic (case statements are better, biggest code base)
- Open Source (learn from available code, read code)
- The web for research
- Incremental Development
- Test-First Development
- Refactoring as Discipline (not so good as total design strategy)
- Faster computers (forget about performance while writing code, only focus on clearity)
Ten realities
- Software Construction. Distinction between Activity and Phases.
- Individual Variation is significant.
- Key skills of an expert programmer (Design,, out errors from reqs, coding, naming, reading, unit testing, debugging..)
- Personal discipline matters (refactoring, prototyping, optimization, minimal complexity)
- XP requires discipline and courage
- Simplicity vs Complexity.
- Why projects fail
- Focus on read-time not write-time convenience
- Bad requirments
- OutOfControl (Too complex code)
- YAGNI and design for speculative requirments
- Design is important (Extremes are not productive)
- Technology waves affect construction
- Incremental Approaches works best
- The tool box metaphor (cont to be illuminating)
- Software essential tensions remain
- Rigid Plans vs. Improvisation
- Planning vs. Fortune Teller
- Creativity vs. Structure
- Discipline vs. Flexibility
- Quantity vs. Quality
- Process vs. Product
- Optimizing vs. Satisficing
Q&A
- Should Doc be in a devs skils?
- No, the important thing is to memorize important decisions, good code requires few docs
- Is estimation an important skill for developers? Yes
- Opinion on Pair Programming
- Format inspections are better way to find software.
Comments
- Anonymous
June 15, 2009
PingBack from http://workfromhomecareer.info/story.php?id=7617