Synopses & Reviews
As the technology leader at a small software company, you need to focus on people, products, processes, and technology as you bring your software to market, while doing your best to put out fires and minimize headaches.
Growing Software is your guide to juggling the day-to-day challenges of running a software company while managing those long-term problems and making sure that your business continues to grow. With practical, hands-on advice, Growing Software will teach you how to build and lead an effective team, define and sell your products, work with everyone from customers to CEOs, and ensure high-quality results.
Instead of learning by trial and error, you'll benefit from author Louis Testa's 20+ years of management experience. Testa combines big-picture advice, specific solutions, and real-life anecdotes to teach you how to:
- Work effectively with your CEO and executive team
- Improve development team efficiency and enthusiasm
- Evaluate your software methodology to improve effectiveness and safeguard against failure
- Use product prototypes to bridge the gap between marketing and engineering
- Defuse technology time bombs
Whether you're new to managing software or newly lost, Growing Software will help you and your growing company thrive.
In small but growing software companies, the engineering manager is in the unique position of having to deal with the technical team and other senior managers, while at the same time taking direction from the CEO. Once the company begins to grow, problems that once seemed small can explode into time-consuming crises. "Growing Software" offers critical advice for managing software development teams and the software that they're creating. The book deals with almost everything that a typical manager encounters-from personnel decisions and relations with other departments to project estimates and software release strategies. It provides general advice and specific solutions, as well as detailed templates and spreadsheets to help you put concepts into action. Whether you're new or newly lost, "Growing Software" gives you the rules to follow to make your experience a success.
About the Author
Louis Testa is Senior Engineering Manager at Galois, a small company that specializes in high-assurance software. He received his BS (with honors) in Engineering from Caltech and his MS EE from the University of California, Berkeley. He has managed engineering teams for over 20 years, and his papers have been featured at many technology conferences. He blogs at www.gspractices.com.
Table of Contents
Dedication; ACKNOWLEDGMENTS; INTRODUCTION; Book Organization and Conventions; Part I: DEVELOPMENT TEAM; Chapter 1: GETTING STARTED; 1.1 Finding Your Way in a New Job; 1.2 Understanding the People; 1.3 Learning the Technology, Process, and Product; 1.4 Understanding the Customer; 1.5 Understanding the Corporate Business Workflow; 1.6 Back to the Big Picture; Chapter 2: MANAGING A DEVELOPMENT TEAM; 2.1 Understanding Your Core Management Values; 2.2 Communicating with Your Team; 2.3 Conflict Resolution; 2.4 Training; 2.5 Coaching; 2.6 Motivating Your Team Members; 2.7 Coaching Problem Employees; 2.8 Reviews and Evaluations; 2.9 Additional Reading; Chapter 3: CREATING AN EFFECTIVE DEVELOPMENT TEAM; 3.1 Effective Team Organization; 3.2 Programmer Efficiency; 3.3 Office Space; 3.4 How Other Teams Communicate with Engineering; 3.5 New Manager, Old Habits; 3.6 Have Fun; 3.7 Additional Reading; Chapter 4: GROWING A SOFTWARE TEAM; 4.1 Designing a Selection Process; 4.2 Interview Traits; 4.3 Pulling It All Together; 4.4 Additional Reading; Part II: PRODUCT AND TECHNOLOGY; Chapter 5: DEFINING THE PRODUCT; 5.1 Product Definition Process; 5.2 Product Definition Contents; 5.3 The Whole Product Concept; 5.4 Define the Product Using Prototypes; 5.5 Build a Relationship with Marketing; 5.6 Customer Perception of the Product; 5.7 Improving a Product in an Alpha Release; 5.8 Understanding an Existing Product's Composition; 5.9 Additional Reading; Chapter 6: DRIVING RELEASES; 6.1 Release Planning; 6.2 The Release Process; 6.3 Release Version Identification; 6.4 Additional Reading; Chapter 7: EVALUATING YOUR TOOLS AND METHODS; 7.1 Backing Up Intellectual Property; 7.2 Creating and Managing Development Documentation; 7.3 Source Control Versioning; 7.4 Software Build Method and Timing; 7.5 Software Release Process; 7.6 Bug-Tracking System; 7.7 Selecting the Right Development Tools; 7.8 Additional Reading; Chapter 8: ASSESSING YOUR TECHNOLOGY; 8.1 System Documentation; 8.2 System Scalability; 8.3 Failure Modes; 8.4 Error Handling and Messages; 8.5 Software System Flexibility and Maintainability; 8.6 Third-Party Packages Integrated into the System; 8.7 System Application Programming Interface; 8.8 Security; 8.9 Data Reporting and Analysis; 8.10 International Support; 8.11 Looking at the Big Picture; 8.12 Additional Reading; Part III: OUTSIDE OF ENGINEERING; Chapter 9: WORKING WITH YOUR COMPANY; 9.1 Company Culture and Practices; 9.2 Handling Interteam Problems; 9.3 Growing Peer Relationships; 9.4 Engineering Team Respect; 9.5 Additional Reading; Chapter 10: WORKING WITH THE CEO AND THE EXECUTIVE TEAM; 10.1 Supporting Your Boss; 10.2 Collaborating with the Executive Team; Chapter 11: LISTENING TO YOUR CUSTOMERS; 11.1 Customer Satisfaction; 11.2 Customer Meetings; 11.3 Closing the Deal; 11.4 Support and Customer Requests; Part IV: MAKING WORK FLOW: PROJECTS, PROCESS, AND QUALITY; Chapter 12: PROJECT ESTIMATING; 12.1 Building an Estimate; 12.2 Collecting Raw Project Data; 12.3 Additional Reading; Chapter 13: STARTING A PROJECT; 13.1 Understanding the Goal; 13.2 Assembling the Project Team; 13.3 Setting Priorities; 13.4 Selecting the Framework; 13.5 Mapping out the Timeline; 13.6 Creating a Project Plan; 13.7 Kickoff Meeting; 13.8 Additional Reading; Chapter 14: PROJECT EXECUTION AND TRACKING; 14.1 Managing a Project's Execution; 14.2 Project-Tracking Approaches; 14.3 Change Control Process; 14.4 Risk Management; 14.5 Additional Reading; Chapter 15: DESIGNING A SOFTWARE DEVELOPMENT PROCESS; 15.1 What's in a Software Development Process?; 15.2 Types of Development Processes; 15.3 Customizing a Process; 15.4 Selecting a Process; 15.5 Introducing a Process; 15.6 Additional Reading; Chapter 16: PROCESS IMPROVEMENT; 16.1 Creating a Process Model; 16.2 Analyzing the Process Model; 16.3 Getting It Going; 16.4 Additional Reading; Chapter 17: UNDERSTANDING QUALITY ASSURANCE; 17.1 Importance of Quality; 17.2 Quality Defined; 17.3 Valuing Quality; 17.4 Quality Assessment; 17.5 QA Metrics; 17.6 The Impact of Defects on Quality and Productivity; 17.7 Additional Reading; Part V: PLANNING THE FUTURE; Chapter 18: SETTING THE DIRECTION; 18.1 Listen to the Market; 18.2 Create a Whole Product; 18.3 Defuse Technical Time Bombs; 18.4 Plan a Technology Overhaul; 18.5 Optimize Customer Setup; Chapter 19: PRODUCT ROADMAP AND STRATEGY; 19.1 Creating a Product Roadmap; 19.2 Evaluating Choices; 19.3 Creating One-Page Assessments; 19.4 Additional Reading; Chapter 20: GOING FORWARD; SOFTWARE COMPANY STRUCTURE; Company Tasks; Typical One-Person Company; Typical Two-Person Company; Twelve-Person Software Company; Twenty-four to Fifty-Person Software Company; Hundred-Plus-Person Software Company; Conclusion; INTERNATIONALIZATION; Internationalization Questions to Ask; Best Practice Approach to Internationalization; Summary; CORPORATE WORKFLOW DIAGRAM; Creating a Simple Workflow Diagram; Workflow Example; COLOPHON;