This book aims to provide help and advice for IT professionals in this situation by offering solutions to the most commonly encountered problems, such as getting a project out on time, coping with the demands of leading a team, implementing new methodologies or technologies. It is written by a team leader for other team leaders with a focus on practical advice rather than management theory or process issues. It would be targeted at experienced software engineers, developers and architects who have been promoted to the role of team leader.
Foreword by Shari Lawrence Pfleeger
THE NEW LEADER
1 I’ve just been made team leader of a new project. Where do I start?
2 I’m taking over the leadership of an existing project. Where do I start?
3 I am the most experienced engineer on the team. If I let others do the design and coding, they will not do it as well as I would. How can I do the important design and coding, if I am expected to write documents and plans all the time?
4 When should I review other people’s work, and how?
5 When should I call a meeting and how should I chair it?
6 I have to interview a job applicant. How do I go about it?
7 How do I make a presentation?
8 How do I earn the respect of my team?
9 How do I draw up a project plan? What use is it?
10 I’ve been told when I must deliver my project, but the time-scale doesn’t seem realistic to me. What should I do?
11 How can I stop my project from coming in late?
12 My team is working closely with another team, but the quality of their output is poor. What can I do?
13 My last project never seems to go away, I’m constantly doing fixes and changes to it. What can I do?
14 How can I get a good job done when our procedures are so bad?
15 What is meant by ‘teambuilding’? Is there something I’m supposed to be doing to build a better team?
16 Sometimes I think I’m being a soft touch and letting people walk all over me. Other times I think people resent me for interfering. How do I know when I’m getting the style right?
17 One of my team members is an expert in an important aspect of the project that I know little about. I feel like a fool trying to lead on this issue. What can I do?
18 I can’t get my team to do any design or documentation, they just want to code. What can I do?
19 When should I let someone do a thing their own way, and when should I make them do it my way?
20 How many hours should I and my team be working?
21 I want to praise people when they do well, but it sounds so condescending. How should I reward good work?
22 I’ve got someone on my team who’s a real problem. What should I do?
23 I think one of my people is going to leave. How can I prevent them from going?
24 One of my team is spending too much time chatting and web browsing. What should I do?
25 What is meant by ‘requirements capture’? How do I go about it?
26 The customer keeps asking for changes and improvements. Can I really say ‘no’?
STRESS AND CONFLICT MANAGEMENT
27 I’m very stressed at the moment, and so are some of my team. What can I do about it?
28 My team seems to spend too much time arguing. What can I do?
RELATIONSHIP WITH MANAGEMENT
29 I want to tackle the project in a particular way. How can I make sure that my management will let me?
30 My boss is useless. How can I put up with this?
31 I feel I’m not getting the support I need from management. What can I do about it?
32 I constantly have to make decisions on the project, often with little time for consideration. How can I be confident that I’m getting the decisions right?
33 I have to take a decision, and it involves taking a significant risk. How can I decide whether to take the risk?
ANALYSIS AND DESIGN
34 Is ‘analysis’ really necessary, or can I go straight into design?
35 How do I decide on the best architecture and design for my project?
36 We have adopted an object-oriented approach, but everyone on the team seems to have a different idea about how best to use it. How should an object-oriented approach be used?
37 Several of my team members want to adopt a new technology on the project. Should we use the new technology or do it ‘the old way’?
38 The design of my project is in a mess. The architecture needs restructuring, but there’s no time to do it. What should I do?
TESTING AND PROJECT RELEASE
39 Should I concentrate on unit testing or final testing of my project in order to catch the most bugs in the least time? /
40 We’re about to release our product to our customer. How can I make sure it goes well?
As software engineering matures as a profession, the position of team leader the person responsible for the technical direction of the project and the work of the other engineers on the team is becoming increasingly recognized as crucial to the success of a software development project. This book provides the help needed by team leaders to enable them to rise to the responsibility of leading a project. It is a practical book, containing tried and tested advice and techniques to help leaders overcome common problems, lead other people, make good decisions, and get projects out on time.
This book is for anyone whose work involves both of the following:
This book is most relevant for someone leading a medium-sized team, say 4 to 8 people. It should also prove useful, to a lesser extent, to the leader of a single-person project, or to a leader of a larger team or of a team of teams. This is a practical book for practising engineers. It is not intended to teach management theory, nor to contain the very latest thinking in every field. It promotes those practices that have been shown to work in the real world.
A really good software team leader needs to be totally competent with technology, and also very good at getting the best out of other people. Its a unique position, combining detailed hands-on software knowledge and skill, and yet requiring the leader to be able to step back from the details and see the broader picture.
The way that a team is led has a critical impact on the success of a software project. The team leader makes a vital contribution to the quality of the software, the appropriateness of the technical decisions made, and the quality of team-spirit and motivation that the team members enjoy.
Becoming a team leader forces you to have a different perspective on software development. As a developer, you know that you will be judged mostly by the quality of the designs and the code that you produce. But as a leader, you will be judged in two different ways:
Leading a software development team can be stressful, and it can be risky. It might not be as stressful or as risky as, say, managing a football team; but it does share some of the same stresses and pressures of trying to satisfy many people who are hungry for success, with there being no prospect of getting a second chance if things go wrong.
Not surprisingly, its a job that not many people can do well. The difficulty of the task makes it all the more rewarding when you know you are doing it well. Once you have led a successful project, you will want to keep doing it and you will want to keep getting better at it. I hope that you find this book useful in helping you to achieve and to build on success.
The book is organized around real-world problems faced by leaders in their everyday work, such as how do I draw up a project plan? and how do I earn the respect of my team?. Many real problems have both people aspects and technical aspects, and the book approaches these together, as different dimensions of a given situation, rather than as completely separate issues.
However, as can be seen from the contents page, the sections have been collected into groupings according to the major aspect of each, so you can start reading about a particular aspect of the job if you feel the need to do so.
The individual sections are quite self-contained, and include references to other relevant sections and to the bibliography where relevant, so they can be read in any order.
The software industry does not have a universally recognized set of job titles; they tend to vary from one organization to another. In this book, I have used the following job titles:
If your work (or part of your work) includes the role of Team Leader as defined above, this book is for you. It doesnt matter whether you have been given responsibility officially, or you just find yourself leading other technical people because that seems the best way to organize things. It doesnt matter what your job title is.
The boundary between these jobs is not very distinct. Most team leaders do some development, and every team leader has to do some planning and other project management activities. In this book I havent distinguished between tasks on the basis of who should do them. Ive just tried to give the best help with a task that I can, for those people who need it.
If you wish to comment on any aspect of this book, you can do so by visiting my website, http://www.richardwhitehead.com.
I would like to thank Robert Sander, Oemer Karacan and Donald Matthews, the reviewers of this book, for all their hard work and words of wisdom. Thanks to Mark Birdseye for giving me a copy of Why the Neanderthals Became Extinct.
I am very grateful for the helpfulness and encouragement shown to me by everyone at the publishers, Pearson Education, who have kept me going and helped me to get it right.
Thanks also to my friend David Krause for his detailed reviewing, helpful criticism and late-night e-mails.
I must also thank my sons, Thomas and James, for tolerating all the times that Daddy spent scribbling when he should have been playing.
Last but not least, I thank my wife Susan, without whose love and support I would never have completed this book.