The Career Programmer Guerilla Tactics for anImperfect World
CHRISTOPHER DUNCAN
Copyright 2002 by Christopher Duncan
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher.
ISBN (pbk): 1-59059-008-2
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
Editorial Directors: Dan Appleman, Peter Blackburn, Gary Cornell, Jason Gilmore, Karen Watterson
Managing Editor: Grace Wong
Copy and Development Editor: Tom Gillen
Production Editor: Sofia Marchant
Compositor: Diana Van Winkle, Van Winkle Design Group
Indexer: Ron Strauss
Cover Designer: Tom Debolski
Marketing Manager: Stephanie Rodriguez
Distributed to the book trade in the United States by Springer-Verlag New York, Inc.,175 Fifth Avenue, New York, NY, 10010
and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany
In the United States, phone 1-800-SPRINGER, email orders@springer-ny.com, or visit http://www.springer-ny.com.
Outside the United States, fax +49 6221 345229, email orders@springer.de, or visit http://www.springer.de.
For information on translations, please contact Apress directly at 901 Grayson Street, Suite 204, Berkeley, CA 94710.
Phone 510-549-5930, fax: 510-549-5939, email info@apress.com, or visit http://www.apress.com.
The information in this book is distributed on an "as is" basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work.
This book is dedicated to the memory of James Michael Graves, my best friend and the brotherI never had. I miss you, man.
Table of Contents
Acknowledgments
Many moons ago, Tom Archer, a friend and author who at the time was also running the popular developer Web site CodeGuru, approached me about writing a column for the site. He already had a number of columns by some of the top names in Windows programming who were writing about specific technologies. My task was to instead pen a series of articles about the insanities of Corporate America and the things we programmers grapple with on a daily basis just to get a release out the door. In short, he said, he wanted to add some attitude to the site. It's not often that someone offers to pay you to be a wise guy and a trouble maker. Who could refuse? In writing that column, Programming in the Real World, I received a stream of emails from programmers the world over who told me they felt as though I was looking over their cubicle walls. It seems I'm not the only one who's had to deal with arbitrary deadlines, inept management, corporate politics, and all the other ridiculous situations I've found myself in as a professional developer. This book was directly inspired by all of you who encouraged me to expand upon the things I've learned about navigating the corporate world of software development. I'm grateful for the conversations and for the stories you've told. I hope this helps you avoid some of the disasters I've seen in my own travels.
If it wasn't for Tom and his faith in my writing, however, I never would have taken a swing at either the column or The Career Programmer. The bookstore shelves are full of programming books, but they're all about specific technologies and writing code. I've learned from experience that coding is only a very small part of what we have to do to successfully make a living in this business. Still, I never would have taken a shot at writing something as off the wall as this without his encouragement and support. Thanks, man. The next pizza is on me. Yeah, yeah, I know, extra pepperoni. (It's good to have old friends who share your taste in pizza.) When I mentioned that I was thinking about writing a book, Tom also put me together with Robert Scoble of Thunder Lizard Productions (you just gotta love a name like that), who in turn introduced me to Dan Appleman here at Apress. Robert, if you hadn't done that, heaven only knows how long I would have flailed around trying to figure out how to publish a book. Your kindness made a real difference, and I truly appreciate it.
The truth of the matter is that I was going to chicken out and just ask Dan if he had a language book of some sort that I could write. However, when I was referring to Programming in the RealWorld, I described it to him as "guerilla tactics for an imperfect world." He responded that it sounded like a great title for a book and told me if I had something along those lines in mind he'd rather hear about that first. If you've read many books on programming, you know that there's a pretty consistent format for tech publications. Most publishers do their best to stick with the status quo and color within the lines. I sincerely believe that the programmers of the world would benefit tremendously if there were more people like Dan who were willing to take a chance on something a little different. And believe me, folks, this book is so far from the mainstream it can't even swim. I figured about the time he reviewed the chapter introducing the night watchman's attack Chihuahua I'd get a very polite rejection letter, but not this guy.
He's been incredibly supportive throughout the process, and is just a great person in general.
One of the people writing columns for CodeGuru at that time was debugging guru John Robbins, best known for his Bugslayer column and recent book Debugging Applications. We'd exchanged a couple of emails in the cours e of things, and I liked his sense of humor. He's also an extremely capable techie. When I started work on this book, I asked him if he'd be willing to write the foreword. Given the workload this guy maintains (don't even ask about the frequent-flyer miles), I didn't expect that he'd have time to fool with it, but I figured it couldn't hurt to ask.
I'm glad I did, as it's given me a chance to get to know him a little better. He's even more fun on the phone, but I'm certainly not going to tease him too much about it. He was a Green Beret before he started squashing bugs for a living. If that's not the perfect training for life as a professional programmer, I've never seen it. I personally believe that, if we all had that kind of background, management wouldn't try to pull even half of the stunts that I've seen. In any event, thanks for taking the time for this, John. Forget the pizza. Green Berets get beer.
I've heard a lot of people talk about how much work it is to write a book. For the language-oriented books loaded with code, I'm sure they're right. However, I've had an absolute blast doing this, and it's been much more play than work. A long time ago, as I struggled with finding a style of writing that worked for my personal tastes, my old friend Janice Strickland suggested that I simply write like I talk. That was a turning point for my writing, and it's what I've continued to do. It's easy for me. Of course, what that really means is that I get to be as chatty as I please and trust to others to make me look like I actually took English classes in school.
The only thing that I was really nervous about when I started this project was the editing process. My style of writing is loose, conversational, and shows a blatant disregard for many of the conventions of serious literature. Although I didn't want to look like a complete illiterate, neither did I want to get an editor who would delete all of my silliness and try to make this into a formal and conservative piece of work. Thank you, Grace Wong! For those of you who don't know her, Grace is a Managing Editor at Apress and has been in charge of this project. She apparently knew my concerns before I even voiced them and consequently assigned Tom Gillen as my editor. That was a stroke of luck. As it turns out, he's as much of a wise guy as I am.