| Publications | SCM Patterns | Suggested Books | Community | Software Development | About this site |
|
berczuk.com Home
|
Manage It! will help you understand how to manage projects effectively, taking into account the needs of the people working on the project as well as the needs of the business sponsors. In this regard Johanna Rothman follows in the steps of authors like Jerry Weinberg by showing you how to set up a project environment that helps software developers be more effective and thus be better able to deliver value to their customers. This book has pragmatic advice on how to make progress and issues visible, how to plan a project, and most everything else you need to help a project come to a good conclusion. This book is unique in that while it discusses the benefits of agile lifecycles, it shows you how to make progress in a variety of software lifecycles, and gives advice on when to use the various lifecycles she discusses. Buy this book if you want to be a more effective project manager (or technical lead who works with project managers), or if you want to be more agile but are not sure how.
This a classic book that anyone who build computer systems should read. Some of the specific examples are dated, though many caused me to nod in acknowledgment, especially his observations about alarm clocks and TV remotes, Inmates describes goal directed design, the concept of Pesonas, ideas which, whether they make sense for your project are not, are ones that you should be aware of. This book also explains what "polite software" is and emphasizes the market advantages to good interaction design. Even if this book doesn't change the way you work, it will help you think about the relationship between interaction design and programming. Among the interesting points Cooper makes are Customer Driven isn't aways the best model (customer influenced is better), and neither is Engineering Driven; software designers should go beyond customers say they want and help them to understand what they need. There were a few things towards the end of the book that struck me as just wrong. For example Cooper says that most developers don't believe that they are the best people to test their code. Most Agile software developers would challenge that point. Agile developers would also challenge the recurring theme that the engineering team can't make the leap to understanding the customer enough to build good interaction design. He ignores the value of a specializing generalist, which is an important concept in today's projects. Regardless, this is a book that anyone building software systems should read, if only to understand the concepts underlying interaction design.
Implementing Lean Software Development is an essential resource if you want to understand the value of lean software development. It explains the theory of lean manaufacturing and how it applies to software development. It contains practical advice for implementing Lean and anecdotes to help you to understand the value of Lean. This is a great addition to the library of any agile developer or project manager.
A Wicked Problem is a problem where some of the solution space lies within the problem space; the problem is only fully understood after it is solved. Thsi book describes how many programming problems fall into the catgegory of wicked problems and how waterfall softwarae development practices are not well suited to these kinds of problems.This book explains how agille approaches are more suited for many software development projects. In addition to all of this, this book had many excellent references.
This book is an excellent overview of why Continuous Integration is important and about more than just compiling frequently. The book helps you to understand why to do CI, what you can do beyond building, and how to do it. In addition to general principles, the book points you to some excellent tools and resources. This book is an excellent companion to Software Configuration Management Patterns; it provides teriffic information that support the build patterns in that book.
This book explains, in detail, the value of having a tester role on an XP project. Much of what is written on XP focuses on the role of developers in writing tests, and this book will help you understand the value that testing professionals can add to an XP, or other agile, project. The function of a tester changes when a team applies XP; In the spirt of lean software development, this book shows you how to apply the skills of testers in a new environment. One minor flaw in the book is that it is targeted at testers. While testers need to understand how to apply their skills to an XP environment, others such as Coaches, programmers and project managers also need to understand the value of testers. Get this book to understand how testers can improve your XP project.
This book shows you how to apply patterns and
refactorings to the task of untangling legacy code so that you can
apply effective techniques like test driven development as you
change the code. Since there will always be legacy code, this is a
very practical book. The author emphasises the role of testing as
a change enabler in a way that echos the the ideas in the SCM
Patterns book.
Get this book both as an introduction to what JUnit
can do for you and also as a reference when you are looking
for information on how to solve a particular testing
problem. The book covers the basics of using JUnit as well as issues around database and J2EE testing. It is filled with pointers to many frameworks and resources that can simplify your testing experience. This is not just a testing cookbook. J.B. also discusses issues such as how to design for testing (and how that can improve your architecture) as well as what to do when you need to test legacy code. This is an excellent guide to the details of how to use JUnit effectively.
Developing a language to enable communication
between team memembers and with domain experts seems like a
common enough idea. Most teams do not do this and start their
application by solving technology problems. This book
describes the utility of a domain-driven approach to building
systems and shows you how to apply this approach
effectively. This book makes excellent use of patterns to
demonstrate how design, architecture and development practices
such as continuous integration interact with each other to
determine how good your application will be. Like all good
patterns books, the information in this book seems obvious
once you read it. But it is material most people overlook. Buy
this books to understand the value of a domain driven
approach, or if you already understand that, use it as a guide
for teaching others.
This book helped me understand more details about how to implement
Scrum. The combines some simple overviews of Scrum rules and practices
with case studies. The rules of Scrum are simple. Apply these rules in
your context can be tricky. I found that the case studies that thread
throughout the book really helped me to understand some of the nuances
of the Scrum process. And if you want a checklist, there is a appendix
that summarizes the rules of Scrum. This is a great book if you want to learn about Scrum as a project management tool, or if you have been trying to use Scrum and want a chance to renew your understanding.
Prag Auto is an excellent companion to the Scm patterns book if you are doing Java Dev. It uses simple examples to show you how to set up a private workspace, integration build , release line among others. using open source tools. I wish that the book had referenced the patterns by name so as to set up a common vocabulary.
Dave Thomas and Andy Hunt have written an excellent book, Pragmatic Version Control which explains how to use CVS in a basic and effective way. This book is an excellent companion to the SCM Patterns Book.
This is an excellent summary of the UML, and a great guide to how to
express OO models using the UML. If you buy only one UML book, get this one.
It The third edition is updated to the UML 2.0 spec. Fowler explains that
the book is best for people who want to sketch UML diagrams to explain their
designs, rather than who want to use UML for formally, but that may well be
all you need to do with UML. This book also explains some key concepts
of OO design. Every software developer should have a copy of
this book on their shelves!
This is an excellent guide to writing User Stories. In addition to explaining what user stories are and how to write them, the book shows you how user stories fit into the development process and answers many of the common questions that arise when one starts writing stories. If you want to start using stories as part of your development process, buy this book; you'll want to read it and have it around for reference later.
I read this book after working on Struts
applications for a few months, and it added understanding to
my knowledge about Struts applications. I marked many pages
that illustrated approaches that I wanted to use on my
projects, either because my team had problems with that aspect
of Struts, or because the approach in the book seemed
better. In addition to explaining how to build Struts
applications, it also provides good, practical, advice about
structuring your Struts applications so that they are
maintainable and understandable. I refer to this book often,
and it is an excellent complement to the online
documentation.
This book will serve you well whether you know
Patterns and are trying to learn C# or know C# and are trying to
understand Patterns better. It is not a replacement for the Design
Patterns Book or a good C+ reference, but it is an excellent companion
for both.
Finding the path to the right process for your project
and organization is tricky, and this book provides a map of the
terrain that can guide you to the implementation appropriate for
your project. This book will guide you through the steps that you
need to take if you need to implement an SCM process for your
organization at an organization, application, or project level.
It includes customizable templates and examples to more quickly
get you to your SCM goals.
SQL for Smarties is a book that you should own if you work with relational databases. It has good practical advice and good examples. It is useful both for improving your SQL skills and as a reference.
In this book McBreen gives a well reasoned
discussion of what XP is and is not, when it works and when it
might not work. The book is positive about the merits of XP,
when used in the right setting. This book will be valuable to
anyone who is considering changing their development approach,
even is they are not considering Extreme Programming. Both
enthusiast and skeptics alike will find the material in the
book thought provoking.
Planning Extreme Programming gives you advice on how
to fit the XP Planning game, and related aspects into the
larger context. This book will be particularly useful if you
have had to reconcile the XP approach of incremental
development and planning with an organization that takes a
master plan approach.
Extreme Programming Installed describes how to
implement XP practices with practical advice based on
experience. Buy this book when you are ready to implement XP
for your team.
This is one of the most useful books on software architecture that I have read. It discusses the qualities of a good architecture, and how the organization and process relates to the architecture.
The principles that this book discusses: Release,
Collaboration Ensemble and Play are extremely relevant to
creating effective software teams. The principles are inspired
by observing how theatre companies work, but they also have a
basis in lean manufacturing. If you work as a
software developer or manager and have ever worked on a
theatre production (community theatre or at school) a light
will go on immediately. If you haven't The data that the
authors provide about lean manufacturing practices and
software development will convince you that there is a lot
that we can learn from this metaphor. The theatre examples will be
helpful in explaining how the principles work if you need to
communicate them to a manager who does not understand software
development. Buy this book and place it along side your books
on agile software development; you will want to read it and refer
back to it frequently.
Through examples and a collection of patterns, this
book explains what test driven development is, and what it is
for. Every agile developer should read this book.
This is an
excellent discussion of how the principles of Lean
Manufacturing apply to Software Development. The authors
explain why the usual metaphor of software as manufacturing is
not quite right, and why the metaphor of Lean Manufacturing
is. It is well written and will be useful to refer to as a
reference.
Excellent book that explains Scrum, one of the more
popular agile development techniques. The approach in this
book is very pragmatic. The authors discuss what Scrum is and
how to apply it in various environments.
All you ever wanted to know about product
management, but were afraid to ask. This book discusses the
relationship between technical-architecture and
marketing-architecture. This is an oft-neglected subject, but
it is important as marketing and technology are both important
for a successful product. This is a great book to read if you
design software systems, or are involved in product
management.
This is a classic book. Everyone involved with software systems: developers, managers, and customers, should read this book.
This book is an excellent collection of tools to have
available when designing and building enterprise or web
applications. This is more of a patterns collection or pattern
catalog, than a pattern language, but the author ties the patterns
together in a way that makes it possible to compare and contrast the
various approaches. This is also a very readable book. Get a copy,
skim through it to get familiar with what is there, and keep it on
your shelf for ready reference.
This book discusses the differences between a craft
approach and an engineering approach to building software, and the
benefits of using a craft approach to build most software
applications. It is a great book to read to learn how to think about
your career, or how to build a software organization. This book is
not about Agile Development, per se , but if you are interested in
that, you should read this book too because the Agile development
works best when there are people skilled in the craft of software
working on the project.
Patterns on how to model business and systems and organizations. This book will save you from heading into a lot of dead ends if you walk into a system when you need to model a business process. A book which covers similar material, but from a database modeling point of view is Data Model Patterns by David Hay. While these are "patterns" in the more conventional sense (recurring structures, but not broken down into Problem/Context/Solution), this book will tell you a lot about database design.
This the one book everyone who talks about patterns has should read. It collects the basic software design idioms everyone doing object-oriented software development should know.
Using Design Patterns in more detail. This book discusses some of the fine points of the Patterns in Design Patterns . This is a well written book that is based on a series of columns from C++ Report . Unlike many compilations of columns, this book reads like a coherent book.
This book has system level patterns than design patterns. It also uses a lot of examples from distributed systems.
This is an excellent book that explains very clearly
many practical things that people often ignore. A great book to
read, and one that you will want to re-read sections of from time to
time.
This book describes what to do to change code that has gotten messy with time, and how to proceeed to make the changes. If you've been doing Object-Oriented programming for a while you probably know much of what is in here, but it is worth reading anyway, both as a reminder, and as a way to explain the techniques to others. Fowler describes the refactorings very clearly, with guidelines on when to use each technique. Like Design Patterns, this book provides a vocabulary for the important techniques you use to change code. The examples are in Java, but the techniques can be adapted to any OO language, such as C++ quite readily.
This is an excellent book about how to build good interfaces. The book, at first glance, is geared towards uasbility professionals, but anyone who has a role in building or specifying systems that have some sort of user interface will benefit from reading, and referring to, this book.
An excellent book that describes best practices for
the entire software development lifecycle. This should be required
reading for anyone planning or working on a software
project.
This book does a great job of describing enough of what you need to know about HTTP to have a useful conversation about web architecture. It is written well enough that you can just read through it, and it also make a great resource when you need to look something up. And there is all sorts of useful reference material in the appendicies.
An excellent book. It describes what is in an effective web sites, and provides many examples of good and bad web design. People who work with web sites at all levels: users, project managers, and people who implement web sites, will find this book incredibly useful and inspirational. Read this book before doing any work on a web site or intranet.
The best guide and refererence to XML I've seen so far. I've had people recommend The XML Bible by Harold to me, but this book seems like a more useful reference.
Like his book on XML, this book gives you enough to get started, and has enough in it to keep as a refererence.
A mix of Norman's usual excellent ideas about usability combined with the market concepts of Crossing The Chasm . An excellent book that guides us to the coming era when computers are in tools we use everyday, rather than complicated devices we need to be experts to use.
This is one of those classic books that you should read. Lots of good programming basics.
Coplien explains how to apply commonality and variability analysis to solve problems using all the tools at the disposal of the C++ programmer. The book shows how and when to combine the object-oriented, functional, and generic paradigms along with other tools such as patterns. The book is primarily of use to the experienced C++ developer/designer, but anyone with a interest in how software design is influenced by the application language will find the book interesting.
This is an excellent book to introduce someone to C++ with. I've recommended the previous editions to people, with much success. The third edition is updated for the standard, and includes information on the standard library, STL, etc. This book is much more approachable to Stroustrup's The C++ Programming Language 2nd Edition . I'd buy this book first, and then the The C++ Programming Language . They both should be part of a C++ developer's library.
This book and More Effective C++ list many of the idioms a serious C++ programer should know.