|
Good Books I Recommend |
|
|||
Here are several books that I've found to be helpful and recommend to others. Most are software engineering
and project management books, but some of my favorite books on consulting are included, too. Links are provided so you can easily
buy the books from , if you like.
| |||||
Requirements Engineering | |||||
More About Software Requirements,
by Karl E. Wiegers (Microsoft Press, 2006), addresses many thorny issues in requirements development
and management, difficult questions that analysts ask over and over again. Topics include: how much detail
to include in the requirements, elements of requirements style, practical guidance on how to apply the
use case technique, handling requirements for multiple releases concurrently, good questions to
ask during requirements elicitation, the business value of better requirements, when to baseline requirements,
tips for reviewing requirements documents, and getting good value from requirements management tools.
more information | |||||
Software Requirements, 2nd Edition,
by Karl E. Wiegers (Microsoft Press, 2003), is an updated and considerably enhanced version of Karl's popular book on requirements.
Containing nearly 2/3 more content than the first edition, this is a highly practical and readable guide that presents several dozen techniques for
improving your requirements development and management processes. Topics include the customer-developer partnership, defining vision and scope, use
cases, business rules, the role of the requirements analyst, the software requirements specification, requirements prioritization, change management, and much more.
more information | |||||
Requirements by Collaboration: Workshops for Defining Needs,
by Ellen Gottesdiener (Addison-Wesley, 2002), provides a comprehensive and practical approach to holding effective
requirements-gathering workshops with users. Ellen provides a wealth of useful tips on the nuts and bolts of workshop facilitation.
She also has much information on representing requirements in various forms. I especially like her
"collaboration patterns," which describe ways for teams to work together effectively.
| |||||
Software Requirement Patterns,
by Stephen Withall (Microsoft Press, 2007), communicates a wealth of wisdom and insight for writing excellent requirements
of many types. The requirement patterns encompass comprehensive, structured knowledge about different
types of requirements and they are broadly applicable to nearly any project. This book contains hundreds of
practical tips for specifying better requirements.
| |||||
Customer-Centered Products,
by Ivy F. Hooks and Kristin A. Farry (AMACOM, 2001), is a clearly written book on requirements targeted at managers.
It includes many examples and experiences drawn from systems engineering projects, an often-neglected domain.
The book emphasizes writing good requirements, with tips and examples for making requirements
clear and verifiable. Many useful checklists to help the requirements analyst do a better job are provided.
| |||||
Use Cases: Requirements in Context, 2nd Edition,
by Daryl Kulak and Eamonn Guiney (Addison-Wesley, 2003), presents an iterative approach
to developing use cases, a powerful requirements tool. I don't agree with the authors that you should discard some older requirements
techniques. However, this does contain many useful examples of use cases and use case models and lots of good suggestions
about how to write use cases.
| |||||
| (back to top)
| |||||
Project Management | |||||
Practical Project Initiation: A Handbook with Tools by Karl E. Wiegers (Microsoft
Press, 2007)
describes many actions that lay the foundation for a successful project. Both experienced and novice project managers will find the practices described here to be valuable.
Topics covered include: defining project success criteria and product release criteria,
project chartering, risk management, lessons learned and project retrospectives, metrics,
and many others. Each chapter includes several practice activities and worksheets to
help you begin applying the techniques immediately. A companion web site
provides numerous templates, procedure descriptions, spreadsheet tools, and other work aids to
help you launch your next project more effectively.
more information | |||||
Creating a Software Engineering Culture, by Karl E. Wiegers (Dorset House, 1996) includes principles and practices
on effective leadership, requirements, process improvement, software quality, measurement, and other topics that can help
you build a healthy culture in your software development group.
more information | |||||
Software Estimation: Demystifying the Black Art,
by Steve McConnell (Microsoft Press, 2006) is the definitive book on one of the most difficult aspects of
software development. McConnell is one of the best writers in the business. In his usual
highly readable and practical style, this book presents a wealth of techniques that can help both
practitioners and project managers do a better -- although of course never perfect -- job of
estimating the size, effort, and time needed for their next chunk of work.
| |||||
Project Retrospectives:
A Handbook for Team Reviews, by Norman L. Kerth (Dorset House, 2001) is an excellent guide for anyone who
wishes to conduct a post-project review (or post-mortem) to gather learnings from a past project. The book is
very easy to read and is loaded with practical techniques for these essential project activities. If you don't take
the time to gather insights from previous projects, you're missing a great opportunity to improve the success
of future projects.
| |||||
Peopleware: Productive Projects
and Teams, 2nd Ed., by Tom DeMarco and Timothy Lister (Dorset House, 1999), is a classic discussion of
the elements that go into creating software development teams and environments that let people work efficiently and enjoyably. Every
manager should read Peopleware. Buy a copy for your boss, too.
| |||||
Software Project Survival Guide,
by Steve McConnell (Microsoft Press, 1998), provides a succinct, readable overview of key practices that can improve your chance
of having a successful project. McConnell provides a "Software Project Survival Test" and many useful checklists
and tips.
| |||||
Effective Project Management, 2nd Edition,
by Robert K. Wysocki, Robert Beck Jr., and David B. Crane (Wiley, 2000), is an excellent overall treatise
on managing software projects. It covers all the essential topics for planning, implementing, and tracking the
project. It is clearly written, easy to read, and addresses important topics that many
other project management books neglect.
| |||||
Getting Started in Project Management,
by Paula Martin and Karen Tate (Wiley, 2001), is a good introductory book for managers of any kind of project,
not just software development. It's written in a simple and straightforward fashion, with chapters on
initiating a project, leading a project team, planning the scope, organizing the project, assessing risk, developing
a schedule and budget, and assembling and executing the project plan. This book provides a good overview
for the occasional or beginning project manager, with many tips that any manager will find helpful.
| |||||
Getting to Yes: Negotiating Agreement Without Giving In,
by Roger Fisher, William Ury, and Bruce Patton (Penguin USA, 1991), provides excellent advice on how to successfully negotiate from
an understanding of each party's interests, rather than by debating immovable positions.
| |||||
| (back to top)
| |||||
Software Process Improvement | |||||
Making Process Improvement Work: A Concise Action Guide for Software Managers and Practitioners,
by Neil S. Potter and Mary E. Sakry (Addison-Wesley, 2002), is a readable, concise, straightforward, and practical guide
to implementing software process improvement when your real goal is achieving better business results, not just implementing
a specific improvement framework.
| |||||
Practical Software Metrics for Project Management and Process Improvement,
by Robert B. Grady (Prentice Hall, 1992), describes a comprehensive software metrics program used at Hewlett-Packard and ways to tie
measurements into your process improvement activities.
| |||||
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis,
by William J. Brown, et al. (Wiley, 1998), presents a contemporary and entertaining look at the negative patterns of
behavior that cause projects to struggle, along with recommendations for overcoming those ineffective behaviors.
| |||||
| (back to top)
| |||||
Software Quality Engineering | |||||
Peer Reviews in Software: A Practical Guide,
by Karl E. Wiegers (Addison-Wesley, 2002), presents clear and pragmatic descriptions of both the technical and cultural aspects of the inspection process and other
types of peer reviews. It also addresses inspection metrics and the practicalities of implementing a peer review program.
more information | |||||
Software Inspection,
by Tom Gilb and Dorothy Graham (Addison-Wesley, 1993), describes an inspection process that is a bit different from the
classical Fagan method, but at least as rigorous and comprehensive. The book emphasizes collecting inspection metrics
to improve your inspection and development processes.
| |||||
Handbook of Walkthroughs, Inspections, and Technical Reviews: Evaluating Programs, Projects, and Products,
by Daniel P. Freedman and Gerald M. Weinberg (Dorset House, 1990), uses an unusual question-and-answer dialogue format to address many issues surrounding
effective ways to conduct software technical reviews of different types.
| |||||
The Craft of Software Testing: Subsystems Testing Including Object-Based and Object-Oriented Testing,
by Brian Marick (Prentice Hall, 1997), is a practical and contemporary treatment of testing methods, emphasizing
effective white-box testing methods by which developers can test their own code.
| |||||
Testing Computer Software, 2nd Ed.,
by Cem Kaner, Hung Quoc Nguyen, and Jack Falk (Wiley, 1999), is a best-selling, comprehensive text on contemporary
software testing approaches. It covers many different types of testing, the problem tracking system, and managing
testing projects and groups. A large section identifies many types of common software errors.
| |||||
| (back to top)
| |||||
Software Engineering | |||||
Rapid Development: Taming Wild Software Schedules,
by Steve McConnell (Microsoft Press, 1996), is an excellent resource on practical techniques for completing a software project as
quickly as possible through the sensible application of industry best practices. Perhaps the best book available on software engineering.
| |||||
Beyond Software Architecture: Creating and Sustaining Winning Solutions,
by Luke Hohmann (Addison-Wesley, 2003), covers a very wide range of topics related to the practicalities
of designing, building, marketing, licensing, deploying, branding, and releasing commercial software products.
This book contains a wealth of pragmatic guidance based on Hohmann's extensive experience
in the commercial software industry.
| |||||
Software Architecture in Practice, 2nd Edition,
by Len Bass, Paul Clements, and Rick Kazman (Addison-Wesley, 2003), addresses a long-neglected but currently hot topic
in software engineering. It's a comprehensive treatment of software architecture that emphasizes substance, not buzzwords.
| |||||
| (back to top)
|
|||||
Consulting | |||||
Secrets of Consulting: A Guide to Giving and Getting Advice Successfully,
by Gerald M. Weinberg (Dorset House, 1986), provides countless tips on how to think about being an effective consultant,
from one of the most experienced consultants and authors in the software industry.
| |||||
Money Talks: How to Make a Million As a Speaker,
by Alan Weiss (McGraw-Hill, 1997), discusses the synergy between consulting, writing, and speaking, showing ways to
increase revenue and opportunities by tying these activities together. It contains many excellent tips for professional speakers and trainers.
| |||||
Million Dollar Consulting: The Professional's Guide to Growing a Practice,
by Alan Weiss (McGraw-Hill, 1997), presents no-nonsense guidance on how to establish your consulting practice and make it flourish. Weiss's books contain many
great ideas, written in a fast-paced and conversational style.
| |||||
| (back to top)
| |||||
|
|
|||||