The definition of a Minimum Viable Product (MVP) is an important part of product development. With the rise of a new generations of customers expecting more from software, the MVP definition has also morphed, however the core concept remains the same. The key to remember is to always respond to the question “What is the minimum acceptable set of behaviors that a product need to solve?”. This concept of viability continues to evolve, to include “smart capabilities”.
-
posts
-
Defining the MVP
-
Vertical Slicing
When we talk about User stories, we often assume that everyone will quickly write 'As a user A, I want to do X so that I can do Y'. Anyone who practices Agile in some fashion knows that finding those well-defined stories takes effort. In practice, I have found that most approaches to obtain such stories end up in the adoption of processes that resemble some waterfall process. Vertical Slicing is a technique that can help focus on the discovery of requirements while always deliverying value. -
Introducing Conway's Law
Digital transformation is not just about the tech. It's about people, process and tools (in that order). As many industries continue their transformation journey, some core principles are arising. In 1967, Melvin Conway introduced a concept that is now known as "Conway's Law". It is very commonly used to describe how systems are designed and how teams are limited by communication factors. In this post, we introduce these. -
A New Hope
After much planning and deliberation, I think I found a place for my blog entries. I have been a happy blogger user for several years, however I feel it is now time to join the many who are relying on git to keep record of entries. I expect this to be a great experience.
-
ActiveMQ: Bridging Topics to Queues
Topics and Queues are powerful components in a messaging infrastructure. There are times when you need to create a convention where producers always publish to topics and consumers always read from Queues while letting the message broker control the "message forwarding". This article describes how to configure such a setup with ActiveMQ. -
Spring: Implicit Construction Injection
Over the years, Spring has made a number of enhancements to improve the developer UX. I realize some of these can be too trivial to notice. Today, I present one enhancement that, while minor, may save some from undesirable behavior. This is available since the 4.3 Spring release and it’s called “Implicit Construction Injection”.
-
Lessons Learned using Togglz
Feature Toggles (a.k.a. Feature Flags) is a very powerful pattern to test and introduce new features in a production environment. I started to experiment with Togglz as a OSS library to implement what I needed. While I used Spring-Boot to demostrate my use of Togglz, this can be done with any other framework.
-
Git: refusing to merge unrelated histories
Most recently, I found the following error during a git operation:
-
Starting a Project: Data Simulation
Data generators are an essential part of a "Digital Twin" strategy. This has always been a part of every problem domain: We need to create data that reflects production behavior, and we need to be able to reproduce a behavior that happens in the past. Notice that this is not just about data generation, but data simulation. This entry is about some initial thoughts on this topic. -
Distributed Locks with Spring Integration
Recently, I was given an opportunity to implement a use case where the team concluded that using Enterprise Integration Patterns (EIP) would help. Our distributed environment allowed for it, and we started to have discussions using the EIP lingo. While trying to use the
Splitter
andAggregator
patterns, I had a chance to review the source code, and learned first hand how Spring Integration implements several of these patterns.