Habit: Schema Update 3 – Refactor Databases

Organization ROI: Eliminate bugs arising from database changes, while allowing you to fix database problems. Engineer ROI: Make arbitrary design changes to your schema in simple ways that never generate bugs, no matter how many programs use it.

See more...

Habit: Bugs Have Causes

Organization ROI: Reduce bugs that arise from team-specific causes. Engineer ROI: Reduce blame around bugs. Address whatever problems impact your team most, with organizational support.

See more...

Habit: Shell System

Organization ROI: Always remain shippable, reduce risk from partially-done work. Engineer ROI: Migrate each feature into a working system, so you are done-done with a feature when you finish.

See more...

Habit: Names Expose Duplication

Organization ROI: Find opportunities to reduce duplication without introducing coupling bugs. Engineer ROI: Honest names distinguish intentional from accidental near-duplication.

See more...

Habit: Split Services 1 – Ports and Adapters

Organization ROI: Reduce cost of ownership related to both 1st and 3rd party dependencies. Engineer ROI: Isolate and micro-test interactions between any two components. Get informed when 3rd party components change underneath you in production.

See more...

Habit: Whole Values 1 – Fix Primitive Obsession

Organization ROI: Reduce bugs that arise from miscommunciation. Create classes to unwind many common design problems. Engineer ROI: Create missing classes by following existing code.

See more...

Habit: Always Ship on Time

Organization ROI: Code can be shipped at any time, both on scheduled and at-will releases. Isolate ship date from development risks. Engineer ROI: Commit every day, no matter what. Always work from a clean slate.

See more...

Habit: Start Refactoring Safely

Organization ROI: Code changes become cheaper and less bug-prone. Improves intra-team learning. Engineer ROI: Code reviews are much easier. Gaining permission to refactor is easier. Make fewer mistakes.

See more...

Habit: Whole Values 2 – Collect Behaviors

Organization ROI: Decrease duplicate code and God Classes, reducing testing, implementation, and bug costs. Engineer ROI: Move code onto whole value classes from procedures that use God Classes.

See more...

Habit: Naming as a Process

Organization ROI: Reduces cost and bugs for any story that touches existing code. Engineer ROI: Trust your names. Finish stories faster. Reduce impact of interruptions.

See more...

Habit: Make Methods Simple

Organization ROI: Reuse code more. Engineer ROI: Separate parts of a method, unwinding their dependencies and testing each part separately.

See more...

Habit: Explicit Dependencies

Organization ROI: Allow migrating features in any order, regardless of how entwined the code is with other features. Engineer ROI: Dependencies in the old system become obvious so they can be handled differently in the new system.

See more...

Habit: Read Fragmented Code

Organization ROI: Reduce story cost in code that has a large number of independent parts. Engineer ROI: Gain insights about related code chunks that are scattered across the old system.

See more...

Habit: Safeguarding 1 – Better Safeguards

Organization ROI: Learn from each issue, preventing similar issues in the future. Engineer ROI: Reduce overhead cost for process improvement. Spend less time finding and fixing bugs.

See more...

Habit: Split Services 2 – Complex Adapters

Organization ROI: Reduce cost of ownership for depending on complex or highly-shared services. Engineer ROI: Adapt services that do what you need but are hard to work with into exactly what you need.

See more...

Habit: Healthy Unit Tests 1 – Readable Tests

Organization ROI: Communication between developers and product owners become easier. Engineer ROI: Instantly know why each test exists and what code to change when requirements change.

See more...

Habit: Code is Cheap

Organization ROI: Reduce blocking between developers in the same team. Engineer ROI: Retype a full day of work in 30 min. If you have a problem or a merge, revert! Do code previews and faster reviews.

See more...

Habit: Safeguarding 2 – Better Demos

Organization ROI: Understand which teams are improving how much. Know where to intervene and where to support. Engineer ROI: Gain organizational support for the work you do to improve all product elements beyond features.

See more...

Habit: Dual-Home Features

Organization ROI: Continue shipping new features without delaying the legacy rewrite. Engineer ROI: Write new features once, in ways that work in both old and new systems.

See more...

Habit: Healthy Unit Tests 2 – Stop Testing Internals

Organization ROI: Tests tell you where you will pay costs on future stories. Engineer ROI: Refactoring never requires updating tests.

See more...

Habit: Undo Layers

Organization ROI: Teams code and ship more independently. Engineer ROI: Reduce the number of different parts of the system you have to update for each story.

See more...

Habit: In-Storage Data Adapters

Organization ROI: Support multiple applications with different data expectations off the same data source. Engineer ROI: Allow shipping data stores updates and application updates asyncronously, and update even if there is a legacy system you can't change.

See more...

Habit: Independent Data

Organization ROI: Reduce unintended reactions with the rest of the system. Engineer ROI: Each service manages its own data, making it easier to extract.

See more...

Habit: Whole Values 4 – Use in Procedural Code

Organization ROI: Leverage prior technical investments to improve broad swaths of your code base. Engineer ROI: Change the code base to use the objects you extracted from the utility class.

See more...

Habit: Names Guide Design

Organization ROI: Prevent bugs that arise from differences between CS concepts and domain concepts. Engineer ROI: Use your honest names to guide design for your system.

See more...

Habit: Split Services 3 – Testable Services

Organization ROI: Reduce cost of integrating with 1st party services, such as databases. Engineer ROI: Know when changes to your service would impact others without running full-system tests.

