(Ebook) Software Mistakes and Tradeoffs: How to make good programming decisions by Tomasz Lelek, Jon Skeet ISBN 9781617299209, 1617299200
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 toReason about your systems to make intuitive and better design decisionsUnderstand consequences and how to balance tradeoffsPick the right library for your problemThoroughly analyze all of your service’s dependenciesUnderstand delivery semantics and how they influence distributed architectureDesign and execute performance tests to detect code hot paths and validate a system’s SLADetect and optimize hot paths in your code to focus optimization efforts on root causesDecide on a suitable data model for date/time handling to avoid common (but subtle) mistakesReason about compatibility and versioning to prevent unexpected problems for API clientsUnderstand tight/loose coupling and how it influences coordination of work between teamsClarify requirements until they are precise, easily implemented, and easily testedOptimize your APIs for friendly user experienceCode 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 technologyEvery 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 bookSoftware 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 insideHow to reason about your software systematicallyHow to pick tools, libraries, and frameworksHow tight and loose coupling affect team coordinationRequirements that are precise, easy to implement, and easy to testAbout the readerFor mid- and senior-level developers and architects who make decisions about software design and implementation.About the authorTomasz 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 Contents1 Introduction2 Code duplication is not always bad: Code duplication vs. flexibility3 Exceptions vs. other patterns of handling errors in your code4 Balancing flexibility and complexity5 Premature optimization vs. optimizing the hot path: Decisions that impact code performance6 Simplicity vs. cost of maintenance for your API7 Working effectively with date and time data8 Leveraging data locality and memory of your machines9 Third-party libraries: Libraries you use become your code10 Consistency and atomicity in distributed systems11 Delivery semantics in distributed systems12 Managing versioning and compatibility13 Keeping up to date with trends vs. cost of maintenance of your code
*Free conversion of into popular formats such as PDF, DOCX, DOC, AZW, EPUB, and MOBI after payment.