Modern Software Engineering
Home > Computing and Information Technology > Computer programming / software engineering > Software Engineering > Modern Software Engineering: Doing What Works to Build Better Software Faster
Modern Software Engineering: Doing What Works to Build Better Software Faster

Modern Software Engineering: Doing What Works to Build Better Software Faster


     0     
5
4
3
2
1



International Edition


X
About the Book

Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues. Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success. Farley's ideas and techniques cohere into a unified, scientific, and foundational approach to solving practical software development problems within realistic economic constraints. This general, durable, and pervasive approach to software engineering can help you solve problems you haven't encountered yet, using today's technologies and tomorrow's. It offers you deeper insight into what you do every day, helping you create better software, faster, with more pleasure and personal fulfillment. Clarify what you're trying to accomplish Choose your tools based on sensible criteria Organize work and systems to facilitate continuing incremental progress Evaluate your progress toward thriving systems, not just more "legacy code" Gain more value from experimentation and empiricism Stay in control as systems grow more complex Achieve rigor without too much rigidity Learn from history and experience Distinguish "good" new software development ideas from "bad" ones Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Table of Contents:
Foreword xvii Preface xxi Acknowledgments xxv About the Author xxvii Part I: What Is Software Engineering? 1 Chapter 1: Introduction 3 Engineering--The Practical Application of Science 3 What Is Software Engineering? 4 Reclaiming "Software Engineering" 5 The Birth of Software Engineering 7 Shifting the Paradigm 8 Summary 9 Chapter 2: What Is Engineering? 11 Production Is Not Our Problem 11 Design Engineering, Not Production Engineering 12 A Working Definition of Engineering 17 Engineering != Code 17 Why Does Engineering Matter? 19 The Limits of "Craft" 19 Precision and Scalability 20 Managing Complexity 21 Repeatability and Accuracy of Measurement 22 Engineering, Creativity, and Craft 24 Why What We Do Is Not Software Engineering 25 Trade-Offs 26 The Illusion of Progress 26 The Journey from Craft to Engineering 27 Craft Is Not Enough 28 Time for a Rethink? 28 Summary 30 Chapter 3: Fundamentals of an Engineering Approach 31 An Industry of Change? 31 The Importance of Measurement 32 Applying Stability and Throughput 34 The Foundations of a Software Engineering Discipline 36 Experts at Learning 36 Experts at Managing Complexity 37 Summary 38 Part II: Optimize for Learning 41 Chapter 4: Working Iteratively 43 Practical Advantages of Working Iteratively 45 Iteration as a Defensive Design Strategy 46 The Lure of the Plan 48 Practicalities of Working Iteratively 54 Summary 55 Chapter 5: Feedback 57 A Practical Example of the Importance of Feedback 58 Feedback in Coding 60 Feedback in Integration 61 Feedback in Design 63 Feedback in Architecture 65 Prefer Early Feedback 67 Feedback in Product Design 68 Feedback in Organization and Culture 68 Summary 70 Chapter 6: Incrementalism 71 Importance of Modularity 72 Organizational Incrementalism 73 Tools of Incrementalism 74 Limiting the Impact of Change 76 Incremental Design 77 Summary 79 Chapter 7: Empiricism 81 Grounded in Reality 82 Separating Empirical from Experimental 82 "I Know That Bug!" 82 Avoiding Self-Deception 84 Inventing a Reality to Suit Our Argument 85 Guided by Reality 88 Summary 89 Chapter 8: Being Experimental 91 What Does "Being Experimental" Mean? 92 Feedback 93 Hypothesis 94 Measurement 95 Controlling the Variables 96 Automated Testing as Experiments 97 Putting the Experimental Results of Testing into Context 98 Scope of an Experiment 100 Summary 100 Part III: Optimize for Managing Complexity 103 Chapter 9: Modularity 105 Hallmarks of Modularity 106 Undervaluing the Importance of Good Design 107 The Importance of Testability 108 Designing for Testability Improves Modularity 109 Services and Modularity 115 Deployability and Modularity 116 Modularity at Different Scales 118 Modularity in Human Systems 118 Summary 120 Chapter 10: Cohesion 121 Modularity and Cohesion: Fundamentals of Design 121 A Basic Reduction in Cohesion 122 Context Matters 125 High-Performance Software 128 Link to Coupling 129 Driving High Cohesion with TDD 129 How to Achieve Cohesive Software 130 Costs of Poor Cohesion 132 Cohesion in Human Systems 133 Summary 133 Chapter 11: Separation of Concerns 135 Dependency Injection 139 Separating Essential and Accidental Complexity 139 Importance of DDD 142 Testability 144 Ports & Adapters 145 When to Adopt Ports & Adapters 147 What Is an API? 148 Using TDD to Drive Separation of Concerns 149 Summary 150 Chapter 12: Information Hiding and Abstraction 151 Abstraction or Information Hiding 151 What Causes "Big Balls of Mud"? 152 Organizational and Cultural Problems 152 Technical Problems and Problems of Design 154 Fear of Over-Engineering 157 Improving Abstraction Through Testing 159 Power of Abstraction 160 Leaky Abstractions 162 Picking Appropriate Abstractions 163 Abstractions from the Problem Domain 165 Abstract Accidental Complexity 166 Isolate Third-Party Systems and Code 168 Always Prefer to Hide Information 169 Summary 170 Chapter 13: Managing Coupling 171 Cost of Coupling 171 Scaling Up 172 Microservices 173 Decoupling May Mean More Code 175 Loose Coupling Isn't the Only Kind That Matters 176 Prefer Loose Coupling 177 How Does This Differ from Separation of Concerns? 178 DRY Is Too Simplistic 179 Async as a Tool for Loose Coupling 180 Designing for Loose Coupling 182 Loose Coupling in Human Systems 182 Summary 184 Part IV: Tools to Support Engineering in Software 185 Chapter 14: The Tools of an Engineering Discipline 187 What Is Software Development? 188 Testability as a Tool 189 Measurement Points 192 Problems with Achieving Testability 193 How to Improve Testability 196 Deployability 197 Speed 199 Controlling the Variables 200 Continuous Delivery 201 General Tools to Support Engineering 202 Summary 203 Chapter 15: The Modern Software Engineer 205 Engineering as a Human Process 207 Digitally Disruptive Organizations 207 Outcomes vs. Mechanisms 210 Durable and Generally Applicable 211 Foundations of an Engineering Discipline 214 Summary 215 Index 217

