Preface |
|
xxi | |
About the Authors |
|
xxvii | |
|
Chapter 1 Why Programmers Seem Unmanageable |
|
|
1 | (8) |
|
|
3 | (4) |
|
Why Is Becoming a Successful Programming Manager Hard? |
|
|
7 | (2) |
|
Chapter 2 Understanding Programmers |
|
|
9 | (26) |
|
|
10 | (1) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
11 | (1) |
|
Web Developers and Other Scripters |
|
|
12 | (1) |
|
|
13 | (1) |
|
System Engineers / Architects |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
16 | (1) |
|
Programmer Job Requirements and Abilities |
|
|
17 | (3) |
|
Proximity and Relationship |
|
|
20 | (2) |
|
|
22 | (1) |
|
Geographically Distant Employees |
|
|
23 | (1) |
|
|
24 | (1) |
|
Contracted Managed Teams and Outsourcing Companies |
|
|
24 | (1) |
|
|
25 | (2) |
|
|
27 | (1) |
|
Left-Brain versus Right-Brain People |
|
|
28 | (1) |
|
Night versus Morning People |
|
|
29 | (2) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
33 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
Chapter 3 Finding and Hiring Great Programmers |
|
|
35 | (49) |
|
Determining What Kind of Programmer to Hire |
|
|
37 | (2) |
|
Writing the Job Description |
|
|
39 | (6) |
|
|
45 | (1) |
|
Recruiting Full-Time Employees (FTEs) |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
48 | (2) |
|
|
50 | (1) |
|
|
51 | (2) |
|
|
53 | (1) |
|
|
54 | (2) |
|
|
56 | (1) |
|
|
57 | (2) |
|
|
59 | (1) |
|
|
60 | (7) |
|
|
67 | (5) |
|
Making the Decision to Hire a Programmer |
|
|
72 | (4) |
|
Making the Right Offer to a Programmer |
|
|
76 | (6) |
|
Follow Up Until the Programmer Accepts |
|
|
82 | (1) |
|
|
83 | (1) |
|
|
83 | (1) |
|
Chapter 4 Getting New Programmers Started Off Right |
|
|
84 | (15) |
|
|
85 | (1) |
|
Preparing for Their Arrival |
|
|
86 | (1) |
|
|
87 | (4) |
|
|
91 | (1) |
|
|
92 | (3) |
|
|
95 | (3) |
|
|
98 | (1) |
|
|
98 | (1) |
|
Chapter 5 Becoming an Effective Programming Manager: Managing Down |
|
|
99 | (44) |
|
Earning Technical Respect |
|
|
100 | (5) |
|
|
105 | (1) |
|
Turbocharge the Team You Have |
|
|
105 | (1) |
|
Managing Different Types of Programmers |
|
|
106 | (5) |
|
|
111 | (1) |
|
|
111 | (2) |
|
Judging and Improving Performance |
|
|
113 | (1) |
|
|
114 | (3) |
|
|
117 | (5) |
|
Know When to Cut Your Losses |
|
|
122 | (1) |
|
|
123 | (1) |
|
|
124 | (1) |
|
Full-Time versus Contractors |
|
|
124 | (2) |
|
In-House versus Off-Shore Contractors |
|
|
126 | (4) |
|
|
130 | (1) |
|
Office-Based versus Virtual Teams |
|
|
130 | (3) |
|
Programmer Teams--Small versus Large Teams |
|
|
133 | (2) |
|
Managing Larger Organizations |
|
|
135 | (5) |
|
Troubleshooting a Dysfunctional Organization |
|
|
140 | (1) |
|
Deliver Results and Celebrate Success |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
142 | (1) |
|
RULES OF THUMB AND NUGGETS OF WISDOM |
|
|
143 | (260) |
|
The Challenges of Managing |
|
|
147 | (26) |
|
|
173 | (30) |
|
Managing Teams to Deliver Successfully |
|
|
203 | (24) |
|
Chapter 6 Becoming an Effective Programming Manager: Managing Up, Out, and Yourself |
|
|
227 | (42) |
|
|
228 | (1) |
|
|
228 | (2) |
|
Package Your Communications |
|
|
230 | (1) |
|
Understand Your Boss's Boss |
|
|
231 | (1) |
|
|
232 | (1) |
|
|
232 | (1) |
|
|
233 | (1) |
|
|
234 | (1) |
|
Collaborating within Your Department |
|
|
234 | (1) |
|
Understand Other Departments |
|
|
235 | (2) |
|
Leverage Important Support Functions |
|
|
237 | (1) |
|
|
237 | (2) |
|
Finance and Managing Budgets |
|
|
239 | (3) |
|
|
242 | (1) |
|
Managing Outside the Company |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
Technology Innovators and Work Disruptors |
|
|
244 | (1) |
|
Tools Vendors and Suppliers |
|
|
245 | (1) |
|
Government, Trade, and International Standards Organizations |
|
|
246 | (1) |
|
|
247 | (1) |
|
Professional Organizations |
|
|
247 | (1) |
|
|
248 | (1) |
|
|
248 | (2) |
|
|
250 | (1) |
|
|
250 | (1) |
|
|
250 | (1) |
|
|
251 | (1) |
|
|
252 | (1) |
|
|
252 | (2) |
|
Time and Priority Management |
|
|
254 | (2) |
|
Communications Management |
|
|
256 | (4) |
|
|
260 | (1) |
|
Pay Attention to the Person |
|
|
260 | (1) |
|
|
261 | (1) |
|
Break Down Barriers to Communication |
|
|
261 | (1) |
|
Understand What Is Really Important |
|
|
261 | (2) |
|
|
263 | (1) |
|
Be Part of the Solution, Not Part of the Problem |
|
|
263 | (1) |
|
|
263 | (3) |
|
|
266 | (1) |
|
|
267 | (1) |
|
|
268 | (1) |
|
|
268 | (1) |
|
Chapter 7 Motivating Programmers |
|
|
269 | (49) |
|
|
269 | (1) |
|
Maslow's Hierarchy of Needs |
|
|
270 | (1) |
|
|
271 | (1) |
|
Herzberg's Motivation and Hygiene Factors |
|
|
272 | (2) |
|
Motivational Factors as Applied to Programmers |
|
|
274 | (5) |
|
Putting Theory into Practice |
|
|
279 | (1) |
|
Foundational Factors--Causes of Dissatisfaction (When Lacking) |
|
|
280 | (1) |
|
|
281 | (1) |
|
|
281 | (1) |
|
|
281 | (1) |
|
|
282 | (1) |
|
|
283 | (1) |
|
Help Solve Technical Problems |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
285 | (1) |
|
|
286 | (1) |
|
|
287 | (2) |
|
|
289 | (1) |
|
Make the Workplace a Good Place to Work |
|
|
289 | (1) |
|
|
290 | (1) |
|
|
291 | (2) |
|
|
293 | (1) |
|
Sane Company Policies and Administration |
|
|
294 | (1) |
|
|
295 | (1) |
|
Protect Your Staff from Organizational Distraction |
|
|
296 | (1) |
|
Protect Your Staff from Bad Organization Communication and Policies |
|
|
297 | (1) |
|
|
297 | (6) |
|
|
303 | (1) |
|
Making a Difference in the World |
|
|
303 | (2) |
|
|
305 | (2) |
|
|
307 | (1) |
|
|
307 | (2) |
|
Having Fun with Your Staff |
|
|
309 | (1) |
|
|
310 | (2) |
|
|
312 | (2) |
|
Technology Offense and Defense |
|
|
314 | (2) |
|
Understanding Your Programmers' Motivations Begins on Day One |
|
|
316 | (1) |
|
|
317 | (1) |
|
Chapter 8 Establishing a Successful Programming Culture |
|
|
318 | (29) |
|
|
319 | (1) |
|
|
319 | (1) |
|
|
320 | (1) |
|
Leveraging the Complexity of Your Company's Culture |
|
|
321 | (1) |
|
Walling Off Your Company's Culture |
|
|
322 | (1) |
|
What Part Does Technology Play in Your Company? |
|
|
323 | (2) |
|
What Drives Your Company? |
|
|
325 | (2) |
|
Characteristics of a Successful Programming Culture |
|
|
327 | (1) |
|
|
328 | (1) |
|
|
329 | (1) |
|
|
330 | (1) |
|
|
331 | (1) |
|
|
332 | (2) |
|
Communication Among Virtual Teams |
|
|
334 | (2) |
|
|
336 | (1) |
|
|
337 | (1) |
|
|
338 | (1) |
|
|
339 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
Teamwork and Collaboration |
|
|
341 | (1) |
|
|
341 | (1) |
|
Customer Focus: "It's the Customer Experience, Stupid!" |
|
|
341 | (2) |
|
|
343 | (1) |
|
|
344 | (2) |
|
|
346 | (1) |
|
|
346 | (1) |
|
Chapter 9 Managing Successful Software Delivery |
|
|
347 | (56) |
|
|
348 | (1) |
|
Ensure That Requirements and Assumptions Are Clear |
|
|
349 | (3) |
|
Limit Requirements to "What," not "How" |
|
|
352 | (1) |
|
Seek to Delight Customers |
|
|
353 | (1) |
|
Quickly Ballpark the Magnitude of Effort Required |
|
|
354 | (2) |
|
Recognize Nonnegotiable Dates |
|
|
356 | (1) |
|
|
356 | (2) |
|
|
358 | (1) |
|
Break the Project into Features, and Prioritize Them |
|
|
359 | (2) |
|
Break Features into Tasks and Sub-Tasks |
|
|
361 | (1) |
|
Engage Your Team in a Bottom-Up Estimate |
|
|
362 | (1) |
|
Assemble Task Estimates into a Project Estimate |
|
|
362 | (2) |
|
Look for the Limitations on Estimation |
|
|
364 | (2) |
|
Get Agreement Around the Risks, Not Just the Schedule |
|
|
366 | (2) |
|
Allocate Sufficient Time for Unit and Project Testing |
|
|
368 | (1) |
|
Estimation Is a Unique Challenge Every Time |
|
|
368 | (1) |
|
Determine the Pace of the Project |
|
|
369 | (1) |
|
|
370 | (1) |
|
Participate in a Project Kickoff |
|
|
370 | (1) |
|
|
371 | (1) |
|
|
372 | (1) |
|
Establish a Project Workbook |
|
|
373 | (3) |
|
|
376 | (1) |
|
|
376 | (3) |
|
|
379 | (1) |
|
Complete a Prototype to Inform the Design |
|
|
380 | (1) |
|
Set Agreed-Upon Milestones |
|
|
381 | (1) |
|
Confirm That Regular Check-In Meetings Have Been Set |
|
|
382 | (2) |
|
Actively Drive Development |
|
|
384 | (2) |
|
Ensure That Agreed-Upon Standards and Requirements Are Met |
|
|
386 | (2) |
|
Leverage Test-Driven Development |
|
|
388 | (1) |
|
|
389 | (1) |
|
|
389 | (2) |
|
|
391 | (1) |
|
|
391 | (1) |
|
|
392 | (1) |
|
Be Prepared to Declare Success and Start on the Point Release |
|
|
392 | (2) |
|
Know When to Cut Your Losses |
|
|
394 | (2) |
|
OEM and International Versions |
|
|
396 | (1) |
|
|
396 | (1) |
|
|
396 | (1) |
|
|
397 | (3) |
|
|
400 | (1) |
|
|
400 | (1) |
|
|
401 | (1) |
|
|
401 | (1) |
|
|
402 | (1) |
|
|
403 | (4) |
Index |
|
407 | |