Clean Coder - Verhaltensregeln für professionelle Programmierer

von: Robert C. Martin

mitp Verlags GmbH & Co. KG, 2014

ISBN: 9783826632082 , 216 Seiten

Format: PDF, ePUB, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 34,99 EUR

Mehr zum Inhalt

Clean Coder - Verhaltensregeln für professionelle Programmierer


 

Cover

1

Titel

5

Impressum

6

Inhaltsverzeichnis

9

Vorwort

15

Einführung

21

Danksagungen

25

Über den Autor

29

Auf dem Titelbild

31

Kapitel 1: Professionalität

39

1.1 Seien Sie vorsichtig, wonach Ihnen verlangt

39

1.2 Verantwortung übernehmen

40

1.3 Erstens: Richte keinen Schaden an

42

1.3.1 Beschädige nicht die Funktion

42

1.3.2 Beschädige nicht die Struktur

45

1.4 Arbeitsethik

47

1.4.1 Sie sollten sich in Ihrem Bereich auskennen

48

1.4.2 Lebenslanges Lernen

49

1.4.3 Praxis

50

1.4.4 Teamwork

51

1.4.5 Mentorenarbeit

51

1.4.6 Sie sollten sich in Ihrem Arbeitsgebiet auskennen

51

1.4.7 Identifizieren Sie sich mit Ihrem Arbeitgeber bzw. Kunden

52

1.4.8 Bescheidenheit

52

1.5 Bibliografie

52

Kapitel 2: Nein sagen

53

2.1 Feindliche Rollen

55

2.1.1 Was ist mit dem Warum?

58

2.2 Hoher Einsatz

58

2.3 Ein »Teamplayer« sein

60

2.3.1 Versuchen

62

2.3.2 Passive Aggression

64

2.4 Die Kosten eines Ja

65

2.5 Code unmöglich

72

Kapitel 3: Ja sagen

75

3.1 Verbindliche Sprache

76

3.1.1 So erkennt man mangelnde Selbstverpflichtung

77

3.1.2 Wie echte Selbstverpflichtung klingt

78

3.1.3 Zusammenfassung

80

3.2 Lernen, wie man »Ja« sagt

81

3.2.1 Die Kehrseite von »Ich versuch’s mal«

81

3.2.2 Der Disziplin verpflichtet

82

3.3 Schlussfolgerung

84

Kapitel 4: Programmieren

85

4.1 Bereit sein

86

4.1.1 Code um drei Uhr früh

87

4.1.2 Sorgencode

88

4.2 Der Flow-Zustand

89

4.2.1 Musik

90

4.2.2 Unterbrechungen

91

4.3 Schreibblockaden

92

4.3.1 Kreativer Input

92

4.4 Debugging

93

4.4.1 Zeit zum Debuggen

96

4.5 Die eigene Energie einteilen

96

4.5.1 Wann man den Stift weglegen muss

97

4.5.2 Die Heimfahrt

97

4.5.3 Die Dusche

97

4.6 In Verzug sein

98

4.6.1 Hoffnung

98

4.6.2 Sich beeilen

98

4.6.3 Überstunden

99

4.6.4 Unlautere Ablieferung

99

4.6.5 Definieren Sie »fertig und erledigt«

100

4.7 Hilfe

100

4.7.1 Anderen helfen

101

4.7.2 Hilfe annehmen

101

4.7.3 Mentorenarbeit

102

4.8 Bibliografie

102

Kapitel 5: Test Driven Development

103

5.1 The Jury is in

104

5.2 Die drei Gesetze des TDD

105

5.2.1 Die Litanei der Vorteile

105

5.2.2 Die professionelle Option

108

5.3 Was TDD nicht ist

109

5.4 Bibliografie

109

Kapitel 6: Praktizieren und Üben

111

6.1 Etwas Hintergrund übers Üben

111

6.1.1 22 Nullen

112

6.1.2 Durchlaufzeiten

113

6.2 Das Coding Dojo

114

6.2.1 Kata

115

6.2.2 Waza

116

6.2.3 Randori

117

6.3 Die eigene Erfahrung ausbauen

117

6.3.1 Open Source

118

6.3.2 Ethisch handeln

118

6.4 Schlussfolgerung

118

6.5 Bibliografie

118

Kapitel 7: Akzeptanztests

119

7.1 Anforderungen kommunizieren

119

7.1.1 Verfrühte Präzisierung

121

7.2 Akzeptanztests

124

7.2.1 Die »Definition of Done«

124

7.2.2 Kommunikation

127

7.2.3 Automatisierung

127

7.2.4 Zusätzliche Arbeit

128

7.2.5 Wer schreibt die Akzeptanztests und wann?

128

7.2.6 Die Rolle des Entwicklers

129

7.2.7 Verhandlungen über die Tests und passive Aggression

130

7.2.8 Akzeptanz- und Unit-Tests

132

7.2.9 GUIs und andere Komplikationen

