

Mufrid Krilic
Domain-Driven Design Coach at CoWork, Norway
Domain-Driven Design Coach og konsulent i CoWork
Bodø, Norway
I am devoted to leading and coaching product development teams, by cultivating knowledge sharing in the organization and increasing co-developer’s business understanding. My professional philosophy is rooted in Domain-Driven Design and in building agile and technical coaching culture on an organization-wide level. I have 20+ years of experience as software architect, developer and technical coach, in healthcare, insurance and telecom, thus being deeply involved in developing enterprise-solutions in complex domains.
Currently working as a consultant and Domain-Driven Design coach at CoWork, Norway.
Apart from work I enjoy spending time engaging my kids in STEM activities. I am an enthusiastic First Lego League mentor and have actively contributed to the FIRST community locally and internationally.
En erfaren arkitekt, utvikler og teknisk og smidig coach med lang bakgrunn fra enterprise systemer i komplekse domener, forsikring, telekom og helse. Som faglig leder og coach for flere produktteam i over 20 år, har Mufrid jobbet kontinuerlig med kunnskapsdeling i organisasjoner og investering i at teamene forstår forretningsprosesser og modellerer programvaren på bakgrunn av den kunnskapen. Hans profesjonelle filosofi er forankret i Domain-Driven Design og å kunne bygge smidig og teknisk coaching kultur på bredere organisasjonsnivå.
Jobber som konsulent og Domain-Driven Design coach i CoWork.
Mufrid bor i Bodø med familien og bruker fritiden til å engasjere barna i naturvitenskapelig aktiviteter som FIRST Lego League, der han har vært en aktiv bidragsyter i mange år
Area of Expertise
Topics
Multiple Models with Multiple Perspectives in a Cross-Functional Team - Case Study from Healthcare en
In many cross-functional teams we encounter communication challenges between different roles in the team. Making domain experts, designers, testers, developers and tech leads align on the shared understanding is not an easy task. This is mainly due to different perspectives that each team member brings to the table, each perspective being a valid one however not adequate on its own. The different perspectives are particularly visible when reasoning about different approaches to the decomposition of the domain problem at hand which leads to different perceptions of subdomains and bounded contexts.
In this case study we will go through different models of domain problem decomposition that helped align the perspectives in a cross-functional team in the healthcare domain. We will go through functional, role-based, user-context based and business capability based decomposition along with pros and cons of each approach, backed up by the feedback provided by the impact each approach had on the data ownership in resulting bounded contexts.
We will wrap-up with the reasoning behind the choice the team actually made and how it played out in structuring the code base, delivering value to their customers, and how it impacted the different roles in the team.
Data Ownership in Legacy Systems - Building a Foundation for Data Mesh en no
Data analysis and reporting have traditionally operated using tailor-made data models after the operational data has been extracted and transformed. Behind it we find that the application development uses a data model which is much less suited for data analysis and reporting. One of the main reasons for this mismatch is the approach denoted as functional decomposition, where the system is designed based on functions as described in requirements, use-cases, product backlogs etc. Moreover, this approach is the one that most application developers take as a default choice.
What if there is another way to do the application design that explicitly allows the data to play a much more prominent role in system decomposition? What if this alternative approach can bridge the gap between application development and data analysis and reporting?
Join and explore an alternative to complex system design that emphasizes data ownership with foundation in business capabilities, which presents a very different opportunity for rich data analysis and reporting. The talk is based on real-world cases from the domains for healthcare and insurance.
Presented at Make Data Smart Trondheim 2022
Video (in Norwegian for members of Dataforeningen): https://gnist.styreweb.com/Account/Login?ReturnUrl=%2F%3Futm_source%3DInformasjon%2Bfra%2BDND%26utm_campaign%3D023a2a67e9-Nyhetsbrev_alle_uke51%26utm_medium%3Demail%26utm_term%3D0_988e9a11c7-023a2a67e9-39541197%26ct%3Dt
Slides (in Norwegian): https://speakerdeck.com/mufrid/dataeierskap-som-grunnlag-for-applikasjonsutvikling-make-data-smart-trondheim-2022
Domain Storytelling - Collaborative Modelling with Strategic Domain-Driven Design en
Domain-Driven Design at its very core focuses on collaboration between software developers and business stakeholders as traditional businesses and IT melt together. Collaborative Modelling is a paradigm for all kinds of activities that represent working together across different disciplines, ranging from traditional workshops to outright software design and modelling.
The challenge of Collaborative Modelling lies in both facilitating the collaborative process and aligning the acquired understanding of the problem domain with boundaries in the software system. The cost of poor facilitation is a mismatch in expectations between the stakeholders and the development team while the cost of misaligned boundaries is a software design with little adherence to the principles of high cohesion and low coupling.
This workshop addresses the challenge by presenting Domain Storytelling as a technique to build shared understanding between people with different backgrounds while providing ground for deep technical insights in software design. The focus is on building visual stories that highlight both the implicit relations in the problem domain and candidates for system boundaries.
Workshops conducted for NDC Workshops: https://ndcworkshops.com/slot/domain-storytelling-collaborative-modelling-with-strategic-domain-driven-design
Aligning Bounded Contexts with Subdomains in Legacy Code en
One way or another, each system contains some kind of boundaries. I would go so far and claim that even the dreaded Big Ball of Mud systems consist of parts that could be perceived as separate though undoubtedly only under deep scrutiny. The difference is in the “thickness” of the boundaries and the measure of interrelationships between the different parts of the system, the frequency and amount of data that is passed across the fences. It is the latter that leads to increased coupling resulting in systems that are hard to maintain and hard to change.
This presentation will present a story of an attempt to achieve an alignment between perceived subdomains, logical boundaries and source code structure in a legacy system. Based on the use case from healthcare we will go into technical detail on concrete steps that were followed to create a new bounded context using strategic Domain-Driven Design and 4+1 Architectural View Models.
Video
KanDDDinsky, Berlin 2022: https://youtu.be/mZOfRm1Gv68
Build Stuff, online 2022: https://youtu.be/puGUAIjN2kg
Booster Conference, Bergen 2022: https://vimeo.com/692597907
NDC Oslo 2021: https://youtu.be/9V_ENgl_wVY
Slides
https://speakerdeck.com/mufrid/aligning-bounded-contexts-with-subdomains-in-legacy-code-buildstuff-2022
Building Quality in Legacy Systems - The Art of Asking Questions en
The goal of being able to build quality in software products from the get-go is something that many organizations are trying to achieve. However, the very definition of software quality is somewhat elusive which makes it difficult to agree upon the perceived level of quality in software products. Moreover, working with legacy systems poses its own set of challenges as uncertainty of preserving overall quality in the legacy product seems to be an everyday struggle for many teams.
This talk builds on a multi-perspective definition suggested by Gojko Adzic in his blogpost “Redefining Software Quality” some years ago. For each perspective a series of well-defined questions will be presented that help teams challenge its own assumptions about quality in the end-product.
The talk is based on practical applications of Gojko’s definition as embraced by the teams working on a legacy enterprise software in healthcare domain.
Video:
NDC Oslo 2020, online: https://youtu.be/KSH8-2x5j-U
Slides: https://speakerdeck.com/mufrid/building-quality-in-legacy-systems-the-art-of-asking-questions-javazone-vr-2020
Domain Storytelling – Facilitator’s Guide to Enhance Learning in Your Organization en
In order to understand business rules and processes in a complex enterprise environment one must learn the language in which the business operates, i.e. a domain language. This talk will present Domain Storytelling as a lightweight technique that helps teams learn the domain language in a close collaboration with domain experts as well as providing strong hints on subdomains and contexts for implementation to kick off in a right direction.
Join to see how facilitating a Domain Storytelling workshop can enhance learning in your organization as well as push teams towards critical decisions using strategic Domain-Driven Design.
The talk will be based on a real-world use-case from a healthcare domain.
Video
DevDays Europe 2021, online: https://youtu.be/ANfYEt16vRI
Slides: https://speakerdeck.com/mufrid/domain-storytelling-facilitators-guide-to-enhance-learning-in-your-organization
Domain Storytelling - How to Learn a Domain Language en
Understanding business rules and processes in a complex enterprise environment should be high on a priority list for a development team, as a basic precondition to be able to create solutions that provide value to the users. In order to understand the business one must learn the language in which the business operates, i.e. a domain language.
This talk will present Domain Storytelling as a lightweight technique that helps teams learn a domain language. In a close collaboration with domain experts the language is visualized using pictographic notation while highlighting the users’ most urgent needs. Using Domain Storytelling is an engaging exercise on the domain experts’ terms, enabling teams to acquire knowledge about the business in an efficient way. Domain Storytelling can as well provide strong hints to the development team about subdomains and contexts that the software project could use as a basis for modularization.
The talk will be based on a real-world use-case from a healthcare domain.
Video
CukenFest, London 2019: https://youtu.be/a6Ek_XWOIm0
Slides: https://speakerdeck.com/mufrid/domain-storytelling-how-to-learn-a-domain-language
Domain Model in Multi-Language Environment with Examples from Healthcare en
The literature and resources on software-related topics in general, are mostly in English. Even the domain-specific discussions are presented in English. However, many of you design software for users whose native language is not English. In such cases when going through the knowledge-crunching process with the domain experts there are no English terms mentioned and both the domain model and the Ubiquitous Language of the Domain Driven Design are expressed in the native language. Then you try to implement the model and suddenly there is a dilemma whether or not to continue using non-English domain terms in code or do we try to translate them? How do you bridge the two worlds? Ignoring the issue may lead to discrepancy of Ubiquitous Language applied in code vs. oral communication and documentation.
This talk will present the challenges the teams have encountered while developing patient record systems for Norwegian hospitals, trying to code in English and communicating with users and domain experts in Norwegian. Takeaways are the lessons learned and suggested approaches on improving the domain model while lowering the language barrier.
Video
µCon London 2019 - The Conference on Microservices, DDD & Software Architecture: https://skillsmatter.com/skillscasts/13540-lightning-talk-domain-model-in-multi-language-environment-with-examples-from-healthcare#video
Slides: https://speakerdeck.com/mufrid/domain-model-in-multi-language-environment-with-examples-from-healthcare
Strategies to Learn Complex Domains - Experiences from Developing Enterprise Software for Healthcare en
Software developers are generally great solution-oriented people. We propose solutions to difficult problems, we try to make life easier for our customers by shielding them from overwhelming technologies by abstracting the details and creating nice and intuitive user-interfaces. However, in enterprise business domains, what happens when the business rules of the domain are overwhelmingly complex by themselves? When trying to understand complex domain a quick solution proposal could lead to wrong problem being solved. Inherent focus of a developer is on technology, not on business rules, which risks hiding the complex enterprise business rules beneath e.g. framework choices. How can one be sure that the correct solution was being applied to the correct problem?
Domain Driven Design (DDD) is a mindset for focusing on domain first when developing software. Some emerging DDD techniques offer light-weight, high-reward methods for learning complex domains while visualizing the complexities in the domain. Most notably, Event Storming and Domain Storytelling have been gaining traction recently and are astonishing methods for techies and non-techies alike. Both methods create an arena where domain knowledge can be shared among all participants in a project. In this talk I will present examples of learning the domain of healthcare and how applying Event Storming and Domain Storytelling methods helped my team to expose and embrace the complexities of the domain in our software. The methods reveal ways to deal with complexities using essential DDD patterns such as Bounded Contexts where complexity is naturally divided into different contexts that align with the boundaries that exist in the domain.
Video
Trondheim Developer Conference, 2018 (in Norwegian): https://vimeo.com/296639897
Slides: https://speakerdeck.com/mufrid/strategies-to-learn-complex-domains-experiences-from-developing-enterprise-software-for-healthcare
Motivate, Do Not Teach - Motivation Leads to Ownership and Ownership Leads to Innovation en
Talk about mentoring FIRST Lego League teams at Detroit, MI 2018
Video: https://youtu.be/nd88NY9BinA
Dataeierskap som grunnlag for applikasjonsutvikling en no
Tradisjonelt har dataanalyse og rapportering tatt utgangspunkt i spesiallagde datamodeller opprettet på bakgrunn av konvertering og transformasjon av operasjonell data. Det er derimot applikasjonsutviklingen som ligger bak designet av operasjonell data og som regel har denne datamodellen vært lite egnet til analyse og rapportering. En av de direkte årsakene til dette skillet er tilnærmingen som de aller fleste applikasjonsutviklere tar, nemlig funksjonell dekomponering av systemer, basert på systemfunksjoner beskrevet i kravspesifikasjoner, use-case, produkt backlogg etc.
Hva om det fantes en annen måte å utvikle applikasjoner på som gjør at data spiller mye mer sentral rolle i dekomponering av systemer? Hva om denne måten å modularisere systemet på gjør at dataanalyse, rapportering og applikasjonsutvikling plutselig sitter mye nærmere hverandre?
Bli med og se hvordan komplekse systemer kan designes med bakgrunn i dataeierskap og forretningstjenester (business capabilities), noe som fører til et helt annet utgangspunkt for dataanalyse og rapportering. Presentasjonen er basert på reelle historier fra helse- og forsikringsdomenet.
Presentert på Make Data Smart Trondheim 2022
Video (for medlemmer av Dataforeningen): https://gnist.styreweb.com/Account/Login?ReturnUrl=%2F%3Futm_source%3DInformasjon%2Bfra%2BDND%26utm_campaign%3D023a2a67e9-Nyhetsbrev_alle_uke51%26utm_medium%3Demail%26utm_term%3D0_988e9a11c7-023a2a67e9-39541197%26ct%3Dt
Slides: https://speakerdeck.com/mufrid/dataeierskap-som-grunnlag-for-applikasjonsutvikling-make-data-smart-trondheim-2022
Desentraliserte datadrevne beslutninger med Data Mesh og Domain- Driven Design no
Mange virksomheter strever etter å være data-drevet med mål om å ta beslutninger basert på godt gjennomført dataanalyse. Utfordringen som gjerne møter oss på veien dit er veksten og størrelsen på organisasjoner. Med dette på kjøpet kommer kompleksitet i form av avhengigheter og mengde data som produseres av ulike kilder forankret i flerfoldige brukerbehov. I de siste årene har organisasjoner adressert veksten ved å etablere tverrfaglige autonome team, desentralisere applikasjonsutviklingen med bl.a. mikrotjenester og forkorte veien til tilbakemeldinger fra brukere med DevOps-prinsippene.
De primære utfordringene som gjenstår å løse, på veien til å bli ekte data-drevet, ligger i det grunnleggende skillet mellom operasjonelle data, dvs. data produsert og rettet mot sluttbrukerens daglige behov, og analytiske data, data brukt i rapportering som gir innsikt i trender og utviklingen over tid. På den ene siden er operasjonelle data utviklet og forvaltet i en modell som ligger langt unna analytiske behovene, gjerne belastet med historikk i legacy systemer. På den andre siden jobber man ofte med sentraliserte løsninger for analytiske data i form av tradisjonelle datavarehus-løsninger som er mindre optimalt tilpasset organisasjonsveksten.
I dette foredraget vil vi gå gjennom prinsippene bak det nye paradigmet kalt Data Mesh, som viser vei til desentralisert tilnærming for analytisk arbeid basert på domene-orientert applikasjonsutvikling med Domain-Driven Design. Vi vil underveis følge opp med flere use-case’r og eksempler fra ulike domener og implementasjon av prinsippene i andre større norske virksomheter.
Gjennomførte foredrag:
Skatteetaten, Analyseteamets kompetansegruppe
Bodø, 2023-03-29
Deltagertilfredshet: 9 av 10 vil anbefale foredraget!
Tilbys som 2 timers bedriftsinternt inspirasjonsforedrag
Tverrfaglig samarbeid med Strategisk Domain-Driven Design no
Domain-Driven Design (DDD) kan betraktes som et sett med prinsipper for produktutvikling av IT-systemer der kjernefokus ligger på tett samarbeid mellom domene-eksperter og utviklingsteam. Med DDD legges det vekt på modellering av forretningsprosesser der modellen skapes i tverrfaglig samarbeid og itereres over ettersom den felles forståelsen vokser fram.
Denne prosessen kalles Collaborative Modelling og representeres av et sett med lettvekts-teknikker som bygger bro på tvers av fagdisipliner. I dette seminaret går Mufrid Krilic gjennom grunnpillarer for Strategisk Domain-Driven Design, og viser noen eksempler på Collaborative Modelling-teknikker. Målet er å øke bevisstheten rundt modellering, og gi deltakerne inspirasjon til å praktisere dette i egne kontekster.
Presentert på Smidig Meetup
Video: https://vimeo.com/650554654
Om kompleksitet, autonomi og brukerperspekiv - historie om hvordan komplekse systemer blir til no
Når vi snakker om produktutvikling av større IT-systemer snakker vi ofte om prinsipper, strategier og gode retningslinjer for produktdesign, IT-arkitektur, team-organisering og industristandarder for programvareutvikling, alt støttet av solid dose domenekunnskap. Likevel, selv med de beste hensiktene blir ofte systemer vi lager et godt stykke unna de målene som ser åpenbart oppnåelig ut om vi tar utgangspunkt i de samme prinsippene og retningslinjene. Dette skillet mellom målbildet og det faktiske resultatet er som regel synlig kun i retrospekt ved å se på de valgene vi har gjort, valgene som tas med beste hensikt av mennesker som deltar i produktutviklingen med ulik kompetanse og perspektiver.
I dette foredraget vil vi presentere en historie om et produkthus i et komplekst domene som har gjort sitt beste i å oppfylle kundens behov og å etablere seg i marked med sterk konkurranse, som nå befinner seg i en situasjon der kundenes oppfatning av selve organisasjonen er negativt preget. Vi vil bevege oss fra det strategiske mot det operative, ved å se på beslutninger som har ført til at uhåndterlig kompleksitet har sakte, men sikkert overtatt både sluttproduktet og IT-arkitekturen.
Vi vil avslutte med noen alternativer på hvordan organisasjonen kan ta steget videre med å legge til rette for at produktteamene kan fokusere på brukerbehov når de tar veivalg i det tekniske- og produkt-designet, samt rendyrke sitt kjernedomene og spille på lag med kompleksiteten ved å avgrense og kontekstualisere den.
I verktøykassa på veien videre finner vi Two Mindsets og Level of Alignments som hjelper organisasjoner anvende riktig tilnærming avhengig av problemets kompleksitet og effekten de ønsker å oppnå. Alt kombinert med Domain-Driven Design som hjelper deg å unngå å lage unødvendig komplekse IT-løsninger, ved å respektere behovene til mennesker som jobber i forretningsdomenet via tett tverrfaglig samarbeid.
Presentert som Keynote på d:Xchange 2023, DIPS sin årlige fag konferanse
Bodø, 19.4.2023
Deltagertilfredshet: 7 av 10 vil anbefale foredraget!
Tilbys som bedriftsinternt inspirasjonsforedrag
Make Data Smart Trondheim
Session (in Norwegian): Data Ownership as a Prerequisite for Application Development
Booster Conference
Session: Aligning Bounded Contexts with Subdomains in Legacy Code
Smidig Meetup Online
"Tverrfaglig samarbeid med strategisk Domain-Driven Design"
Dev Days Europe
Session: Domain Storytelling - Facilitator's Guide to Enhance Learning in Your Organization
Java Zone VR
Session (in Norwegian): Building Quality in Legacy Code - The Art of Asking Questions
µCon London 2019 - The Conference on Microservices, DDD & Software Architecture
Session: Domain Language in Multi-Language Environments with Examples from Healthcare
CukenFest 2019
Session: Domain Storytelling - How to Learn a Domain Language
Trondheim Developer Conference 2018
Session (in Norwegian): Strategies to Learn Complex Domains - Experiences from Developing Enterprise Software for Healthcare
FIRST Championship Conferences 2018
Session: Motivate, Do Not Teach - Motivation Leads to Innovation and Innovation Leads to Ownership