You are previewing Programming Beyond Practices.
O'Reilly logo
Programming Beyond Practices

Book Description

Writing code is the easy part of your work as a software developer. This practical book lets you explore the other 90%—everything from requirements discovery and rapid prototyping to business analysis and designing for maintainability. Instead of providing neatly packaged advice from on high, author Gregory Brown presents detailed examples of the many problems developers encounter, including the thought process it takes to solve them.

Table of Contents

  1. About This Book
    1. The Journey
  2. 1. Using Prototypes to Explore Project Ideas
    1. Start by understanding the needs behind the project
    2. Use wireframes to set expectations about functionality
    3. Set up a live test system as soon as you start coding
    4. Discuss all defects, but be pragmatic about repairs
    5. Check your assumptions early and often
    6. Limit the scope of your work as much as possible
    7. Remember that prototypes are not production systems
    8. Design features that make collecting feedback easy
  3. 2. Spotting Hidden Dependencies in Incremental Changes
    1. There’s no such thing as a standalone feature
    2. If two features share a screen, they depend on each other
    3. Avoid non-essential real-time data synchronization
    4. Look for problems when code is reused in a new context
  4. 3. Identifying the Pain Points of Service Integrations
    1. Plan for trouble when your needs are off the beaten path
    2. Remember that external services might change or die
    3. Look for outdated mocks in tests when services change
    4. Expect maintenance headaches from poorly coded robots
    5. Remember that there are no purely internal concerns
  5. 4. Developing a Rigorous Approach Toward Problem Solving
    1. Begin by gathering the facts and stating them plainly
    2. Work part of the problem by hand before writing code
    3. Validate your input data before attempting to process it
    4. Make use of deductive reasoning to check your work
    5. Solve simple problems to understand more difficult ones
  6. 5. Designing Software from the Bottom Up
    1. Identify the nouns and verbs of your problem space
    2. Begin by implementing a minimal slice of functionality
    3. Avoid unnecessary temporal coupling between objects
    4. Gradually extract reusable parts and protocols
    5. Experiment freely to discover hidden abstractions
    6. Know where the bottom-up approach breaks down
  7. 6. Data Modeling in an Imperfect World
    1. Decouple conceptual modeling from physical modeling
    2. Design an explicit model for tracking data changes
    3. Understand how Conway’s Law influences data management practices
    4. Remember that workflow design and data modeling go hand in hand
  8. 7. Gradual Process Improvement as an Antidote for Overcommitment
    1. Respond to unexpected failures with swiftness and safety
    2. Identify and analyze operational bottlenecks
    3. Pay attention to the economic tradeoffs of your work
    4. Reduce waste by limiting work in progress
    5. Make the whole greater than the sum of its parts
  9. 8. The Future of Software Development
  10. Acknowledgments
  11. O’Reilly Media, Inc.
    1. Safari® Books Online
    2. How to Contact Us
  12. Index