A talk I presented at vNext Orange County, 25th of February 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
7. What are we getting paid to do?
Use the most fancy technology out there
C# 5.0, Roslyn, F#, TPL, ASP.net MVC 3,
SignalR, RavenDB
Join the alpha geek crew and use all the
latest buzz words and create an architecture
around that showcase our technical skills?
8. What is business value?
The short answer
Helping the business achieve its
objectives
Faster Simpler Cheaper Better More
9. Why is this hard to do?
Developers don’t understand what the
business needs
The Business doesn’t understand what the
business needs
10. Why is this hard to do?
Even if we do understand what they want,
we can’t build it because of ...
Race Eager
conditions
Transactions Logging Serialization Performance
loading
Lazy
Caching Mapping Auditing Concurrency Staleness
loading
11. Why is this hard to do?
If somehow we’ve managed to get our
infrastructure in place and give the business
what it needs, it’s TOO LATE!
Legal New Market
Changes Priorities Changes
New New
Acquisitions
Requirements Competitor
12. Be agile!
Not just in terms of process
(Scrum, Kanban, XP)
We need to be able to change
decisions
priorities
CODE!!
16. Domain Driven Design
Focus on the core domain
Creative collaboration between domain
experts and software practitioners
Create a common language and common
understanding of the domain
20. Bounded Contexts – Shift Management
Employee
Plays a central role – identified by Social Security
Number
Substitute
It refers to the Employee by concept, but we do
not need its address – only its availability and
possibly its name for display purposes
31. Bifrost
Full end to end framework for line-of-
business application development
Promotes good practices such as CQRS,
MVVM through high focus on DDD
You don’t need the entire thing, but will get
benefits for every component you add
32. Bifrost
Our motivation
A platform for us to build LOB applications on
Make us focus on delivering business value
Easy to use, hard to use wrong
“It just works!”
35. Bifrost - Architecture
Client
Result that affect
Queries and Invoke Behavior Results /
Read Models Meta Data
Server
Queries Domain
Read Models Meta Data
38. User story
Persona: Hannah
Works with human resources, she is responsible
for hiring of permanent employees but also for
finding substitutes when people are on sick
leaves
As Hannah I need to be able to quickly
register any employees coming in before we
got all the details about the person
39. User story
Requirements
First Name - Required
Last Name - Required
Social Security Number – Required
This is what identifies a person uniquely
40. Where are we??
Client
Model View ViewModel
Command
Command
Handler(s)
Aggregate Root
Read Model Event Subscriber(s) Events
EventStore
41. Bifrost – What did we solve?
Decoupling
Commands representing the behavior
Events are the contract
Read and behavior are two different things
Working in parallel
Making it easier to apply agile principles
42. Bifrost - Roadmap
Realtime applications
Clients persistently connected to the server
Refine client model
Formalizations
Bounded Context, Modules …
Simplifications
Scale out options
Redis, Azure ++
45. Summary
Domain Driven Design
Will help you establish a language and understand what you’re creating
CQRS
Lets you establish a set of good patterns and practices, mind opener
Bifrost
One incarnation – but not look at it as a CQRS implementation, it is so much more
Please rate the talk at
http://tinyurl.com/BusinessValue2
http://blog.dolittle.com http://bifrost.dolittle.com