Identify Responsibilities and Boundaries: The Key to design a Loose Coupling and High Cohesion system

Loose coupling and high cohesion are two fundamental principles in software design that are often discussed but it’s difficult. After many failures, I believe I have found the key to solving the above problem: clearly defining the responsibilities and boundaries of each component. In this article, I will explain why this is a crucial step and provide practical guidance on how to achieve it.

Kotlin Coroutines vs LMAX Disruptor: Benchmarking for Asynchronous and Concurrent Programming

Asynchronous and concurrent programming are critical for building high-performance and scalable applications. But with so many tools available, it can be challenging to choose the right one for the job. In the JVM ecosystem, Kotlin Coroutines and LMAX Disruptor are two popular options for asynchronous and concurrent programming. But which one is better? Introduction Kotlin Coroutines is a lightweight and expressive library for writing asynchronous, non-blocking code in Kotlin. It provides an easy-to-understand way to write concurrent programs.

Comparing Git Flow, Trunk Based and GitHub Flow

Source code management is critical to ensuring project stability, developer velocity, and delivery cadence. Today, several branching workflows are widely used: GitHub Flow, Git Flow, and Trunk-Based Development. In this article, we’ll examine each workflow in depth and explore which strategy best suits feature teams of 2 to 7 engineers during active application feature development.

How to Write Testable Code

In the article Introduction to Unit Test, we highlighted the vital importance of Unit Testing. But before applying unit tests effectively in current or future projects, we need a crucial foundation: learning how to write Testable Code (Production Code designed to allow straightforward unit testing). This is often the hardest hurdle, so this article synthesizes key principles to help you write testable code effortlessly.

What are S.O.L.I.D principles?

On the journey to becoming a seasoned developer, understanding and mastering S.O.L.I.D is an essential milestone. It reshapes how you think about code organization, boundary definition, and interactions among modules, classes, and methods—making your codebase readable, clean, and maintainable. It empowers you to write Testable Code for Unit Tests, forms the architectural foundation for IoC/DI, and significantly boosts your confidence during technical interviews :smile_cat:.

Introduction to Unit Test

In 2015, a defining event completely changed how I think about Testing in the software development lifecycle. It was the first time I had to write a 5 Whys, 9 Steps incident root-cause report. The primary cause of the failure was underestimating Unit Tests, and the consequences were severe. Read on to find out why ;)).