to train Code ceremony Skilled developers Tests can slow down Knowledge crunching Initial slowdown Access to experts Perfection Slow pace of change Stiffness Lack of feedback DDD fixation Wrong abstractions Cultural issues Traps DDD all the things Lack of context Over design Unfocused effort No refinement Missing abstractions Mismatch with ubiquitous language Mismatch between model and implementation Technical debt in domain model Inertia Expensive to pay back Knowledge leaks Domain model becomes anemic Difficult to refactor High risk of issues Coupling to infrastructure Difficult to move to other infrastructure Reduces testability Incorrect boundaries Aggregates Bounded contexts Modules No domain experts Lack of feedback Self fulfilling prophecy Slow Incorrect intent Cripples communication False suggestions Leads away from real problems Frameworkization Wrong level of abstractions Wrong audience Coupling False vision/wrong perspective Leads away from the real problems Difficult to identify Even more difficult to correct Waterfall Slow time to market No feedback cycle Change of course is tough Wide vision Everything is core No time to become excellent Unskilled team Difficult to solve in the short term Expensive in the long term Many new techniques at once Lack of focus on domain Lack of refinent High risk low reward Knowledge silos Team members Areas of the code Integrations under the radar Benefit Ubiquitous language Understanding of the domain Intent Commands Analytics Evolving Testing Support Debugging Domain events Extensibility Scaling Evolving Testing Analytics Support Debugging Abstractions Emergent design Opportunities Pivot Maintainable Simplicity Agility Ease of use Adoption Little support Eases communications Domain experts Simplifies marketing effort Team members Behavior driven tests Agility Flat learning curve Visualization Bounded context Scope Isolation Low risk Decoupled Focus Specialization Fun & excitement Tools Process Knowledge crunching Explore boundaries Experiment Narratives Diagrams Visualization techniques Going backwards Visual tests Ubiquitous language Read vs. write UX state charts Boxes & arrows Estimating ROI Cost/benefit Pomodorros Planning Event storming Modeling whirlpool Agile Infrastructure Clouds Messaging CI Monitoring Code TDD Tactical patterns Natural language Ubiquitous language Temporal evolution Modularity API design Existing patterns Event sourcing CQRS Hacks Follow the current
a promoter I want to register for an account. ! Scenario: Successful registration ! Scenario: Customer is already registered ! Scenario: Forgot to accept the General Terms and Conditions ! Scenario: Forgot to enter name ! Scenario: Forgot to enter password ! Scenario: Forgot to enter organization
($aMessage) { parent::__construct($aMessage); } ! static function becauseMinOrderQuantityExceedsMaxOrderQuantity () { return new SorryInvalidOrderPolicy( 'Sorry, the minimum order quantity should be less than or ' 'equal to the maximum order quantity.' ); } }