132

7.2.10 Andauernde Integration

134

7.3 Schlussfolgerung

134

Kapitel 8: Teststrategien

135

8.1 Für die Qualitätssicherung sollte nichts übrig bleiben

135

8.1.1 Die Qualitätssicherung gehört zum Team

135

8.2 Die Pyramide der Testautomatisierung

136

8.2.1 Unit-Tests

136

8.2.2 Komponententests

137

8.2.3 Integrationstests

138

8.2.4 Systemtests

139

8.2.5 Manuelle explorative Tests

139

8.3 Schlussfolgerung

140

8.4 Bibliografie

140

Kapitel 9: Zeitmanagement

141

9.1 Meetings

142

9.1.1 Absagen

142

9.1.2 Sich ausklinken

143

9.1.3 Tagesordnung und Ziel

143

9.1.4 Stand-up-Meetings

144

9.1.5 Planungstreffen zur Iteration

144

9.1.6 Retrospektive und Demo der Iteration

145

9.1.7 Auseinandersetzungen und Meinungsverschiedenheiten

145

9.2 Fokus-Manna

146

9.2.1 Schlaf

147

9.2.2 Koffein

147

9.2.3 Die Akkus aufladen

147

9.2.4 Muskelfokus

147

9.2.5 Input vs. Output

148

9.3 Zeitfenster und Tomaten

148

9.4 Vermeidung

149

9.4.1 Umkehrung der Prioritäten

149

9.5 Sackgassen

150

9.6 Morast, Moore, Sümpfe und andere Schlamassel

150

9.7 Schlussfolgerung

151

Kapitel 10: Aufwandsschätzungen

153

10.1 Was eine Aufwandsschätzung ist

155

10.1.1 Ein Commitment

155

10.1.2 Eine Aufwandsschätzung

155

10.1.3 Implizierte Commitments

157

10.2 PERT

158

10.3 Aufgaben schätzen

161

10.3.1 Wideband Delphi

161

10.4 Das Gesetz der großen Zahlen

163

10.5 Schlussfolgerung

164

10.6 Bibliografie

164

Kapitel 11: Äußerer Druck

165

11.1 Druck vermeiden

167

11.1.1 Commitments

167

11.1.2 Sauber arbeiten

167

11.1.3 Verhalten in der Krise

168

11.2 Umgang mit Druck

168

11.2.1 Keine Panik

168

11.2.2 Kommunizieren Sie

169

11.2.3 Verlassen Sie sich auf Ihre Disziplinen

169

11.2.4 Hilfe holen

169

11.3 Schlussfolgerung

170

Kapitel 12: Teamwork

171

12.1 Programmierer kontra Menschen

172

12.1.1 Programmierer kontra Arbeitgeber

173

12.1.2 Programmierer kontra Programmierer

175

12.2 Kleinhirne

177

12.3 Schlussfolgerung

178

Kapitel 13: Teams und Projekte

179

13.1 Harmoniert es?

179

13.1.1 Das zusammengeschweißte Team

179

13.1.2 Aber wie managt man so etwas?

181

13.1.3 Das Dilemma des Product Owner

181

13.2 Schlussfolgerung

182

13.3 Bibliografie

182

Kapitel 14: Mentoring, Lehrzeiten und die Handwerkskunst

183

14.1 Der Grad des Versagens

183

14.2 Mentoring

184

14.2.1 Digi-Comp I – Mein erster Computer

184

14.2.2 Die ECP-18 in der Highschool

185

14.2.3 Unkonventionelles Mentoring

188

14.2.4 Schicksalsschläge

189

14.3 Die Lehrzeit

189

14.3.1 Die Lehrzeit bei der Software

191

14.3.2 Die Realität

192

14.4 Die Handwerkskunst

193

14.4.1 Menschen überzeugen

193

14.5 Schlussfolgerung

193

Anhang A: Werkzeuge und Hilfsmittel

195

A.1 Tools

196

A.2 Quellcodekontrolle

197

A.2.1 Ein »Enterprise«-System der Quellcodekontrolle

197

A.2.2 Pessimistisches kontra optimistisches Locking

197

A.2.3 CVS/SVN

198

A.2.4 git

198

A.3 IDE/Editor

201

A.3.1 vi

201

A.3.2 Emacs

201

A.3.3 Eclipse/IntelliJ

201

A.3.4 TextMate

202

A.4 Issue-Tracking-Systeme

202

A.4.1 Bug-Zähler

203

A.5 Continuous Build

203

A.6 Tools für Unit-Tests

204

A.7 Tools für Komponententests

205

A.7.1 Die »Definition of Done«

205

A.7.2 FitNesse

205

A.7.3 Andere Tools

206

A.8 Tools für Integrationstests

206

A.9 UML/MDA

207

A.9.1 Die Details

207

A.9.2 Keine Hoffnung, keine Änderung

209

A.10 Schlussfolgerung

209

Stichwortverzeichnis

210