About the Author :
David Farley, founder and consultant for Continuous Delivery Ltd., has been a programmer, software engineer, and systems architect since the early days of modern computing. He has shaped ground-breaking approaches that have transformed how developers and teams work. With Jez Humble, Farley coauthored the best-seller Continuous Delivery. As Head of Software Development for the London Multi Asset Exchange (LMAX), he built one of the world's fastest financial exchanges. One of the earliest adopters of agile techniques employing iterative development, continuous integration, and high levels of automated testing, he also coauthored the Reactive Manifesto. Dave also runs the popular and highly successful "Continuous Delivery" YouTube channel.

Review :
" Modern Software Engineering gets it right and describes the ways skilled practitioners actually engineer software today. The techniques Farley presents are not rigid, prescriptive, or linear, but they are disciplined in exactly the ways software requires: empirical, iterative, feedback-driven, economical, and focused on running code." -- Glenn Vanderburg, Director of Engineering at Nubank "There are lots of books that will tell you how to follow a particular software engineering practice; this book is different. What Dave does here is set out the very essence of what defines software engineering and how that is distinct from simple craft. He explains why and how in order to master software engineering you must become a master of both learning and of managing complexity, how practices that already exist support that, and how to judge other ideas on their software engineering merits. This is a book for anyone serious about treating software development as a true engineering discipline, whether you are just starting out or have been building software for decades." -- Dave Hounslow, Software Engineer "These are important topics and it's great to have a compendium that brings them together as one package." -- Michael Nygard, Author of Release IT, Professional Programmer, and Software Architect "I've been reading the review copy of Dave Farley's book and it's what we need. It should be required reading for anyone aspiring to be a software engineer or who wants to master the craft. Pragmatic, practical advice on professional engineering. It should be required reading in universities and bootcamps." -- Bryan Finster, Distinguished Engineer and Value Stream Architect at USAF Platform One "The title says it all. In this book, Dave Farley shares his wisdom and experience as an outstanding software engineer and leader. The reader is fortunate to see the world of software design through the eyes of a master designer.  Modern - It describes the practices tools and technology used today to build working software with a productive cadence. Modern Software Engineering provides a reader with a clear understanding of the field of software engineering and why it is indeed engineering.  Dave explains the essential aspects of software engineering concisely from the perspective of a software engineer.  Unlike many books which focus on one right way, he stresses the importance of good judgment, experimentation, and measurement.  Many authors discuss the goodness of cohesion, coupling, and separation of concerns but Dave illustrates concepts while discussing the natural tensions between them which are part of the art of software design.  His passion and discussion for TDD and perspective on how and why it works, provide fresh motivation as TDD as design practice. Throughout the book, Dave presents concrete examples of design choices, where creative experimentation, measure, and iterative development are essential.  The book presents a series of courteous conversations about software product design and implementation.   It is a book that professionals will return to often to reread and think about these important design conversations. This is an excellent book that belongs on the self of every software engineer be they new or leading a large team." —Dave Thomas, CEO of Bedarra Corporation


Best Sellers


Product Details
  • ISBN-13: 9780137314911
  • Publisher: Pearson Education (US)
  • Publisher Imprint: Addison Wesley
  • Height: 230 mm
  • No of Pages: 256
  • Spine Width: 18 mm
  • Weight: 480 gr
  • ISBN-10: 0137314914
  • Publisher Date: 26 Jan 2022
  • Binding: Paperback
  • Language: English
  • Returnable: Y
  • Sub Title: Doing What Works to Build Better Software Faster
  • Width: 186 mm


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Modern Software Engineering: Doing What Works to Build Better Software Faster
Pearson Education (US) -
Modern Software Engineering: Doing What Works to Build Better Software Faster
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Modern Software Engineering: Doing What Works to Build Better Software Faster

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals


    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!