Book description
Delve deep into the various technical practices, principles, and values of Agile.
Key Features
- Discover the essence of Agile software development and the key principles of software design
- Explore the fundamental practices of Agile working, including test-driven development (TDD), refactoring, pair programming, and continuous integration
- Learn and apply the four elements of simple design
Book Description
The number of popular technical practices has grown exponentially in the last few years. Learning the common fundamental software development practices can help you become a better programmer. This book uses the term Agile as a wide umbrella and covers Agile principles and practices, as well as most methodologies associated with it.
You'll begin by discovering how driver-navigator, chess clock, and other techniques used in the pair programming approach introduce discipline while writing code. You'll then learn to safely change the design of your code using refactoring. While learning these techniques, you'll also explore various best practices to write efficient tests. The concluding chapters of the book delve deep into the SOLID principles - the five design principles that you can use to make your software more understandable, flexible and maintainable.
By the end of the book, you will have discovered new ideas for improving your software design skills, the relationship within your team, and the way your business works.
What you will learn
- Learn the red, green, refactor cycle of classic TDD and practice the best habits such as the rule of 3, triangulation, object calisthenics, and more
- Refactor using parallel change and improve legacy code with characterization tests, approval tests, and Golden Master
- Use code smells as feedback to improve your design
- Learn the double cycle of ATDD and the outside-in mindset using mocks and stubs correctly in your tests
- Understand how Coupling, Cohesion, Connascence, SOLID principles, and code smells are all related
- Improve the understanding of your business domain using BDD and other principles for "doing the right thing, not only the thing right"
Who this book is for
This book is designed for software developers looking to improve their technical practices. Software coaches may also find it helpful as a teaching reference manual. This is not a beginner's book on how to program. You must be comfortable with at least one programming language and must be able to write unit tests using any unit testing framework.
Table of contents
- Preface
- Section 1
- First Steps
- Chapter 1
- Pair Programming
- Chapter 2
-
Classic TDD I – Test-Driven Development
- Classic TDD
-
The Three Laws of TDD
- 1. You Are Not Allowed to Write Any More of a Unit Test That Is Sufficient to Fail, and Compilation Failures Are Failures
- 2. You Are Not Allowed to Write Any Production Code Unless It Is to Make a Failing Unit Test Pass
- 3. You Are Not Allowed to Write Any More Production Code That Is Sufficient to Pass the One Failing Unit Test
- Refactoring and the Rule of Three – Baby Steps
- Three Methods of Moving Forward in TDD
- Degrees of Freedom
- Naming Tests
- A Test Name Pattern
- Katas
- More Katas
- Great Habits
- Classic TDD Flow
- Where are We in the Big Picture of Object-Oriented (OO) Software Design?
- When Should I Move to the Next Lesson?
- Resources
- Chapter 3
- Classic TDD II
- Chapter 4
-
Classic TDD III – Transformation Priority Premise
- Kata
-
TPP – Defining Obvious Implementation
- TPP Table
- The Transformations
- Transformation 1 – {} -> Nil
- Transformation 2 – Nil -> Constant
- Transformation 3 – Constant -> Constant+
- Transformation 4 – Constant -> Scalar
- Transformation 5 – Statement -> Statements
- Transformation 6 – Unconditional -> Conditional
- Transformation 7 – Scalar -> Array
- Transformation 8 – Array -> Container
- Transformation 9 – Statement -> Tail Recursion
- Transformation 10 – If -> Loop
- Transformation 11 – Statement -> Recursion
- Transformation 12 – Expression -> Function
- Transformation 13 – Variable -> Mutation
- Example Using the TPP on the Fibonacci Sequence
- Katas
- Great Habits
- Classic TDD flow
- Where are We in the Big Picture of Object-Oriented (OO) Software Design?
- When Should I Move to the Next Lesson?
- Resources
- Chapter 5
-
Design 1 – Object Calisthenics
- It's the Design...
- Kata
-
Object Calisthenics – 10 Steps to Better Software Design
- Only One Level of Indentation per Method
- Don't Use the ELSE Keyword
- Wrap All Primitives and Strings
- First-Class Collections
- No Getters/Setters/Properties
- Wrap All Primitives and Strings
- One Dot per Line
- Don't Abbreviate
- Keep All Entities Small
- No Classes with More Than Two Instance Variables
- All Classes Must Have State
- Heuristics
- Katas
- Great Habits
- Classic TDD flow
- Where Are We in the Big Picture of OO Software Design?
- When Should I Move on to the Next Lesson?
- Resources
- Section 2
- Walking
- Chapter 6
- Design 2 – Refactoring
- Chapter 7
- Design 3 – Code Smells
- Chapter 8
- Test Doubles
- Chapter 9
- Testing Legacy Code
- Chapter 10
- Design IV –Design Patterns
- Section 3
- Running
- Chapter 11
- Design V – Cohesion and Coupling
- Chapter 12
-
Design VI – Solid Principles ++
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Balanced Abstraction Principle
- Principle of Least Astonishment
- Kata
- When to Refactor (Extended for SOLID Principles)
- Classic TDD Flow
- The Big Picture
- When Should I Move to the Next Lesson?
- Resources
- Chapter 13
-
Design VII – Connascence
- Definition
- Dimensions
- Connascence of Name and Type (CoN and CoT)
- Connascence of Position
- Connascence of Value (CoV)
- Connascence of Meaning
- Connascence of Algorithm
- Connascence of Execution Order
- Connascence of Timing
- Connascence of Identity
- Connascence of Manual Task
- Classic TDD Flow
- The Big Picture
- When Should I Move to the Next Lesson?
- Resources
- Chapter 14
- Design VIII –The Four Elements of Simple Design
- Chapter 15
- Conclusion
- Section 4
- Flying
- Chapter 16
- Outside-In Development
- Chapter 17
- Behavior-Driven Development
- Chapter 18
- Understand the Business
- Chapter 19
- Story of Team C
- Chapter 20
- Conclusion
- Chapter 21
- The 12 Agile Principles
- Chapter 22
- PopcornFlow by Claudio Perrone
- Chapter 23
- EventStorming by Alberto Brandolini
- License: CyberDojo
-
Sample Solutions
-
Sample Solutions: FizzBuzz in Clojure
- Sample Solutions: Fibonacci Sequence in C++
- Sample Solutions: Roman Numerals in C#
- Sample Solutions: Tic-Tac-Toe in Swift (Partial Solution)
- Sample Solutions: Connecting Code Smells with Cohesion/Coupling
- Sample Solutions: Connecting Object Calisthenics with Code Smells and Cohesion/Coupling
- Sample Solutions: Connecting Cohesion/Coupling and SOLID Principles
-
Sample Solutions: FizzBuzz in Clojure
- Feedback
Product information
- Title: Agile Technical Practices Distilled
- Author(s):
- Release date: June 2019
- Publisher(s): Packt Publishing
- ISBN: 9781838980849
You might also like
book
Agile Retrospectives
Project retrospectives help teams examine what went right and what went wrong on a project. But …
book
Scaling Lean & Agile Development: Thinking and Organizational Tools for Large-Scale Scrum
Lean Development and Agile Methods for Large-Scale Products: Key Thinking and Organizational Tools for Sustainable Competitive …
book
Doing Agile Right
Agile has the power to transform work--but only if it's implemented the right way. For decades …
book
The Agile Developer's Handbook
A pragmatic companion guide to your Agile journey About This Book Make your team Agile by …