{"product_id":"9781617299209","title":"Software Mistakes and Tradeoffs: How to make good programming decisions","description":"\u003ctable\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd style=\"\"\u003e\u003cstrong\u003eAuthor\/Contributor(s):\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"\"\u003eLelek, Tomasz; Skeet, Jon\u003cbr\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"\"\u003e\u003cstrong\u003ePublisher:\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003eManning\u003cbr\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"\"\u003e\u003cstrong\u003eDate:\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e6\/7\/2022\u003cbr\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"\"\u003e\u003cstrong\u003eBinding:\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"\"\u003ePaperback\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd style=\"\"\u003e\u003cstrong\u003eCondition:\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd style=\"\"\u003eNEW\u003cbr\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003cb\u003eOptimize the decisions that define your code by exploring the common mistakes and intentional tradeoffs made by expert developers. \u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eIn \u003ci\u003eSoftware Mistakes and Tradeoffs\u003c\/i\u003e you will learn how to:\u003cbr\u003e\u003cbr\u003eReason about your systems to make intuitive and better design decisions\u003cbr\u003eUnderstand consequences and how to balance tradeoffs\u003cbr\u003ePick the right library for your problem\u003cbr\u003eThoroughly analyze all of your service’s dependencies\u003cbr\u003eUnderstand delivery semantics and how they influence distributed architecture\u003cbr\u003eDesign and execute performance tests to detect code hot paths and validate a system’s SLA\u003cbr\u003eDetect and optimize hot paths in your code to focus optimization efforts on root causes\u003cbr\u003eDecide on a suitable data model for date\/time handling to avoid common (but subtle) mistakes\u003cbr\u003eReason about compatibility and versioning to prevent unexpected problems for API clients\u003cbr\u003eUnderstand tight\/loose coupling and how it influences coordination of work between teams\u003cbr\u003eClarify requirements until they are precise, easily implemented, and easily tested\u003cbr\u003eOptimize your APIs for friendly user experience\u003cbr\u003e\u003cbr\u003eCode performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintainability—every decision you make in software engineering involves balancing tradeoffs. In \u003ci\u003eSoftware Mistakes and Tradeoffs\u003c\/i\u003e 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.\u003cbr\u003e\u003cbr\u003eLearn 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.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAbout the technology\u003c\/b\u003e\u003cbr\u003eEvery 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.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAbout the book\u003c\/b\u003e\u003cbr\u003e\u003ci\u003eSoftware Mistakes and Tradeoffs\u003c\/i\u003e 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.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eWhat's inside\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eHow to reason about your software systematically\u003cbr\u003eHow to pick tools, libraries, and frameworks\u003cbr\u003eHow tight and loose coupling affect team coordination\u003cbr\u003eRequirements that are precise, easy to implement, and easy to test\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAbout the reader\u003c\/b\u003e\u003cbr\u003eFor mid- and senior-level developers and architects who make decisions about software design and implementation.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eAbout the author\u003c\/b\u003e\u003cbr\u003e\u003cb\u003eTomasz Lelek\u003c\/b\u003e works daily with a wide range of production services, architectures, and JVM languages. A Google engineer and author of \u003ci\u003eC# in Depth\u003c\/i\u003e, \u003cb\u003eJon Skeet\u003c\/b\u003e is famous for his many practical contributions to Stack Overflow.\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e1 Introduction\u003cbr\u003e2 Code duplication is not always bad: Code duplication vs. flexibility\u003cbr\u003e3 Exceptions vs. other patterns of handling errors in your code\u003cbr\u003e4 Balancing flexibility and complexity\u003cbr\u003e5 Premature optimization vs. optimizing the hot path: Decisions that impact code performance\u003cbr\u003e6 Simplicity vs. cost of maintenance for your API\u003cbr\u003e7 Working effectively with date and time data\u003cbr\u003e8 Leveraging data locality and memory of your machines\u003cbr\u003e9 Third-party libraries: Libraries you use become your code\u003cbr\u003e10 Consistency and atomicity in distributed systems\u003cbr\u003e11 Delivery semantics in distributed systems\u003cbr\u003e12 Managing versioning and compatibility\u003cbr\u003e13 Keeping up to date with trends vs. cost of maintenance of your code","brand":"Manning","offers":[{"title":"Default Title","offer_id":48176683385087,"sku":"9781617299209","price":59.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0452\/0886\/2873\/files\/Jacket_3734149a-2cb6-4792-96ca-29be019c97a5.jpg?v=1771351346","url":"https:\/\/massivebookshop.com\/de\/products\/9781617299209","provider":"MASSIVE BOOKSHOP","version":"1.0","type":"link"}