Preface


The goal of developing software is to deliver something of value to customers. To work effectively, you need to strike the right balance of people, process, and tools. Everyone seems to have favorite tools, techniques, and processes. Software companies sell tools and methods to help you be more effective at building software. Consultants evangelize their methods to convince you that they know how to help your organization and project teams do a better job. We as developers continually learn new techniques and apply new tools to help us do more, in less time, with higher quality.

With over seventy-five years of combined experience working on and observing different software projects, we, the authors, have arrived at a conclusion that some enlightened folks have already figured out: Every project is different, and those things that help one team be a spectacular success might, if not applied with common sense, cause another team to fail miserably. Each team needs to decide how to use a specific process, and then continually adjust to make improvements.

In the face of this continual change, how can a project team know what to change to be most productive? The answer, in our opinion, lies in learning as many different techniques as possible, learning how to effectively use tools that support the different techniques, and determining what combinations work well, and when they work. This suggests an ongoing process of learning.

Good programmers learn from other programmers. They learn by looking at code and reading books on different programming methods. Testers improve by learning their craft from master testers, studying test designs, and learning how to use new techniques and tools. In fact, any individual practitioner learns from others doing the same job and by looking at examples. Each practitioner needs to develop a personal style for working effectively, both as an individual and as a member of a larger team.

Teams too, need examples of how other teams work in order to develop their own style of working together. This book is an example of how a small team developed a software tool. It is a chronicle of what we did and why we did it. We have tried to explain why things worked (or didn't), and we discuss what we'll change next time. Along the way we identify the lessons we learned and offer some ideas for generalizing our experiences.

Your job, as the reader, is to observe what we did and learn from our experiences. If you are working on a small software development project, you will immediately identify with some of our experiences. You may have already faced some of the problems we encountered and solved them to your own satisfaction, or you may still be struggling to find satisfactory solutions. We hope the book provides you with some useful ideas about how to choose and use tools, work with others effectively, and select the techniques that fit your personal and team styles best.

All of the authors have worked in the software industry for many years on different types of projects, from very small ones to very large ones. We all have a passion for what we do. We came to know each other when we worked for Rational Software (which IBM has since purchased). Gary, who started this project, worked on the first Rational Suite project and then changed jobs to work with the Rational Unified Process, or RUP, group. Liz and Chris worked with Gary on Rational Suite and Jas was a member of the RUP group .

We have seen projects succeed with RUP and other processes. We have also seen projects fail using the same processes. We wanted to tell a story of a project that we hoped would succeed. We think we did succeed. More importantly, our customer thinks we succeeded. This is our story and we hope you enjoy reading it.



Software Development for Small Teams. A RUP-Centric Approach
Software Development for Small Teams: A RUP-Centric Approach (The Addison-Wesley Object Technology Series)
ISBN: 0321199502
EAN: 2147483647
Year: 2003
Pages: 112

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net