Managing a software development project is a complex process. There are lots of deliverables to produce, standards and procedures to observe, plans and budgets to meet, and different people to manage. Project management doesn't just start and end with designing and building the system. Once you've specified, designed and built (or bought) the system it still needs to be properly tested, documented and settled into the live environment. This can seem like a maze to the inexperienced project manager, or even to the experienced project manager unused to a particular environment.
A Hacker's Guide to Project Management acts as a guide through this maze. It's aimed specifically at those managing a project or leading a team for the first time, but it will also help more experienced managers who are either new to software development, or dealing with a new part of the software life-cycle.
The book will also be useful to designers and architects, describing important design techniques, and discussing the important discipline of Software Architecture.
This new edition:
Table of Contents
Introduction: Should I be reading this book?; So what's this all about?; What do you assume I know?; Will you tell me about short-cuts?; How does this book relate to structured methods?; What's changed in the second edition?; Success and failure: Why do software projects fail?; So how do I know if I have succeeded?; Prevention and cure; What do I have to deliver?; How do I ensure success?; The art of project management: What does a project manager do?; What are the key skills of a project manager?; How do I lead?; What if people make mistakes?; How do I build a team?; How do I make sure the team is complete?; How do I plan, report and communicate?; How do I gain management approval and confidence?; How expert do I have to be?; How do I spot problems?; Is programming important?; What do I do?; The development life-cycle: What is the Waterfall Life-cycle?; What is missing from most Waterfall methods?; How do Iterative and Incremental methods work?; How does Rapid Application Development work?; What can go wrong?; How do I choose a method?; How do I use a method?; How do I control changes?; What is the role of Prototyping?; How should I structure my project?; Structuring the development: How do you divide up a development?; How do I split the project into phases/iterations?; What are my options for team structures?; What jobs must be done?; How do I structure testing?; Planning and estimating: What are the principles of planning?; How do I complete my plan?; How do I plan the staffing of the project?; How can I present my plan?; How do I know I've got the estimates correct?; Isn't there a better way to estimate things?: How do I resist time and budget pressures?; What is the "testing trap"?; What other resources do I need?; What do I do if I'm not meeting my plan?; So how should I create my plan?; The strategy: What is the role of a strategy?; How do I make a business case?; How do I know what quality is required?; What else do we need to decide?; What is a quality plan?; What goes into a strategy report?; How do I control communications with people?; What do I deliver?; Analysis: What do they need?; How do I document requirements using Use Cases?; How does thinking about objects help?; How do I develop a Class Model?; How do I describe the business processes?; What are the "architectural requirements"?; How and why should I create a data model?; How do I document the requirements?; Which techniques should I use?; What are the risks during strategy & analysis?; What do I deliver?; Procurement- buying it in: What's a typical procurement process?; What are the different types of procurement?; How do I choose the right supplier?; How do I control the supplier?; What else do I need to check?; How do I work with an unsigned contract?; What do I deliver?; Architecture and design: Why do I need a design?; What are the properties of a good design?; What does the architect do? What goes into the design report?; How does the design relate to the analysis model?; How do I create a good design?; Why should I use patterns and antipatterns?; What are component, layer and service architectures?; How do I make my system more useable?; How do I make my system more flexible?; How do I integrate my system with others?; What are the risks during design?; What do I deliver?; Build, document and test: How do I ensure the code is good?; How do I do good testing?; What about user documentation?; What is configuration management?; Who is responsible for quality?; What are the best practices in the building stage?; What's in the project file?; What do I deliver?; The transition into use: How do I move my system into production?; How do I prepare the users?; So how do I manage this?; How do I plan for long-term support and maintenance?; What are the risks in transition stage?; How do I know when I've finished?; What do we deliver?; Production and maintenance: How do I manage a maintenance effort?; What are the right attitudes to maintenance?; What happens when someone important leaves?; How do systems die?; Success!; Further reading; Index.