Posts

Showing posts with the label modeling

UML Hidden Gems

Image
UML . Ouch. OK, Diego don't you have some newer or shinny or sexy to talk about. Well, it's 2020 right? So jokes apart.  UML is modeling language from the 90s. Software Architecture and Software Engineering evolved a lot in 30 years. So is UML still relevant? IMHO Yes and No. The part that I dont think it makes sense is the notation part of the formalism part. Visual diagrams can be simple enough to be understood and you can survive without notation language. So if UML is not about the notation what is about? Or why there is value in UML in 2020? Questions that I intend to Answer in this very blog post - Let's get started.

DDD The Lost Discipline

Image
DDD is a modeling method highly focused on business domains and comunication. DDD solves several issues we have with Services/Microservices and Backend Systems in General.  One of the biggest challenges in Services but especially microservices is to find the right boundaries meaning what should belong to one service or what should belong to another service. It's common for engineers, often, just write code right and ignore the design. Modeling is hard for several reasons but one reason is the software might work, even with the wrong design. The right Design starts placing the code in the right place. DDD is key to that. DDD is not only about placing the code in the right place but also about how we communicate with the business to figure out that and other ways(DDD Patterns) to express the solutions.  

Architecture 101: Thinking about Design

Image
Architecture is about many things but I always believed * Design * was in the heart of architecture. However how we design something? There are many aspects to cover. In order to do better designs you need basically 3 things: * Problems to exercises your design skills. * A continuous learning process: Knows your tools, technology and always look for new approaches and techniques. * Review and Feedback process which could be done via a series of practices like Design Sessions, Design Review, working POCs.  It's also imperative to know your tools, what features do you have in your disposal, what techniques people often use, what principles can be applied and are often good ideas like Isolation, Testability, Debugability and which ones are smells or often anti-patterns like using Cassandra as a queue or Reflection in Java without caching . There are always macro and micro concerns you need to take into account. At the end of the day, small things can make a big difference in d...