• Complain

Tomasz Lelek - Software Mistakes and Tradeoffs: How to make good programming decisions

Here you can read online Tomasz Lelek - Software Mistakes and Tradeoffs: How to make good programming decisions full text of the book (entire story) in english for free. Download pdf and epub, get meaning, cover and reviews about this ebook. year: 2022, publisher: Manning, genre: Computer. Description of the work, (preface) as well as reviews are available. Best literature library LitArk.com created for fans of good reading and offers a wide selection of genres:

Romance novel Science fiction Adventure Detective Science History Home and family Prose Art Politics Computer Non-fiction Religion Business Children Humor

Choose a favorite category and find really read worthwhile books. Enjoy immersion in the world of imagination, feel the emotions of the characters or learn something new for yourself, make an fascinating discovery.

Tomasz Lelek Software Mistakes and Tradeoffs: How to make good programming decisions
  • Book:
    Software Mistakes and Tradeoffs: How to make good programming decisions
  • Author:
  • Publisher:
    Manning
  • Genre:
  • Year:
    2022
  • Rating:
    4 / 5
  • Favourites:
    Add to favourites
  • Your mark:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Software Mistakes and Tradeoffs: How to make good programming decisions: summary, description and annotation

We offer to read an annotation, description, summary or preface (depends on what the author of the book "Software Mistakes and Tradeoffs: How to make good programming decisions" wrote himself). If you haven't found the necessary information about the book — write in the comments, we will try to find it.

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 services dependencies
Understand delivery semantics and how they influence distributed architecture
Design and execute performance tests to detect code hot paths and validate a systems 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 maintainabilityevery decision you make in software engineering involves balancing tradeoffs. In Software Mistakes and Tradeoffs youll learn from costly mistakes that Tomasz Lelek and Jon Skeet have encountered over their impressive careers. Youll 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. Youll 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 youre 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. Youll 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.
Whats 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

Tomasz Lelek: author's other books


Who wrote Software Mistakes and Tradeoffs: How to make good programming decisions? Find out the surname, the name of the author of the book and a list of all author's works by series.

Software Mistakes and Tradeoffs: How to make good programming decisions — read online for free the complete book (whole text) full work

Below is the text of the book, divided by pages. System saving the place of the last page read, allows you to conveniently read the book "Software Mistakes and Tradeoffs: How to make good programming decisions" online for free, without having to search again every time where you left off. Put a bookmark, and you can go to the page where you finished reading at any time.

Light

Font size:

Reset

Interval:

Bookmark:

Make
inside front cover Software Mistakes and Tradeoffs How to make good - photo 1
inside front cover

Software Mistakes and Tradeoffs How to make good programming decisions Tomasz - photo 2

Software Mistakes and Tradeoffs How to make good programming decisions - image 3

Software Mistakes and Tradeoffs

How to make good programming decisions

Tomasz Lelek, Jon Skeet

To comment go to liveBook

Software Mistakes and Tradeoffs How to make good programming decisions - image 4

Manning

Shelter Island

For more information on this and other Manning titles go to

www.manning.com

Copyright

For online information and ordering of these and other Manning books, please visit www.manning.com. The publisher offers discounts on these books when ordered in quantity.

For more information, please contact

Special Sales Department

Manning Publications Co.

20 Baldwin Road

PO Box 761

Shelter Island, NY 11964

Email: orders@manning.com

2022 by Manning Publications Co. All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps.

Recognizing the importance of preserving what has been written, it is Mannings policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine.

Software Mistakes and Tradeoffs How to make good programming decisions - image 5

Manning Publications Co.

20 Baldwin Road Technical

PO Box 761

Shelter Island, NY 11964

Development editor:

Doug Rudder

Technical development editor:

Jeanne Boyarsky

Review editor:

Mihaela Batini

Production editor:

Deirdre S. Hiam

Copy editor:

Christian Berk

Proofreader:

Jason Everett

Technical proofreader:

Jean-Franois Morin

Typesetter:

Dennis Dalinnik

Cover designer:

Marija Tudor

ISBN: 9781617299209

dedication

Tomasz dedicates this book to all of the open source community. Most of the tools and architectures emerge from your devotion and contributions. You are the reason why software is progressing and meeting todays world demands.

