Preface
SOFTWARE ARCHITECTS occupy a unique space in the world of IT. They are expected to know the technologies and software platforms on which their organizations run as well as the businesses that they serve. A great software architect needs to master both sides of the architect's coin: business and technology. This is no small challenge, and it's why this book was created.
97 Things Every Software Architect Should Know provides advice from software architects around the world on everything from how to avoid common pitfalls to how to build talented teams. It's a smorgasbord of advice from established software architects for other software architects or those who aspire to become software architects.
It's my sincere hope that this book will be a source of inspiration and guidance for software professionals everywhere. It's also my hope that software architects will use this book and its sister website to share advice and insights into what is perhaps the most challenging profession in information technology today.
This book is probably completely different from any other book you've read. It is the combined work of more than four dozen authors, all of whom donated their thoughts and advice about software architecture without compensation. It is, in a way, an open source book in the truest sense. Each author wrote his or her own contributions, those contributions were examined and edited with the author, and then the best contributions were chosen for publication. That's not much different than an open source software project where individuals contribute code rather than knowledge and wisdom.
Permissions
The licensing of each axiom is also similar to open source. Every contribution is freely available online and licensed under Creative Commons, Attribution 3, which means that you can use the individual contributions in your own work as long as you give credit to the original author. Other open source books have been tried and have, with only a few exceptions, failed. I believe that is because it's harder for individuals to contribute to a project unless it can be modularized. This book succeeds for exactly that reason: it is modularized. Each contribution is self-contained and works both in this larger collection and on its own.
How to Contact Us
Please address comments and questions concerning this book to the publisher:
O'Reilly Media, Inc. |
1005 Gravenstein Highway North |
Sebastopol, CA 95472 |
800-998-9938 (in the United States or Canada) |
707-829-0515 (international or local) |
707-829-0104 (fax) |
On the web page for this book, we list errata and any additional information. You can access this page at:
http://www.oreilly.com/catalog/9780596522698/ |
The companion website for this book, where you can find all the axioms and full-length contributor biographies, is available at:
http://97-things.near-time.net |
To comment or ask technical questions about this book, send email to:
For more information about our books, conferences, Resource Centers, and the O'Reilly Network, see our website at:
Safari Books Online
When you see a Safari Books Online icon on the cover of your favorite technology book, that means the book is available online through the O'Reilly Network Safari Bookshelf.
Safari offers a solution that's better than e-books. It's a virtual library that lets you easily search thousands of top tech books, cut and paste code samples, download chapters, and find quick answers when you need the most accurate, current information. Try it for free at http://safari.oreilly.com.
Acknowledgments
The idea for 97 Things Every Software Architect Should Know was not conceived in a vacuum. There are many people who deserve credit for the idea and execution. In order, I would like to thank Jay Zimmerman, who suggested that I do a presentation for the No Fluff, Just Stuff symposiums called "10 Things Every Software Architect Should Know"; Bruce Eckel, for managing the mailing list on which the idea for this book was germinated; Jeremy Meyer, for suggesting that I create a book out of what was going to be a simple slide show; Nitin Borwankar, who suggested doing a public wiki so that everyone can be involved; and the members of Bruce's mailing list who, on nothing more than a promise, chose to donate their time and contribute the first axioms to this book. I also want to thank the dozens of software architects who worked hard to contribute to this book but whose contributions are not included. It was extremely hard to choose which axioms should be a part of this work. I'm deeply grateful to everyone who contributed content, whether it was included or not.
O'Reilly deserves credit as well for listening to this idea with open ears and backing what is more or less an untested method of creating a book. O'Reilly also deserves credit for agreeing that all content will be open source (Creative Commons, Attribution 3) and that the content will be available for free to anyone on the website. People at O'Reilly I would like to thank specifically include Mike Loukides, Mike Hendrickson, Laura Painter, and Laurel Ackerman. Without your help and guidance, this project would not be possible.
We (O'Reilly and I) are developing other "97 Things" projects. The idea is to create a new and unique series that leverages the collaborative intelligence of experts in every field that is practical. Project management, software development, and data architecture are just a few of the other topics we are already pursuing.
I hope you will find the contents of this book inspiring and that you will be inspired to contribute your own axioms to future projects!
All the best!
Richard Monson-Haefel
Series Editor, 97 Things
Chapter 1. Don't Put Your Resume Ahead of the Requirements
Nitin Borwankar worked at Ingres and Sybase in the early 1990s. He was involved with some of the earliest web-database applications using SybPerl and OraPerl, and soon after with early Enterprise Java. He was also an active participant in New-EDI, an IETF standards process for EDI on the Internet. He has been an independent consultant and researcher since 1994 and has focused on enterprise data and integration along with messaging. His current interests include database schemas for tagging (folksonomy) applications in the enterprise and database issues underlying social networks with applications in the enterprise. He is a member of the Policy Group in the Data Portability effort, where he is tasked with creating the first drafts for EULA templates that respect user data rights. He has written about database issues for GigaOm.com and blogs at http://tagschema.com. He holds a patent in messaging for collaboration across trust boundaries.