null
Loading... Please wait...
FREE SHIPPING on All Unbranded Items LEARN MORE
Print This Page

Software Mistakes and Tradeoffs (How to make good programming decisions)

List Price: $59.99
SKU:
9781617299209
Quantity:
Minimum Purchase
25 unit(s)
  • Availability: Confirm prior to ordering
  • Branding: minimum 50 pieces (add’l costs below)
  • Check Freight Rates (branded products only)

Branding Options (v), Availability & Lead Times

  • 1-Color Imprint: $2.00 ea.
  • Promo-Page Insert: $2.50 ea. (full-color printed, single-sided page)
  • Belly-Band Wrap: $2.50 ea. (full-color printed)
  • Set-Up Charge: $45 per decoration
FULL DETAILS
  • Availability: Product availability changes daily, so please confirm your quantity is available prior to placing an order.
  • Branded Products: allow 10 business days from proof approval for production. Branding options may be limited or unavailable based on product design or cover artwork.
  • Unbranded Products: allow 3-5 business days for shipping. All Unbranded items receive FREE ground shipping in the US. Inquire for international shipping.
  • RETURNS/CANCELLATIONS: All orders, branded or unbranded, are NON-CANCELLABLE and NON-RETURNABLE once a purchase order has been received.
  • Product Details

    Author:
    Tomasz Lelek, Jon Skeet
    Format:
    Paperback
    Pages:
    416
    Publisher:
    Manning (June 7, 2022)
    Language:
    English
    ISBN-13:
    9781617299209
    ISBN-10:
    1617299200
    Dimensions:
    7.375" x 8.25" x 1"
    File:
    Eloquence-SimonSchuster_05022026_P10038138_onix30_Complete-20260502.xml
    Folder:
    Eloquence
    List Price:
    $59.99
    As low as:
    $53.99
    Publisher Identifier:
    P-SS
    Discount Code:
    G
    Weight:
    22oz
    Case Pack:
    18
    Pub Discount:
    37
    Imprint:
    Manning
  • Overview

    Optimize the decisions that define your code by exploring the common mistakes and intentional tradeoffs made by expert developers.

    In Software Mistakes and Tradeoffs you will learn how to:

    Reason about your systems to make intuitive and better design decisions
    Understand consequences and how to balance tradeoffs
    Pick the right library for your problem
    Thoroughly analyze all of your service’s dependencies
    Understand delivery semantics and how they influence distributed architecture
    Design and execute performance tests to detect code hot paths and validate a system’s SLA
    Detect and optimize hot paths in your code to focus optimization efforts on root causes
    Decide on a suitable data model for date/time handling to avoid common (but subtle) mistakes
    Reason about compatibility and versioning to prevent unexpected problems for API clients
    Understand tight/loose coupling and how it influences coordination of work between teams
    Clarify requirements until they are precise, easily implemented, and easily tested
    Optimize your APIs for friendly user experience

    Code performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintainability—every decision you make in software engineering involves balancing tradeoffs. In Software Mistakes and Tradeoffs you’ll learn from costly mistakes that Tomasz Lelek and Jon Skeet have encountered over their impressive careers. You’ll explore real-world scenarios where poor understanding of tradeoffs lead to major problems down the road, so you can pre-empt your own mistakes with a more thoughtful approach to decision making.

    Learn how code duplication impacts the coupling and evolution speed of your systems, and how simple-sounding requirements can have hidden nuances with respect to date and time information. Discover how to efficiently narrow your optimization scope according to 80/20 Pareto principles, and ensure consistency in your distributed systems. You’ll soon have built up the kind of knowledge base that only comes from years of experience.

    Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

    About the technology
    Every step in a software project involves making tradeoffs. When you’re balancing speed, security, cost, delivery time, features, and more, reasonable design choices may prove problematic in production. The expert insights and relatable war stories in this book will help you make good choices as you design and build applications.

    About the book
    Software Mistakes and Tradeoffs explores real-world scenarios where the wrong tradeoff decisions were made and illuminates what could have been done differently. In it, authors Tomasz Lelek and Jon Skeet share wisdom based on decades of software engineering experience, including some delightfully instructive mistakes. You’ll appreciate the specific tips and practical techniques that accompany each example, along with evergreen patterns that will change the way you approach your next projects.

    What's inside

    How to reason about your software systematically
    How to pick tools, libraries, and frameworks
    How tight and loose coupling affect team coordination
    Requirements that are precise, easy to implement, and easy to test

    About the reader
    For mid- and senior-level developers and architects who make decisions about software design and implementation.

    About the author
    Tomasz Lelek works daily with a wide range of production services, architectures, and JVM languages. A Google engineer and author of C# in Depth, Jon Skeet is famous for his many practical contributions to Stack Overflow.

    Table of Contents
    1 Introduction
    2 Code duplication is not always bad: Code duplication vs. flexibility
    3 Exceptions vs. other patterns of handling errors in your code
    4 Balancing flexibility and complexity
    5 Premature optimization vs. optimizing the hot path: Decisions that impact code performance
    6 Simplicity vs. cost of maintenance for your API
    7 Working effectively with date and time data
    8 Leveraging data locality and memory of your machines
    9 Third-party libraries: Libraries you use become your code
    10 Consistency and atomicity in distributed systems
    11 Delivery semantics in distributed systems
    12 Managing versioning and compatibility
    13 Keeping up to date with trends vs. cost of maintenance of your code