search for books and compare prices
Tables of Contents for Software Craftmanship
Chapter/Section Title
Page #
Page Count
Foreword
xiii
 
Preface
xv
 
Part 1 Questioning Software Engineering
1
30
Understanding Software Engineering
3
8
The Paradox of Software Engineering
4
3
The Modern Definition of Software Engineering
7
1
Is Software Engineering a Good Choice for Your Project?
8
3
The Problems with Software Engineering
11
6
Can Software Development Be Made Systematic and Quantified?
13
2
The Hazards of the Good Enough Software Approach
15
1
What Is the Alternative to Software Engineering?
16
1
Understanding Software Development
17
8
Software as Capital
18
2
Does the Division of Labor Work for Software Development?
20
1
One Size Does Not Fit All
21
2
Finding a More Applicable Metaphor Than Software Engineering
23
2
Finding a Better Metaphor Than Software Engineering
25
6
The Craft of Software Development
26
2
Parallels with Traditional Craftsmanship
28
1
The Resurgence of the Craft of Software Development
29
2
Part 2 Software Craftsmanship
31
14
Putting People Back into Software Development
33
4
Craftsmanship Is About Getting Better at Software Development
34
1
Craftsmanship Encourages Developers to Write Great Software
35
1
A Call to Arms
35
2
Craftsmanship Is the Opposite of Licensing
37
8
Craftsmanship Is Personal
37
2
Licensing Is an Illusion
39
2
Craftsmanship Focuses on the Individual
41
4
Part 3 Implications of Software Craftsmanship
45
64
How Craftsmanship Affects the Users of Systems
47
8
Software Craftsmanship Works Because Software Is Easy to Copy
48
2
Craftsmen Have a Different Relationship with Their Users
50
2
Great Software Deserves to Be Signed
52
1
Craftsmen Need Demanding Users
53
1
Software Craftsmanship Leads to Collaborative Development
54
1
Customers Have a Different Relationship with Craftsmen
55
14
Setting Realistic Delivery Dates
55
1
Exposing the Fallacy of Good Enough Software
56
3
Allowing Software Craftsmen to Take Credit for Their Work
59
1
Start Exploiting the Difference in Productivity Between Developers
60
1
But How Do We Know How Good a Developer Really Is?
61
2
Customers Make a Cost / Quality Trade-off When Choosing Craftsmen
63
2
Customers Have Long Term Relationships with Software Craftsmen
65
2
Customer Interests Are Aligned with the Interests of Software Craftsmen
67
2
Managing Craftsmen
69
10
Software Craftsmen Are Not Hired Hands
70
1
Good Developers Are More Valuable Than Their Managers
70
1
Software Craftsmen Have a Different Relationship with Their Managers
71
1
Managing Great Developers Is a Pleasure and a Privilege
72
1
Software Craftsmen Like Creating Applications
73
2
Managing Software Craftsmen Is Different
75
1
Software Craftsmen Push for What They Need
76
3
Becoming a Software Craftsman
79
6
Software Craftsmanship Is a Rejection of Narrow Specialization
80
1
Craftsmanship Requires Dedication
81
1
How Does a Person Become a Software Craftsman?
81
2
The Craft Tradition Has Endured for Centuries
83
2
Mastering the Craft
85
8
What Does a Master Software Craftsman Look Like?
86
1
Use Your Old-timers
86
1
Mastery Implies the Use of Stable Technologies
87
2
Developing Mastery Takes Time
89
1
Mastery Implies Taking Responsibility for Passing on the Craft
90
3
Apprentice Developers
93
12
We Must Reverse the Decline in the Quality of Developer Training
93
4
Becoming an Apprentice Is a Significant Step
97
1
Apprenticeship Instills Lifelong Learning
98
2
The Role of Apprentices
100
2
An Apprenticeship Is a Significant Investment of Time and Energy
102
3
Journeymen Developers
105
4
Where Journeymen Fit in the Craft Tradition
106
1
Journeymen Developers
106
1
Journeymen Are Focused on Delivering Applications
107
1
Journeymen Play a Key Role in Software Craftsmanship
108
1
Part 4 Repositioning Software Engineering
109
30
Software Engineering Projects
111
6
Software Engineering Is Designed for Large Systems Projects
112
2
Software Engineering Projects Are Diverse and Varied
114
3
Hazards of the Software Engineering Metaphor
117
14
You Cannot Do Software Engineering on a Low Budget
117
2
Software Engineering Encourages Scientific Management
119
2
Software Factories: The Production Line for Software
121
1
Reuse over Time Is Hazardous
122
1
The Myth of the Standardized Software Development Process
123
3
Software Engineering Forces Us to Forget the Individual
126
2
We Need More Variety in Our Development Processes, Not Less
128
3
Learning from Software Engineering
131
8
Size and Complexity Matter
131
2
Applications Need to Be Well Structured
133
1
Change Can Be Expensive Unless You Allow for It
133
2
Communication Inside the Team and with Users Is Crucial
135
1
Producing Accurate Estimates Is Very Expensive
136
3
Part 5 What to Do on Monday Morning
139
40
Experience---The Best Indicator of Project Success
141
14
Choose Software Craftsmen Based on Their Reputations
142
1
Evaluate Craftsmen Based on Their Reputations and Portfolio
143
1
Auditioning a Software Craftsman
144
1
Let Your Software Craftsman Pick the Rest of the Development Team
145
2
Collaborative Development
147
1
Avoid Bleeding-Edge Technology If At All Possible
148
1
Paying for Experience
149
3
Be Prepared to Be Amazed
152
3
Design for Testing and Maintenance
155
16
Think Applications, Not Projects
156
1
Maintenance Teams Should Refuse to Accept Bad Applications
157
1
Design for Maintenance
158
2
Software Craftsmen Prefer Nonproprietary, Open Source Tools
160
1
Great Software Is Global
161
2
Software Craftsmen Need to Fight Back Against Planned Obsolescence
163
1
Great Software Needs to Be Given a Great User Interface
163
1
Maintainable Software Is Easy to Diagnose
164
1
The Hazards of Outsourcing
165
2
You Can Still Use Outside Craftsmen to Create Your Application
167
1
Maintenance Is the Most Important Part of the Life of Any Application
167
2
Not All Software Has to Be Maintainable
169
1
Design for Testing and Maintenance Is Not Rocket Science
169
2
Perpetual Learning
171
8
Creating a Learning Environment
171
2
Mastering the Craft of Software Development
173
1
Choose Training Courses Very Carefully
174
2
Encourage Your People to Be Visible in the Software Development Community
176
2
Becoming a Reflective Practitioner
178
1
Epilogue
179
2
Acknowledgments
181
2
Index
183