Programming Chi

Tomasz Fijałkowski's programming blog.

Why scrum is passé?

An illustration of a puzzle in which one element with the word implementation is lifted and reveals the word value

For some time now, I’ve been observing that Scrum is in decline. It’s not about its decreasing popularity. On the contrary, it has become a buzzword. It appears in almost every job advertisement (alongside a young dynamic team), losing its original meaning. In my surroundings, people show less enthusiasm to implement it - they often want to modify it and...

read more

Optional as a Field and what are you going to do to me about it?

It’s been quite some time since the introduction of the Optional class in JDK 8. A lot has been written about where and how to use it, what constitutes good practice, and what doesn’t. An example of this can be found in the Optional Anti-Patterns article. But does it all make sense?

read more

Reducing coupling of Java 9 modules

In the Quick Introduction to Java 9 Modularization article, I quickly introduced the basic concept of Java 9 modularization. Now is the time to improve module design. In this article, we will focus on reducing module coupling.

read more

Quick introduction to Java 9 modularization

The new version of Java is fast approaching. The official release is scheduled for the 27th of July 2017. However, you can already use the early access version to play with the new features. In this post, I’d like to quickly introduce the modularization of Java 9.

read more

Looking for the best product owner

If I had to mention two things that can change the fate of a project, it would have to be domain-driven design (DDD) and agile methodology. One of the most popular agile methodologies is Scrum, which provides the product owner role. Unfortunately, I’ve noticed that in many projects, the weakest link of the team was the product owner. This is...

read more

Micro-monolith anti-pattern

Microservice-based architecture gains popularity every day. This approach has many advantages. The most important advantages include independent deployments, shortened and simplified deployment pipelines, limited communication between teams, and technology freedom. These core advantages support the quick delivery of new features and organization scalability - allows for doubling the number of teams without a significant increase in cross-team communication overhead. Microservices,...

read more

Microservices and modularization

Many times I heard that the microservice-based architecture is a solution of modularization issue. This is explained by the statement that monolith is a pure evil with the big ball of mud architecture. Microservices, in contrast, are well separated units of business logic. This biased point of view is visualized by diagrams like

read more

Responsible work with MongoDB

Understanding data model is sufficient to design good database schema in RDBMS (relational database management system). Having this knowledge you are able to construct normalized tables, add appropriate constraints and finally create indexes to speed up queries. In the world of NoSQL there are no simple solutions, rules and answers. That’s why we can only talk about patterns, tips and...

read more

Don't misuse unchecked exceptions

In its early days, Java made extensive use of checked exceptions. However, the tendency of programmers to avoid dealing with checked exceptions led to a shift towards unchecked exceptions. This approach often results in neglecting proper error handling and obscuring side effects. Furthermore, exception handling is not checked at the compilation level.

read more

When use and when not to use default methods in Java interfaces

Java 8 introduces many new useful features; unfortunately, it also leads to new misunderstandings and antipatterns being observed every day. One of these mistakes is the incorrect use of default methods in interfaces.

read more