Jon dedicates the chapters he authored to every software engineer who has ever been utterly perplexed by a problem caused by either time zones or diamond dependencies. (That covers a pretty large proportion of the developer population....).

front matter
preface

The work of everyone involved in delivering software is full of tradeoffs. We tend to operate with limited time, limited budgets, and limited knowledge. Therefore, todays decisions about the software we are creating will have consequences in the future, such as maintenance cost, inflexibility of our software when it needs to change, limited performance when we need to scale, and many others. It is important to note that every decision is made in a specific context. Its easy to judge past decisions without complete knowledge about the context in which they were made. However, the more knowledge and the more deep analysis we do at decision time, the more aware we can be about the tradeoffs our decisions carry.

Throughout our professional careers, we were involved in and observed many software decisions and learned what tradeoffs they impose. Along the way, Tomasz started writing a personal decision log of the circumstances in which a specific decision was made. What was its context? What were the alternatives? How did we evaluate a particular solution? And finally, how did it end up? Did we anticipate all possible tradeoffs of a specific solution? Or were we surprised by something? It turns out that this personal list of lessons learned actually reflected problems and decisions that need to be tackled by many engineers out there. At this point, Tomasz decided that this was an excellent time to share that knowledge with the world. This is how the idea for this book was born.

We want to share our lessons learned from the experience with various software systems: monoliths, microservices, big data processing, libraries, and many more. This book deeply analyzes decisions, tradeoffs, and mistakes from real-life production systems. By presenting those patterns, mistakes, and lessons, we hope to widen your context and equip you with better tools which will help you make better decisions in your day-to-day job. Seeing potential problems and limitations of a design upfront can save you a lot of time and money in the future. We wont try to give you definite answers. When the problem is complex, it can often be solved with more than one approach. We will present some of those challenging problems and ask questions without definite answers. Each solution will have its pros and cons, and we will analyze those. Every solution will result in its tradeoffs, and it will be up to you to decide which one suits your context the best.

acknowledgments

Writing a book involves a lot of effort. However, thanks to Manning, it was a pleasure to work on it.

First and foremost, I want to thank my wife, Magorzata. Youve always supported me and listened to my ideas and problems. Because I have you, I could focus on the book.

Next, Id like to acknowledge my editor at Manning, Doug Rudder. Thank you for working with me. Your comments and feedback were invaluable. I was able to progress my writing skills to the next level because of your involvement. Thanks as well to all the other folks at Manning who worked with me on the production and promotion of the book. It was truly a team effort. Another big thank you to the rest of the staff at Manning: my production editor, Deirdre Hiam; my copyeditor, Christian Berk; my reviewing editor, Mihaela Batinic; and my proofreader, Jason Everett.

Id also like to thank the reviewers who took the time to read my manuscript at various stages during its development and who provided invaluable feedbackyour suggestions helped make this a better book: Alex Saez, Alexander Weiher, Andres Sacco, Andrew Eleneski, Andy Kirsch, Conor Redmond, Cosimo Atanasi, Dave Corun, George Thomas, Gilles Iachelini, Gregory Varghese, Hugo Cruz, Johannes Verwijnen, John Guthrie, John Henry Galino, Johnny Slos, Maksym Prokhorenko, Marc-Oliver Scheele, Nelson Gonzlez, Oliver Korten, Paolo Brunasti, Rafael Avila Martinez, Rajesh Mohanan, Robert Trausmuth, Roberto Casadei, Sau Fai Fong, Shawn Lam, Spencer Marks, Vasile Boris, Vincent Delcoigne, Vitosh Doynov, Walter Stoneburner, and Will Price.

Next page
Light

Font size:

Reset

Interval:

Bookmark:

Make

Similar books «Software Mistakes and Tradeoffs: How to make good programming decisions»

Look at similar books to Software Mistakes and Tradeoffs: How to make good programming decisions. We have selected literature similar in name and meaning in the hope of providing readers with more options to find new, interesting, not yet read works.


Reviews about «Software Mistakes and Tradeoffs: How to make good programming decisions»

Discussion, reviews of the book Software Mistakes and Tradeoffs: How to make good programming decisions and just readers' own opinions. Leave your comments, write what you think about the work, its meaning or the main characters. Specify what exactly you liked and what you didn't like, and why you think so.