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.
DEVELOPMENT TEAM
Chapter 1 GETTING STARTED
Finding Your Way in a New Job
Understanding the People
Learning the Technology, Process, and Product
Understanding the Customer
Understanding the Corporate Business Workflow
Back to the Big Picture
Chapter 2 MANAGING A DEVELOPMENT TEAM
Understanding Your Core Management Values
Communicating with Your Team
Conflict Resolution
Training
Coaching
Motivating Your Team Members
Coaching Problem Employees
Reviews and Evaluations
Additional Reading
Chapter 3 CREATING AN EFFECTIVE DEVELOPMENT TEAM
Effective Team Organization
Programmer Efficiency
Office Space
How Other Teams Communicate with Engineering
New Manager, Old Habits
Have Fun
Additional Reading
Chapter 4 GROWING A SOFTWARE TEAM
Designing a Selection Process
Interview Traits
Pulling It All Together
Additional Reading
PRODUCT AND TECHNOLOGY
Chapter 5 DEFINING THE PRODUCT
Product Definition Process
Product Definition Contents
The Whole Product Concept
Define the Product Using Prototypes
Build a Relationship with Marketing
Customer Perception of the Product
Improving a Product in an Alpha Release
Understanding an Existing Product's Composition
Additional Reading
Chapter 6 DRIVING RELEASES
Release Planning
The Release Process
Release Version Identification
Additional Reading
Chapter 7 EVALUATING YOUR TOOLS AND METHODS
Backing Up Intellectual Property
Creating and Managing Development Documentation
Source Control Versioning
Software Build Method and Timing
Software Release Process
Bug-Tracking System
Selecting the Right Development Tools
Additional Reading
Chapter 8 ASSESSING YOUR TECHNOLOGY
System Documentation
System Scalability
Failure Modes
Error Handling and Messages
Software System Flexibility and Maintainability
Third-Party Packages Integrated into the System
System Application Programming Interface
Security
Data Reporting and Analysis
International Support
Looking at the Big Picture
Additional Reading
OUTSIDE OF ENGINEERING
Chapter 9 WORKING WITH YOUR COMPANY
Company Culture and Practices
Handling Interteam Problems
Growing Peer Relationships
Engineering Team Respect
Additional Reading
Chapter 10 WORKING WITH THE CEO AND THE EXECUTIVE TEAM
Supporting Your Boss
Collaborating with the Executive Team
Chapter 11 LISTENING TO YOUR CUSTOMERS
Customer Satisfaction
Customer Meetings
Closing the Deal
Support and Customer Requests
MAKING WORK FLOW: PROJECTS, PROCESS, AND QUALITY
Chapter 12 PROJECT ESTIMATING
Building an Estimate
Collecting Raw Project Data
Additional Reading
Chapter 13 STARTING A PROJECT
Understanding the Goal
Assembling the Project Team
Setting Priorities
Selecting the Framework
Mapping out the Timeline
Creating a Project Plan
Kickoff Meeting
Additional Reading
Chapter 14 PROJECT EXECUTION AND TRACKING
Managing a Project's Execution
Project-Tracking Approaches
Change Control Process
Risk Management
Additional Reading
Chapter 15 DESIGNING A SOFTWARE DEVELOPMENT PROCESS
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.