Monday, June 1, 2020

Legacy Systems Refactoring

With refactoring you can take a bad design, even chaos software, and rework it into well-designed code. Most often it is cheaper refactoring a legacy application instead of rewriting it from scratch.
Each refactoring step is simple, even simplistic. Yet the cumulative effect of these small changes can radically improve the design.
Martin Fowler

Saturday, May 9, 2020

Gradle 6.4 Has Finally Java Module Support

Java 9 release introduced the concept of modules within the Java language. Java 9 was released in September 2017.

Until now creating Java modules was quite cumbersome and Gradle did only offer limited support through external plugins.

Finally with the release of Gradle 6.4 in May 2020 software developers can easily generate well-behaved Java modules. We had to wait almost three years for native support!

Support for modules is native in the Java plugin. You only need to add one configuration line. Start using Java modules and have language support to enforce modularity in your product.

Friday, May 1, 2020

Four Powerful Sentences

You are a line manager, a Scrum master, a senior developer. Investigate the use of four powerful sentences.
- Sorry (one word)
- Thank You (two words)
- I am Wrong (three words)
- Can I Help You? (four words)

Walk the talk. Be a leader. Prove you have honesty and empathy.
You shall use these four sentences below as a way to calibrate how you interact with your teams.

As a rule of thumb state honestly and genuinely these four sentences multiple times each week. Otherwise you are probably more a command and control boss and not truly a servant leader.

Friday, April 17, 2020

Agile Component Design


Your are responsible to create or modify a component in your current application. This is a design activity.

How can you create a good, legible, maintainable component architecture? How can you validate your functional and non-functional requirements?

Yes you are right. You are responsible for architecture decisions at component or subsystem level. Below a set of tools to improve the quality of your design.

Tuesday, March 31, 2020

Java Records Are Here - Available in JDK 14


We need justification not to use immutable objects in ours solutions, rather than an affirmative reason to use them.
Records provide a first-class means for modeling data-only aggregates. They are available in Java since release of JDK 14.

Records are often seen as syntactic sugar to easily create immutable objects without having to write a lot of boilerplate code. And records as a clean definition of immutable objects can have a tremendous impact on your component design.

You as a designer have to reflect why your abstractions are not immutable and what is the rational behind. From experience it improves greatly the quality of your design.

Saturday, February 29, 2020

How Agile Collaborators Learn

Most products are developed by a team, and these achievements are the fruit of teamwork.

Software product development is now agile, and most often uses the Scrum approach.

Just putting a bunch of people together will not produce a high performance agile team. Quite a few companies find that out the hard way.

How can you increase the odds to create an environment where agile teams bloom and perform?

Monday, January 6, 2020

Calibrate Your Agile Approach: Bill of Rights

When eXtreme Programming first came out, one expectation it worked hard to set is who gets to make what calls on software projects.

For example, business has the right to know how long something is going to take and when it can expect things to be done.

Conversely, developers have the right to know what the priorities are, and to be able to do good work.

To that end, eXtreme Programming - XP - created the Customer and Development Team Bill of Rights.