Author: Tomasz Lelek
Publisher: Simon and Schuster
ISBN: 1638350620
Category : Computers
Languages : en
Pages : 414
Book Description
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. 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.
Software Mistakes and Tradeoffs
Author: Tomasz Lelek
Publisher: Simon and Schuster
ISBN: 1638350620
Category : Computers
Languages : en
Pages : 414
Book Description
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. 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.
Publisher: Simon and Schuster
ISBN: 1638350620
Category : Computers
Languages : en
Pages : 414
Book Description
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. 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.
System Design Interview - An Insider's Guide
Author: Alex Xu
Publisher: Independently Published
ISBN:
Category :
Languages : en
Pages : 280
Book Description
The system design interview is considered to be the most complex and most difficult technical job interview by many. Those questions are intimidating, but don't worry. It's just that nobody has taken the time to prepare you systematically. We take the time. We go slow. We draw lots of diagrams and use lots of examples. You'll learn step-by-step, one question at a time.Don't miss out.What's inside?- An insider's take on what interviewers really look for and why.- A 4-step framework for solving any system design interview question.- 16 real system design interview questions with detailed solutions.- 188 diagrams to visually explain how different systems work.
Publisher: Independently Published
ISBN:
Category :
Languages : en
Pages : 280
Book Description
The system design interview is considered to be the most complex and most difficult technical job interview by many. Those questions are intimidating, but don't worry. It's just that nobody has taken the time to prepare you systematically. We take the time. We go slow. We draw lots of diagrams and use lots of examples. You'll learn step-by-step, one question at a time.Don't miss out.What's inside?- An insider's take on what interviewers really look for and why.- A 4-step framework for solving any system design interview question.- 16 real system design interview questions with detailed solutions.- 188 diagrams to visually explain how different systems work.
Software Estimation
Author: Steve McConnell
Publisher: Microsoft Press
ISBN: 0735637032
Category : Computers
Languages : en
Pages : 466
Book Description
Often referred to as the “black art” because of its complexity and uncertainty, software estimation is not as difficult or puzzling as people think. In fact, generating accurate estimates is straightforward—once you understand the art of creating them. In his highly anticipated book, acclaimed author Steve McConnell unravels the mystery to successful software estimation—distilling academic information and real-world experience into a practical guide for working software professionals. Instead of arcane treatises and rigid modeling techniques, this guide highlights a proven set of procedures, understandable formulas, and heuristics that individuals and development teams can apply to their projects to help achieve estimation proficiency. Discover how to: Estimate schedule and cost—or estimate the functionality that can be delivered within a given time frame Avoid common software estimation mistakes Learn estimation techniques for you, your team, and your organization * Estimate specific project activities—including development, management, and defect correction Apply estimation approaches to any type of project—small or large, agile or traditional Navigate the shark-infested political waters that surround project estimates When many corporate software projects are failing, McConnell shows you what works for successful software estimation.
Publisher: Microsoft Press
ISBN: 0735637032
Category : Computers
Languages : en
Pages : 466
Book Description
Often referred to as the “black art” because of its complexity and uncertainty, software estimation is not as difficult or puzzling as people think. In fact, generating accurate estimates is straightforward—once you understand the art of creating them. In his highly anticipated book, acclaimed author Steve McConnell unravels the mystery to successful software estimation—distilling academic information and real-world experience into a practical guide for working software professionals. Instead of arcane treatises and rigid modeling techniques, this guide highlights a proven set of procedures, understandable formulas, and heuristics that individuals and development teams can apply to their projects to help achieve estimation proficiency. Discover how to: Estimate schedule and cost—or estimate the functionality that can be delivered within a given time frame Avoid common software estimation mistakes Learn estimation techniques for you, your team, and your organization * Estimate specific project activities—including development, management, and defect correction Apply estimation approaches to any type of project—small or large, agile or traditional Navigate the shark-infested political waters that surround project estimates When many corporate software projects are failing, McConnell shows you what works for successful software estimation.
Facts and Fallacies of Software Engineering
Author: Robert L. Glass
Publisher: Addison-Wesley Professional
ISBN: 9780321117427
Category : Computers
Languages : en
Pages : 218
Book Description
Regarding the controversial and thought-provoking assessments in this handbook, many software professionals might disagree with the authors, but all will embrace the debate. Glass identifies many of the key problems hampering success in this field. Each fact is supported by insightful discussion and detailed references.
Publisher: Addison-Wesley Professional
ISBN: 9780321117427
Category : Computers
Languages : en
Pages : 218
Book Description
Regarding the controversial and thought-provoking assessments in this handbook, many software professionals might disagree with the authors, but all will embrace the debate. Glass identifies many of the key problems hampering success in this field. Each fact is supported by insightful discussion and detailed references.
Designing Data-Intensive Applications
Author: Martin Kleppmann
Publisher: "O'Reilly Media, Inc."
ISBN: 1491903104
Category : Computers
Languages : en
Pages : 658
Book Description
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords? In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications. Peer under the hood of the systems you already use, and learn how to use and operate them more effectively Make informed decisions by identifying the strengths and weaknesses of different tools Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity Understand the distributed systems research upon which modern databases are built Peek behind the scenes of major online services, and learn from their architectures
Publisher: "O'Reilly Media, Inc."
ISBN: 1491903104
Category : Computers
Languages : en
Pages : 658
Book Description
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords? In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications. Peer under the hood of the systems you already use, and learn how to use and operate them more effectively Make informed decisions by identifying the strengths and weaknesses of different tools Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity Understand the distributed systems research upon which modern databases are built Peek behind the scenes of major online services, and learn from their architectures
Just Enough Software Architecture
Author: George Fairbanks
Publisher: Marshall & Brainerd
ISBN: 0984618104
Category : Computers
Languages : en
Pages : 378
Book Description
This is a practical guide for software developers, and different than other software architecture books. Here's why: It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face. It democratizes architecture. This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that ensure desired outcomes, and how seemingly small changes can affect a system's properties. It cultivates declarative knowledge. There is a difference between being able to hit a ball and knowing why you are able to hit it, what psychologists refer to as procedural knowledge versus declarative knowledge. This book will make you more aware of what you have been doing and provide names for the concepts. It emphasizes the engineering. This book focuses on the technical parts of software development and what developers do to ensure the system works not job titles or processes. It shows you how to build models and analyze architectures so that you can make principled design tradeoffs. It describes the techniques software designers use to reason about medium to large sized problems and points out where you can learn specialized techniques in more detail. It provides practical advice. Software design decisions influence the architecture and vice versa. The approach in this book embraces drill-down/pop-up behavior by describing models that have various levels of abstraction, from architecture to data structure design.
Publisher: Marshall & Brainerd
ISBN: 0984618104
Category : Computers
Languages : en
Pages : 378
Book Description
This is a practical guide for software developers, and different than other software architecture books. Here's why: It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face. It democratizes architecture. This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that ensure desired outcomes, and how seemingly small changes can affect a system's properties. It cultivates declarative knowledge. There is a difference between being able to hit a ball and knowing why you are able to hit it, what psychologists refer to as procedural knowledge versus declarative knowledge. This book will make you more aware of what you have been doing and provide names for the concepts. It emphasizes the engineering. This book focuses on the technical parts of software development and what developers do to ensure the system works not job titles or processes. It shows you how to build models and analyze architectures so that you can make principled design tradeoffs. It describes the techniques software designers use to reason about medium to large sized problems and points out where you can learn specialized techniques in more detail. It provides practical advice. Software design decisions influence the architecture and vice versa. The approach in this book embraces drill-down/pop-up behavior by describing models that have various levels of abstraction, from architecture to data structure design.
Street Coder
Author: Sedat Kapanoglu
Publisher: Simon and Schuster
ISBN: 1617298379
Category : Computers
Languages : en
Pages : 270
Book Description
Street Coder teaches you how to handle the realities of day-to-day coding as a software developer. Self-taught guru Sedat Kapanoğlu shares down-and-dirty advice that's rooted in his personal hands-on experience, not abstract theory or ivory-tower ideology. You'll learn how to adapt what you've learned from books and classes to the challenges you'll face on the job. As you go, you'll get tips on everything from technical implementations to handling a paranoid manager.
Publisher: Simon and Schuster
ISBN: 1617298379
Category : Computers
Languages : en
Pages : 270
Book Description
Street Coder teaches you how to handle the realities of day-to-day coding as a software developer. Self-taught guru Sedat Kapanoğlu shares down-and-dirty advice that's rooted in his personal hands-on experience, not abstract theory or ivory-tower ideology. You'll learn how to adapt what you've learned from books and classes to the challenges you'll face on the job. As you go, you'll get tips on everything from technical implementations to handling a paranoid manager.
Dynamics of Software Development
Author: Jim McCarthy
Publisher:
ISBN: 9780735623194
Category : Computers
Languages : en
Pages : 0
Book Description
Provides a candid look at the ups and downs of software development, providing tips on how to ship great software on. The book is divided into five sections that chart the progress from initial design to successful product. The Adobe Reader format of this title is not suitable for use on the Pocket PC or Palm OS versions of Adobe Reader.
Publisher:
ISBN: 9780735623194
Category : Computers
Languages : en
Pages : 0
Book Description
Provides a candid look at the ups and downs of software development, providing tips on how to ship great software on. The book is divided into five sections that chart the progress from initial design to successful product. The Adobe Reader format of this title is not suitable for use on the Pocket PC or Palm OS versions of Adobe Reader.
Patterns for Fault Tolerant Software
Author: Robert S. Hanmer
Publisher: John Wiley & Sons
ISBN: 1118351541
Category : Computers
Languages : en
Pages : 272
Book Description
Software patterns have revolutionized the way developer’s and architects think about how software is designed, built and documented. This new title in Wiley’s prestigious Series in Software Design Patterns presents proven techniques to achieve patterns for fault tolerant software. This is a key reference for experts seeking to select a technique appropriate for a given system. Readers are guided from concepts and terminology, through common principles and methods, to advanced techniques and practices in the development of software systems. References will provide access points to the key literature, including descriptions of exemplar applications of each technique. Organized into a collection of software techniques, specific techniques can be easily found with sufficient detail to allow appropriate choices for the system being designed.
Publisher: John Wiley & Sons
ISBN: 1118351541
Category : Computers
Languages : en
Pages : 272
Book Description
Software patterns have revolutionized the way developer’s and architects think about how software is designed, built and documented. This new title in Wiley’s prestigious Series in Software Design Patterns presents proven techniques to achieve patterns for fault tolerant software. This is a key reference for experts seeking to select a technique appropriate for a given system. Readers are guided from concepts and terminology, through common principles and methods, to advanced techniques and practices in the development of software systems. References will provide access points to the key literature, including descriptions of exemplar applications of each technique. Organized into a collection of software techniques, specific techniques can be easily found with sufficient detail to allow appropriate choices for the system being designed.
Sustainable Software Architecture
Author: Carola Lilienthal
Publisher: dpunkt.verlag
ISBN: 3960887817
Category : Computers
Languages : en
Pages : 381
Book Description
Today's programmers don't develop software systems from scratch. instead, they spend their time fixing, extending, modifying, and enhancing existing software. Legacy systems often turn into an unwieldy mess that becomes increasingly difficult to modify, and with architecture that continually accumulates technical debt. Carola Lilienthal has analyzed more than 300 software systems written in Java, C#, C++, PHP, ABAP, and TypeScript and, together with her teams, has successfully refactored them. This book condenses her experience with monolithic systems, architectural and design patterns, layered architectures, domain-driven design, and microservices. With more than 200 color images from real-world systems, good and sub-optimal sample solutions are presented in a comprehensible and thorough way, while recommendations and suggestions based on practical projects allow the reader to directly apply the author's knowledge to their daily work. "Throughout the book, Dr. Lilienthal has provided sound advice on diagnosing, understanding, disentangling, and ultimately preventing the issues that make software systems brittle and subject to breakage. In addition to the technical examples that you'd expect in a book on software architecture, she takes the time to dive into the behavioral and human aspects that impact sustainability and, in my experience, are inextricably linked to the health of a codebase. She also expertly zooms out, exploring architecture concepts such as domains and layers, and then zooms in to the class level where your typical developer works day-to-day. This holistic approach is crucial for implementing long-lasting change." From the Foreword of Andrea Goulet CEO, Corgibytes, Founder, Legacy Code Rocks
Publisher: dpunkt.verlag
ISBN: 3960887817
Category : Computers
Languages : en
Pages : 381
Book Description
Today's programmers don't develop software systems from scratch. instead, they spend their time fixing, extending, modifying, and enhancing existing software. Legacy systems often turn into an unwieldy mess that becomes increasingly difficult to modify, and with architecture that continually accumulates technical debt. Carola Lilienthal has analyzed more than 300 software systems written in Java, C#, C++, PHP, ABAP, and TypeScript and, together with her teams, has successfully refactored them. This book condenses her experience with monolithic systems, architectural and design patterns, layered architectures, domain-driven design, and microservices. With more than 200 color images from real-world systems, good and sub-optimal sample solutions are presented in a comprehensible and thorough way, while recommendations and suggestions based on practical projects allow the reader to directly apply the author's knowledge to their daily work. "Throughout the book, Dr. Lilienthal has provided sound advice on diagnosing, understanding, disentangling, and ultimately preventing the issues that make software systems brittle and subject to breakage. In addition to the technical examples that you'd expect in a book on software architecture, she takes the time to dive into the behavioral and human aspects that impact sustainability and, in my experience, are inextricably linked to the health of a codebase. She also expertly zooms out, exploring architecture concepts such as domains and layers, and then zooms in to the class level where your typical developer works day-to-day. This holistic approach is crucial for implementing long-lasting change." From the Foreword of Andrea Goulet CEO, Corgibytes, Founder, Legacy Code Rocks