| |
| |
Foreword | |
| |
| |
About the Author | |
| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
Software Development in an Imperfect World | |
| |
| |
| |
Welcome to the Corporate World | |
| |
| |
So You Thought You'd Just Be Coding All Day, Eh? | |
| |
| |
What's a Nice Programmer Like Me | |
| |
| |
Why People Run Businesses and Pay Programmers | |
| |
| |
The Corporate World Is Not Logical | |
| |
| |
You Can't Win If You Don't Play | |
| |
| |
The Food Chain | |
| |
| |
The Various Species of Programmers | |
| |
| |
| |
Business is War Meet the Enemy | |
| |
| |
Unrealistic Deadlines | |
| |
| |
Vague Definition of Requirements | |
| |
| |
Inadequate Time for Analysis and Design | |
| |
| |
Sometimes the Enemy Is Within | |
| |
| |
No Time or Resources for Testing | |
| |
| |
Poor Company Management | |
| |
| |
Internal Politics | |
| |
| |
The Unexpected | |
| |
| |
| |
Good Coding Skills Are Not Enough | |
| |
| |
What's in It for Me? | |
| |
| |
Who Needs These Skills? | |
| |
| |
Taking Control of Your Time | |
| |
| |
Enhancing Design | |
| |
| |
Improving Interaction | |
| |
| |
Getting What You Want | |
| |
| |
| |
Guerilla Tactics for Front-Line Programmers | |
| |
| |
| |
Preventing Arbitrary Deadlines | |
| |
| |
Defining the Process | |
| |
| |
Commissioning a New Software Project | |
| |
| |
Identifying the Requirements | |
| |
| |
Building Your Testing Environment | |
| |
| |
Entering the Design Phase | |
| |
| |
Estimating the Effort | |
| |
| |
Coding Bliss | |
| |
| |
Testing the Candidates | |
| |
| |
Addressing the Installation Issues | |
| |
| |
Managing the Beta Phase | |
| |
| |
| |
Getting Your Requirements Etched in Stone | |
| |
| |
You Don't Have to Like It. It Just Has to Be Clear | |
| |
| |
Where Does the Power Lie? | |
| |
| |
Politics Are an Inescapable Reality | |
| |
| |
Identifying the Other Influential People | |
| |
| |
Selling the Process | |
| |
| |
The Definition Questions | |
| |
| |
Preparations for Effective Information Gathering | |
| |
| |
Defining the Requirements | |
| |
| |
When the Party's Over | |
| |
| |
Coping with a Hostile Environment | |
| |
| |
Politics Are Never Far Away | |
| |
| |
| |
Effective Design Under Fire | |
| |
| |
Design? What Design? | |
| |
| |
Estimating the Design Effort | |
| |
| |
Rolling Your Own Design Methodology | |
| |
| |
Hitting the High Points | |
| |
| |
Effective Prototyping | |
| |
| |
When You Can't Get Even This Much Time | |
| |
| |
Onward to Implementation | |
| |
| |
| |
Practical Estimating Techniques | |
| |
| |
Understanding the Process | |
| |
| |
Avoiding Common Mistakes | |
| |
| |
The Myth of the Eight-Hour Day | |
| |
| |
Crunching the Numbers | |
| |
| |
Converting Hours to Delivery Dates | |
| |
| |
Don't Forget the Final Details | |
| |
| |
Wrapping Up the Project | |
| |
| |
What If Things Didn't Go by the Book? | |
| |
| |
| |
Fighting for Quality Assurance | |
| |
| |
How Do We Get Away with Buggy Releases? | |
| |
| |
Justifying a Quality Assurance Effort | |
| |
| |
What's a Tester? | |
| |
| |
Building Your Team | |
| |
| |
Training Your Testers | |
| |
| |
Make the Testers Feel Like a Part of the Team | |
| |
| |
Establishing the QA Process | |
| |
| |
| |
Keepingthe Project Under Control | |
| |
| |
Keeping Track of Your Time | |
| |
| |
Managing Your Team | |
| |
| |
Improving Your Coding Discipline | |
| |
| |
Thinking Ahead to Debugging | |
| |
| |
Incorporating Version Control | |
| |
| |
Improving Productivity | |
| |
| |
Knowing When to Walk Away | |
| |
| |
Optimizing Your Meetings | |
| |
| |
Wrapping It Up | |
| |
| |
| |
Managing Your Management | |
| |
| |
Improving Communications | |
| |
| |
Instituting Change | |
| |
| |
Bolstering Your Position | |
| |
| |
Frontal Assaults (For Those Who Respond to Reason) | |
| |
| |
Stealth Tactics (When Reason Is Not Enough) | |
| |
| |
Credibility, the Key to Success | |
| |
| |
| |
Corporate Self-Defense | |
| |
| |
What Do You Have to Lose? | |
| |
| |
Picking Your Battles | |
| |
| |
Avoid Being a Target | |
| |
| |
Assessing the Lay of the Land | |
| |
| |
Escape and Evade | |
| |
| |
If You Must Attack | |
| |
| |
Improving Your Skills | |
| |
| |
| |
Building A Better Career | |
| |
| |
| |
Controlling Your Destiny | |
| |
| |
Considering Your Options | |
| |
| |
The Company Man | |
| |
| |
The Mercenary | |
| |
| |
The Entrepreneur | |
| |
| |
Off to the Races | |
| |
| |
| |
Get A Job (Sha Na Na Na...) | |
| |
| |
The Usual Suspects | |
| |
| |
Fame for Fun and Profit | |
| |
| |
Getting the Word Out | |
| |
| |
Digging Deeper | |
| |
| |
Shuffling Paper | |
| |
| |
Face Time | |
| |
| |
| |
Career 2.0 | |
| |
| |
Captain, She Canna Take Much More o'This! | |
| |
| |
Life Beyond Coding | |
| |
| |
Where's a Compass When You Need One? | |
| |
| |
Abandon Ship! | |
| |
| |
Where Do We Go from Here? | |
| |
| |
Turning Passion into Paychecks | |
| |
| |
| |
Flying Solo | |
| |
| |
Many Hats | |
| |
| |
Getting the Picture | |
| |
| |
Know Your Weaknesses | |
| |
| |
Creating Your Deliverables | |
| |
| |
Distribution Decisions | |
| |
| |
Getting the Word Out | |
| |
| |
Continuing Education | |
| |
| |
| |
Job Security | |
| |
| |
Long-Term Thinking | |
| |
| |
Taking Care of Your Peers | |
| |
| |
Improving Communication | |
| |
| |
Overcoming Fear of Change | |
| |
| |
Turning Drudgery into Games | |
| |
| |
Promoting Your Agenda | |
| |
| |
Becoming a General | |
| |
| |
Inspiring Innovation | |
| |
| |
Generating Enthusiasm | |
| |
| |
Promoting Unity | |
| |
| |
The Indispensable Programmer | |
| |
| |
Index | |