You are previewing Growing Software.
O'Reilly logo
Growing Software

Book Description

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.

Table of Contents

  1. GROWING SOFTWARE
    1. ACKNOWLEDGMENTS
    2. INTRODUCTION
      1. Book Organization and Conventions
        1. Company Growth Stages
        2. Real-Life Accounts
        3. Spreadsheets
        4. Templates
    3. I. DEVELOPMENT TEAM
      1. 1. GETTING STARTED
        1. Finding Your Way in a New Job
          1. Dealing with the Immediate
            1. Maintain a List of Issues and Efforts
            2. Delegate When Possible
          2. Undergoing Initial Training
          3. Collecting Information
            1. Creating a Discussions Summary
            2. Putting Your Summary to Work
        2. Understanding the People
          1. Reluctance to Reveal Information
            1. Identifying the Company Culture
        3. Learning the Technology, Process, and Product
        4. Understanding the Customer
        5. Understanding the Corporate Business Workflow
        6. Back to the Big Picture
      2. 2. MANAGING A DEVELOPMENT TEAM
        1. Understanding Your Core Management Values
          1. Trust
          2. Flexibility
          3. Sincerity
          4. Confidentiality
          5. Respect
          6. Empowerment
        2. Communicating with Your Team
          1. One-on-Ones
          2. Project Communication
          3. Team Meetings
        3. Conflict Resolution
        4. Training
        5. Coaching
        6. Motivating Your Team Members
        7. Coaching Problem Employees
        8. Reviews and Evaluations
          1. Creating the Review
          2. Delivering the Review
          3. Providing Late and Deficient Reviews
        9. Additional Reading
      3. 3. CREATING AN EFFECTIVE DEVELOPMENT TEAM
        1. Effective Team Organization
        2. Programmer Efficiency
        3. Office Space
        4. How Other Teams Communicate with Engineering
        5. New Manager, Old Habits
        6. Have Fun
        7. Additional Reading
      4. 4. GROWING A SOFTWARE TEAM
        1. Designing a Selection Process
        2. Interview Traits
          1. Technical Skills
          2. Success History
          3. Cultural Fit
          4. Work Habits and Preferences
          5. Industry Experience
          6. People Skills
          7. Communication Skills
          8. Personality
          9. Enthusiasm
          10. Problem-Solving Ability
          11. Sense of Humor
        3. Pulling It All Together
          1. Phone Screening
          2. The Office Interview
          3. Coaching Your Interview Team
          4. Interview Sessions to Avoid
            1. Marathon or Stress Interview
            2. Hit-and-Run Interview
            3. Lunch Committee Interview
          5. Review Session
          6. Making the Choice
        4. Additional Reading
    4. II. PRODUCT AND TECHNOLOGY
      1. 5. DEFINING THE PRODUCT
        1. Product Definition Process
        2. Product Definition Contents
        3. The Whole Product Concept
        4. Define the Product Using Prototypes
          1. Prototypes in General
          2. Quick and Nimble Approaches
          3. Clickable User Interface Prototypes
          4. User Interface Design
        5. Build a Relationship with Marketing
          1. Avoid Poor Relationships
          2. Keep Marketing and Engineering Teams Together
          3. Build a Balanced Relationship
        6. Customer Perception of the Product
          1. Surprise! Unplanned Features
        7. Improving a Product in an Alpha Release
        8. Understanding an Existing Product's Composition
        9. Additional Reading
      2. 6. DRIVING RELEASES
        1. Release Planning
          1. Release Timeline
          2. Early Release Strategy
            1. Alpha Release
            2. Beta Release
            3. Limited Release
          3. Planning Product End of Life
        2. The Release Process
          1. Release Criteria
          2. Process Steps
          3. Post-release Review
        3. Release Version Identification
          1. Three-Number Release IDs
          2. Patch Releases
          3. Component Numbers vs. Release Numbers
          4. Numbering Across Releases
          5. Software for the Gentleman Farmer
        4. Additional Reading
      3. 7. EVALUATING YOUR TOOLS AND METHODS
        1. Backing Up Intellectual Property
          1. Backup Frequency
          2. Offsite Copies
          3. Disk-Only Backup
        2. Creating and Managing Development Documentation
        3. Source Control Versioning
        4. Software Build Method and Timing
        5. Software Release Process
        6. Bug-Tracking System
        7. Selecting the Right Development Tools
        8. Additional Reading
      4. 8. ASSESSING YOUR TECHNOLOGY
        1. System Documentation
        2. System Scalability
        3. Failure Modes
        4. Error Handling and Messages
        5. Software System Flexibility and Maintainability
        6. Third-Party Packages Integrated into the System
        7. System Application Programming Interface
        8. Security
        9. Data Reporting and Analysis
          1. Data Warehouse
        10. International Support
        11. Looking at the Big Picture
        12. Additional Reading
    5. III. OUTSIDE OF ENGINEERING
      1. 9. WORKING WITH YOUR COMPANY
        1. Company Culture and Practices
          1. Corporate Style
          2. Management Style
          3. Meeting Style
            1. Effective Meetings
        2. Handling Interteam Problems
        3. Growing Peer Relationships
        4. Engineering Team Respect
        5. Additional Reading
      2. 10. WORKING WITH THE CEO AND THE EXECUTIVE TEAM
        1. Supporting Your Boss
          1. Ensuring Clarity of Goals
          2. Providing Useful Information
          3. Communicating
          4. Influencing Decisions
        2. Collaborating with the Executive Team
          1. Resolving Conflict
          2. Taking up Your Mantle with Confidence
          3. Opening Communication
          4. Collaborating Effectively
      3. 11. LISTENING TO YOUR CUSTOMERS
        1. Customer Satisfaction
        2. Customer Meetings
        3. Closing the Deal
          1. When the Sales Team Overpromises
          2. Requests for Quotes
        4. Support and Customer Requests
    6. IV. MAKING WORK FLOW: PROJECTS, PROCESS, AND QUALITY
      1. 12. PROJECT ESTIMATING
        1. Building an Estimate
          1. Creating a Task List
          2. Creating Task Estimates
          3. Considering Estimation Bias
          4. Building the Estimate
          5. Writing and Delivering the Estimate
        2. Collecting Raw Project Data
          1. Summarizing Data Using a Spreadsheet
          2. Engineering Maintenance and Overhead
        3. Additional Reading
      2. 13. STARTING A PROJECT
        1. Understanding the Goal
        2. Assembling the Project Team
          1. Substitutions
          2. Game Delays
        3. Setting Priorities
        4. Selecting the Framework
        5. Mapping out the Timeline
        6. Creating a Project Plan
        7. Kickoff Meeting
        8. Additional Reading
      3. 14. PROJECT EXECUTION AND TRACKING
        1. Managing a Project's Execution
          1. The Five Rules of Project Management
        2. Project-Tracking Approaches
          1. Gantt Chart
          2. Project-Tracking Spreadsheet
            1. Staff Assignments and Workload Balancing
            2. Minimum-Typical-Maximum Tracking
        3. Change Control Process
        4. Risk Management
        5. Additional Reading
      4. 15. DESIGNING A SOFTWARE DEVELOPMENT PROCESS
        1. What's in a Software Development Process?
        2. Types of Development Processes
          1. Ad Hoc
          2. Waterfall Process
          3. Modified Waterfall Process
          4. Iterative Process
          5. Spiral Process
          6. Agile Processes
            1. Extreme Programming
            2. Scrum Process
          7. Other Processes and Approaches
        3. Customizing a Process
        4. Selecting a Process
        5. Introducing a Process
        6. Additional Reading
      5. 16. PROCESS IMPROVEMENT
        1. Creating a Process Model
          1. Define the Process Boundaries
          2. List the Process Steps
          3. Create a Flow Chart
          4. Estimate a Range of Times
          5. Create a Spreadsheet Model
          6. Verify the Model
        2. Analyzing the Process Model
          1. Process Analysis in Action
          2. Using the Model to Improve the Process
            1. Case 1: Reducing the Maximum Time
            2. Case 2: Reducing the Typical Time
          3. Working with Other Teams
        3. Getting It Going
        4. Additional Reading
      6. 17. UNDERSTANDING QUALITY ASSURANCE
        1. Importance of Quality
        2. Quality Defined
        3. Valuing Quality
        4. Quality Assessment
          1. The Quality Assurance Team
            1. Team Skill Levels
            2. Staffing Levels
          2. QA Tools and Environment
            1. Defect-Tracking Tool and Process
            2. Building a Test Environment
            3. Test Automation Tools
          3. QA Activities
            1. Requirements and Functionality Review
            2. Test Plans
            3. Test Plan Template
            4. Creating Automated Tests
          4. QA Processes
          5. Defect-Ranking Process
          6. Functionality and Usefulness as Specified and Built
            1. Defect Selection Process
        5. QA Metrics
          1. Defects Found per Week Post-Release
          2. Weighted Defect Count per Week
          3. Weighted Customer-Found Defects
          4. Percent of Tests Run During Test Pass
          5. Defects Found in Test Passes
          6. Defects Repaired per Week During Testing
        6. The Impact of Defects on Quality and Productivity
        7. Additional Reading
    7. V. PLANNING THE FUTURE
      1. 18. SETTING THE DIRECTION
        1. Listen to the Market
        2. Create a Whole Product
        3. Defuse Technical Time Bombs
        4. Plan a Technology Overhaul
        5. Optimize Customer Setup
      2. 19. PRODUCT ROADMAP AND STRATEGY
        1. Creating a Product Roadmap
        2. Evaluating Choices
          1. Cost-Benefit Calculation
          2. Cost-Benefit Comparisons
        3. Creating One-Page Assessments
          1. Project Components
        4. Additional Reading
      3. 20. GOING FORWARD
      4. A. SOFTWARE COMPANY STRUCTURE
        1. Company Tasks
        2. Typical One-Person Company
        3. Typical Two-Person Company
        4. Twelve-Person Software Company
        5. Twenty-four to Fifty-Person Software Company
        6. Hundred-Plus–Person Software Company
          1. Hierarchical Structure
          2. Matrix Organizations
          3. Small Product Team
          4. Flexible Project Teams
        7. Conclusion
      5. B. INTERNATIONALIZATION
        1. Internationalization Questions to Ask
          1. Translating Staffing and Costs
          2. Database Considerations
          3. Country and Language Requirements
          4. Currency Questions
          5. Dates, Metric, and Dimension Issues
        2. Best Practice Approach to Internationalization
          1. Locales
          2. Translation Process
          3. Quality Assurance
          4. Database and Import/Export
          5. Translation Firm
          6. User Interface
        3. Summary
      6. C. CORPORATE WORKFLOW DIAGRAM
        1. Creating a Simple Workflow Diagram
        2. Workflow Example
    8. COLOPHON