I began to use Scrum and Domain Driven Design recently in the software development work. This is my review of them.
This is used for managing product development work. I feel convenient to use 4 steering wheels below to drive my project: epic, version, sprint, story .
1. an epic is used to depict the product’s aspects or to group the related stories.
2. a version is used to group epics’ parts which are complete enough to bring useful business values for users, or to reduce the technical debt for the system.
3. a sprint is used to resolve a list of stories for a version, inside a specified time range (normally 1 or 2 weeks)
4. a story is used to describe a requirement. Normally a story provides 3 information: What is the requirement about, Who is the related people, Why is the requirement needed to be resolved.
You can refer to this link for further information about Scrum
Domain Driven Design:
I agree with the philosophy behind this method, which states that in order to make a sustainable software product, we have to build and maintain a proper model. A model is a result of an imagining and thinking process to reflect the future software product into tangible forms such as charts, diagrams. Building a proper model for a software product is a continuous work. After each version released, there may come feedbacks from users. According to these feedbacks, we would learn more about the real demands of users. Base on the newly learned knowledge we would adjust or even rebuild our model to fit more with the reality.
Ubiquitous Language is such a useful tool to make the whole development team have the consistency in communication as well as to help figure out a visible model.
I see Microsoft Windows and Facebook as good software product examples. In the operating systems market, Microsoft has been successfully building and maintaining their OS models through decades. They gradually accumulated knowledge about the OS business domain through each version since Windows 1.0, 2.0, 3.0, 95, 98, 2000, XP, Vista, 7, 8, 10. We can recognize that each time the newer Windows version released it basically improved.
In the social network market, Facebook has been successfully building their empire. Based on the knowledge about the online advertising business, they have been well building and maintaining the model for a huge social network so they can sell advertisements on it. They gradually learned how to build a sustainable large social network model each time the number of users increased to a higher unit from hundreds, thousands, millions and then billions of active users now.
We see from the examples above that the models are gradually refined to more accurately reflect the demands of users. We can not correctly define all the demands of users immediately. But through the continuous improvement of the perceiving the real demands, we are step by step going to build a proper model of the product which satisfy the needs of users.
The Domain Driven Design proposes to organize the source code into 4 layers: User Interface, Application, Domain, Infrastructure. I feel a convenient to use the Domain layer as a window to observe whether or not the business logic of a product is correctly reflected at the source code level.
You can refer to this link for further information about Domain Driven Design