See more...

Habit: Know When to Stop

Organization ROI: Trust devs to do just the right amount of refactoring in each story. Minimize cost of each story. Engineer ROI: Be trusted to decide when to refactor. Know when to stop.

See more...

Habit: Ship Easily

Organization ROI: Shorten your process between code complete and general release. Engineer ROI: Reduce per-release overhead.

See more...

Habit: Whole Values 3 – Relax Design Stresses

Organization ROI: Reduce implementation costs and bugs that arise from complex methods or God Classes Engineer ROI: Remove duplication in code that uses God Classes.

See more...

Habit: Cross-System Sharing

Organization ROI: Reuse the good parts of your existing system even while creating a new system to replace the bad parts. Engineer ROI: Re-use code between old and new systems.

See more...

Habit: Healthy Unit Tests 3 – Decoupling and Microtesting

Organization ROI: Tests speed up, have fewer false positives, and cover more of the code. Engineer ROI: Every test passes 100% of the time when the code is right, fails 100% of the time when it is wrong, and executes in <1ms, in parallel with any other tests.

See more...

Habit: Test User Interactions

Organization ROI: Reduce cost of ownership for tests that verify response to user behavior. Engineer ROI: Test user interfaces and user behaviors without running the UI.

See more...

Habit: Incremental Isolation

Organization ROI: Extract a service without ever blocking release or anyone else's commits. Engineer ROI: Break out your service as a part of normal story development, without slowing anything down or scheduling technical stories.

See more...

Habit: Split God Classes 1 – Extract One Purpose

Organization ROI: Prevent bugs due to data sharing between adjacent parts of the code. Improve one technical debt without having to fix it all at once. Engineer ROI: Reduce God Classes without waiting for full-system analysis.

See more...

Habit: Separate Commands and Queries

Organization ROI: Improve reusability and complexity by reducing complexity. Engineer ROI: Code becomes much easier to test.

See more...

Habit: Schema Updates 1 – Deterministic Migrations

Organization ROI: Prevent bugs that occur due to subtle differences between databases. Engineer ROI: Update local, test, and production databases easily and consistently, no matter how long a database has been not updated.

See more...

Habit: Stop Inheriting

Organization ROI: Reduce cost for unexpected features. Engineer ROI: Code is more re-usable and easier to extend in novel ways.

See more...

Habit: Backwards Compatibility

Organization ROI: Allows shipping new service and monolith independently. Engineer ROI: Add capabilities to your independent service without having to update the monolith at the same time. Update the monolith only as stories require.

See more...

Habit: Schema Updates 2 – Range-Versioned Databases and Multi-Phase Migrations

Organization ROI: Upgrade applications independently even if they share the same database. Perform zero-downtime database updates. Engineer ROI: Easily manage any number of distinct applications using any number of distinct data sources, including data sharing, with zero-downtime, deterministic updates.

See more...

Habit: Split God Classes 2 – Pull Out Concepts

Organization ROI: Detangle one set of use cases from the God Class cost overhead. Reduce bugs arising from multiple pieces of code sharing a God Class. Engineer ROI: Get one God Class responsibility off the God Class.

See more...

Habit: Test as Design Preview

Organization ROI: Tests indicate design flaws before you write the code. Engineer ROI: Stop testing around existing designs. Re-invent design ideas without having to know the whole literature. The tests show you what to solve.

See more...

Habit: No More Mocking

Organization ROI: Tests tell you where stories will cause non-local interaction bugs. Engineer ROI: When the product is broken a test will fail. No longer have 2 parts of the code have different expectations.

See more...

Habit: Healthy Unit Tests 4 – No Squeezable Tests

Organization ROI: Each test verifies something important, without locking in details you might want to change later. Engineer ROI: Start with any high-level test and squeeze it down to its essence.

See more...

Habit: Feature Flag Migration

Organization ROI: Bugs can be rolled back without disruption to others. Engineer ROI: Implement structure and functionality changes without impacting others, even if you make a mistake.

See more...

Habit: Add Domain Concepts

Organization ROI: Prevent bugs that arise from working around missing concepts. Engineer ROI: Use your code to find missing concepts, then use those concepts to organize the code in ways that will be easy to extend.

See more...

Habit: Test Temporal Dependencies

Organization ROI: Prevent timing-related bugs. Engineer ROI: Know when code will behave differently under delays, timeouts, and parallelism, even when you can't test all cases.

See more...

Habit: Split God Classes 3 – Break Inbound Dependencies

Organization ROI: Prevent bugs due to data sharing between remote parts of the code. Update remote parts of the code separately. Engineer ROI: Split one set of code that works with the God Class to use something simpler.

See more...

Habit: Communicative Tests 2 – Test as Spec

Organization ROI: Eliminate the disagreements between coders and non-coders for what the system should do. Engineer ROI: Not using cucumber/fit/fitnesse! Use the native language to agree with your PO/manager, because the code is written so well that you can.

See more...

Habit: No Emergent Behaviors

Organization ROI: Reduce regression bugs and surprising interactions. New features no longer destabilize existing capabilities. Engineer ROI: Test behaviors that arise from functionality split into different units.

See more...

Habit: Untie the Knots

Organization ROI: Reduce bugs arising from spooky action at a distance. Implement stories without touching as much semi-related code. Engineer ROI: Disentangle the less common coupling issues.

See more...

« » page 1 / 2