«Selected and Introduced by Joel Spolsky The Best Software Writing I: Selected and Introduced by Joel Spolsky Copyright © 2005 Edited by Joel Spolsky ...»
THE BEST SOFTWARE
Selected and Introduced by
The Best Software Writing I: Selected and Introduced by Joel Spolsky
Copyright © 2005 Edited by Joel Spolsky
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-500-9 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 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.
Lead Editor: Gary Cornell Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser Assistant Publisher: Grace Wong Project Manager: Beth Christmas Copy Edit Manager: Nicole LeClerc Copy Editor: Liz Welch Production Manager: Kari Brooks-Copony Production Editor: Kelly Winquist Compositor: Dina Quan Proofreader: Nancy Sixsmith Indexer: Broccoli Information Management Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski Licensing: Tina Nielsen Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013, and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany.
In the United States: phone 1-800-SPRINGER, fax 201-348-4505, e-mail firstname.lastname@example.org, or visit http://www.springer-ny.com. Outside the United States: fax +49 6221 345229, e-mail email@example.com, or visit http://www.springer.de.
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail firstname.lastname@example.org, 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(s) 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.
CONTENTSAbout the Editor................. vii About the Authors................ ix Introduction................... xv Style Is Substance................ 1 Ken Arnold
Award for the Silliest User Interface:
Leon Bambrick Windows Search................ 7 The Pitfalls of Outsourcing Programmers.. 9 Michael Bean
Joel Spolsky is a globally recognized expert on the software development process. His website, Joel on Software (www.joelonsoftware.com), is popular with software developers around the world and has been translated into over 30 languages. As the founder of Fog Creek Software in New York City, he created FogBugz, a popular project management system for software teams. Joel has worked at Microsoft, where he designed VBA as a member of the Excel team, and at Juno Online Services, developing an Internet client used by millions. He has written two previous books: User Interface Design for Programmers (Apress, 2001) and Joel on Software (Apress, 2004). Joel holds a BS from Yale in computer science. Before college he served in the Israeli Defense Forces as a paratrooper, and he was one of the founders of Kibbutz Hanaton.
ABOUT THE AUTHORSKen Arnold has loitered around the computing field for decades, including attending Berkeley where he worked on the BSD project, creating the curses library and helping on rogue; writing the “The C Advisor” column for Unix Review (later “The C++ Advisor” as progress led us down the garden path); coauthoring The Java Programming Language and other books; designing JavaSpaces and helping design Jini; and occasionally (as shown here) pretending to be hip by blogging. His current dalliances include the human factors of programming languages and APIs, electronic voting systems your mother could trust, and the Napkin pluggable look and feel for Java that makes provisional GUIs look, well, provisional.
Leon Bambrick is a prolific programmer, satirist, and pugilist, working out of the southern hemisphere. He first met Joel Spolsky when they were stranded together on a desert island, with nothing but an 8086 and a copy of Kernigan and Ritchie. His website, secretGeek.net, has a small cameo in Star Wars Episode III – Revenge of the Sith—as an Imperial Guard’s codpiece.
Michael Bean is a software developer and entrepreneur. He is currently president and one of the founders of Forio Business Simulations. Before Forio, Michael held senior management posts at consulting and software firms in the United States and Europe. Michael was also a research associate for the System Dynamics Group at MIT, where he developed simulations that analyzed the strategic implications of manager decisions. Michael has consulted with corporations and government agencies nationally and internationally on transfer pricing, competitive strategy, emerging technologies, and customer migration. He has conducted scenario planning, systems thinking, and computer simulation x About the Authors seminars to corporations and government agencies worldwide. In addition, Michael has presented at national conferences on strategy, software, and computer simulation.
Rory Blyth works for Microsoft as a corporate stooge. In his spare time, he keeps a blog at www.neopoleon.com, ponders the universe, and considers himself to be one of the three missing Sankara stones, although he probably isn’t, but it makes him feel better about being so bloody insignificant.
Adam Bosworth joined Google recently as vice president of engineering.
He came to Google from BEA, where he was chief architect and senior VP of advanced development and responsible for driving the engineering efforts for BEA’s Framework Division. Prior to joining BEA, he cofounded Crossgain, a software development firm acquired by BEA.
Known as one of the pioneers of XML, he held various senior management positions at Microsoft, including general manager of the WebData group, a team focused on defining and driving XML strategy. While at Microsoft, he was responsible for designing and delivering the Microsoft Access PC Database product and assembling and driving the team that developed Internet Explorer 4.0’s HTML engine.
danah boyd is a PhD student in the School of Information Management and Systems at the University of California, Berkeley, where she studies how people negotiate a presentation of self in mediated social contexts to unknown audiences using ethnographic methods. She is particularly interested in how youth develop a culturally situated understanding of self and the role of technology in this process. Prior to Berkeley, danah received a master’s in sociable media from the MIT Media Lab and a bachelor’s in computer science from Brown University. Her work has ranged from psychological studies of how depth cue prioritization is dependent on levels of sex hormones to design installations of interactive social visualizations.
danah blogs extensively at Apophenia (www.zephoria.org/thoughts) and Many-to-Many (www.corante.com/many).
Kevin Cheng is an independent user experience specialist and global nomad. He holds a master’s in human-computer interaction and ergonomics from the University College London Interaction Centre (UCLIC) and has spoken at UXNet, UPA, and ACM-SIGCHI. He is the cofounder and cocreator of OK/Cancel (www.ok-cancel.com), an online site believed to be in the top five of usability and HCI-themed comics.
Tom Chi has a Masters Degree in Electrical Engineering, which probably means he’s qualified neither to talk about HCI nor to write any sort of funny thing. Yet, week after week he dreams the impossible dream at ok-cancel.com. As for credentials, there is the small matter of having designed UI features for two releases of Microsoft Outlook, as well as his dark history of consulting for F500 clients—but these are topics that civilized people shouldn’t speak of. Shhh.
Cory Doctorow (craphound.com) is European Affairs Coordinator for the Electronic Frontier Foundation (www.eff.org), a member-supported nonprofit group that works to uphold civil liberties values in technology law, policy, and standards. He represents EFF’s interests at various standards bodies and consortia, and at the United Nations’ World Intellectual Property Organization. Doctorow is also a prolific writer who appears on the mastheads at Wired, Make, and Popular Science magazines, and whose science fiction novels have won the Campbell, Sunburst, and Locus Awards. His novel Down and Out in the Magic Kingdom is a finalist for this year’s Nebula Award. He is the coeditor of the popular weblog Boing Boing (boingboing.net). Born in Canada, he now lives in London, England.
Bruce Eckel (www.BruceEckel.com) is the author of Thinking in Java (Prentice Hall, 1998, 2nd edition, 2000, 3rd edition, 2003, 4th edition, 2005), the Hands-On Java Seminar CD-ROM (available on the website), Thinking in C++ (PH 1995; 2nd edition 2000, Volume 2, with Chuck Allison, 2003), and C++ Inside & Out (Osborne/McGraw-Hill, 1993), among others. He’s given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee, and speaks regularly at conferences. He provides public and private seminars and design consulting in C++ and Java.
xii About the Authors Paul Ford is an editor at Harper’s magazine, a frequent commentator on NPR’s All Things Considered, and the sole proprietor of Ftrain.com. He has fooled with computers for the last two decades, and feels no inclination to stop. He lives in Brooklyn, New York.
Paul Graham is an essayist, programmer, and programming language designer. In 1995 he developed with Robert Morris the first web-based application, Viaweb, which was acquired by Yahoo in 1998. In 2002 he described a simple Bayesian spam filter that inspired most current filters.
He’s currently working on a new programming language called Arc, a new book (probably) for O’Reilly, and is one of the partners in Y Combinator. Paul is the author of On Lisp (Prentice Hall, 1993), ANSI Common Lisp (Prentice Hall, 1995), and Hackers & Painters (O’Reilly, 2004). He has an AB from Cornell and a PhD in computer science from Harvard, and studied painting at RISD and the Accademia di Belle Arti in Florence.
John Gruber is a freelance writer, web developer, designer, and Mac nerd. He combines those interests on his website, Daring Fireball (http://daringfireball.net/). John lives in Philadelphia with his wife and son.
Gregor Hohpe leads the Enterprise Integration practice at ThoughtWorks, Inc., a specialized provider of application development and integration services. Gregor is a widely recognized thought leader on asynchronous messaging architectures and coauthor of the seminal book Enterprise Integration Patterns (Addison-Wesley, 2004). Gregor speaks regularly at technical conferences around the world and maintains the website www.eaipatterns.com.
Ron Jeffries has been developing software longer than most people have been alive. He holds advanced degrees in mathematics and computer science, both earned before negative integers had been invented. His teams have built operating systems, compilers, relational database systems, and a large range of applications. Ron’s software products have produced revenue of over half a billion dollars, and he wonders why he didn’t get any of it.
About the Authors xiii Eric Johnson graduated from the University of Illinois with a BS in computer science in 1993 and has worked at FactSet Research Systems ever since. Currently he is the director of market data engineering and lives with his wife and two kids in southwestern Connecticut. He can be reached at email@example.com.
Eric Lippert has been a software developer at Microsoft since 1996. He spent his first five years working on VBScript, JScript, Windows Script Host, and other scripting technologies and more recently has been working on Visual Studio Tools For Office. He also writes a blog, where he dispenses advice about scripting, security, and (occasionally) romance. When not writing software or writing about software, Eric can be found playing old songs on old pianos, trying to keep the mast of his tiny sailboat upright, building kites, or talking his friends into helping him fix his 97-year-old house.
Michael “Rands” Lopp is a Silicon Valley–based software engineering manager. He’s ridden a variety of high-tech roller-coasters, including Borland International, Netscape Communications, Apple Computer, and a start-up you’ve unfortunately never heard of. In his spare time, he writes a weblog at www.randsinrepose.com, where he optimistically contemplates the fact that the world continues to get uncomfortably smaller.
Larry Osterman has been working at Microsoft since 1984. In that time, he’s worked as a software engineer deep in the plumbing of various Microsoft® products, including MS-DOS, MS-NET, LAN Manager, Windows NT, Exchange, and eHome, and is currently working in the Windows Multimedia Technologies group. Larry lives just north of Seattle with his wife Valorie and their two kids, four cats, and two horses.
Mary Poppendieck is a seasoned leader in both operations and new product development with more than 25 years of IT experience. She has led teams implementing lean solutions ranging from enterprise supply chain management to digital media, and built one of 3M’s first just-in-time lean production systems. Mary is currently the president of Poppendieck LLC in Minnesota. Her book Lean Software Development: An Agile Toolkit, which brings lean principles to software development, won the Software Development Productivity Award in 2004.