Tag Archives: Evolutionary

Organizational Evolutionary Design

What is Organizational Evolutionary Design?

Evolutionary Design is the practice of growing a system in a natural way, by adding the minimum amount of code to satisfy the business needs in an iterative and incremental approach. When done right, the code structure changes continuously to optimize for change, thus allowing a constant speed of development for longer periods of time.


In a dynamic world we need to adapt our tools and techniques to be resilient to change. Evolutionary Design is one of these techniques that helps us grow a system well by understanding its current characteristics.

Please see more of my ideas on the topic of Evolutionary Design here. During this article I will explain that there  is an obvious parallel between Software Evolutionary Design and Organizational Evolutionary Design.


Organizational Evolutionary Design

Read More →

#RemotePairProgramming Ep 009: Adi & Ferdinando – Elastic Pair Programming


This is a remote pair programming codecast with Ferdinando Santacroce on the topic of Elastic Pair Programming.


When you are in a team when people know each other well and they are at the same level, having the role of driver and navigator might not be the best option because the navigator gets bored about the role. In this situation I find both the developers to share keyboard and mice so both can edit the code at anytime, to figure the solution of the problem. So we both can change the code at anytime.

Read More →

#RemotePairProgramming Ep 008: Adi & Tom – Improving Legacy Code


After episode 7 when we added the minimum amount of tests needed to start refactoring legacy code, you can see how we gradually improve the code in small steps.


Read More →

#RemotePairProgramming Ep 007: Adi & Tom – Tackling Legacy Code


During episode 7 of #RemotePairProgramming series Tom Oram is pairing with me on some legacy code.  We apply legacy code techniques to improve testability and clarify the code. After that the next episode will be about improving the legacy code, but with a safety net.


Read More →

#RemotePairProgramming Ep 006: Adi & Julian – Evolutionary Design with Selection Pressure (part 2)


Episode 6 of this #RemotePairProgramming series is about Evolutionary Design with Selection Pressure. My coding pairing partner this episode is Julian Ghionoiu


Read More →

#RemotePairProgramming Ep 005: Adi & Julian – Evolutionary Design with Selection Pressure (part 1)


Selection Pressure. What is it?

What is Selection Pressure? First of all let’s give a definition from Biology

Any cause that reduces reproductive success in a portion of a population potentially exerts evolutionary pressureselective pressure or selection pressure.[1] With sufficient pressure, inherited traits that mitigate its effects — even if they would be deleterious in other circumstances — can become widely spread through a population. It is a quantitative description of the amount of change occurring in processes investigated by evolutionary biology, but the formal concept is often extended to other areas of research.

During this episode we will apply the concept of Selection Pressure from Biology to software development that Julian Ghionoiu came-up with. So check the video to see more!

The third episode of this #RemotePairProgramming series is about Evolutionary Design with Selection Pressure. And, as always, I have coding coding pairing partner, that during this episode is Julian Ghionoiu.

Selection Pressure

Read More →

Evolutionary Design: Normalize Growth

Evolutionary Design: Normalize Growth

The Definitions

Evolutionary Design is the practice of creating the components and interactions of a system while it is evolving, on the basis of the client requirements and user needs.

Normalization refers to a process that makes something more normal or regular

Normalization may refer to more sophisticated adjustments where the intention is to bring the entire probability distributions of adjusted values into alignment from Wikipedia

Growth refers to a positive change in size, and/or maturation, often over a period of time from Wikipedia


The Moment

I am a big fan of gardening. Whenever I can, I take care of my plants and think about subjects like Evolutionary Design. One moment I was taking care of my young tomato plants: I needed to rip the small leaves that grow and just take the food away from the flowers and fruits. And it struck me: any gardener is doing Evolutionary Design.


Read More →

Legacy Coderetreat: Part 11 – Refactoring Rule of Three

Rule of Three

Blog post series

This blog post is part of a series about legacy coderetreat and legacy code techniques you can apply during your work. Please click to see more sessions about legacy code.


The rule of three says:

Extract duplication only when you see it the third time.

This concept is extremely useful when you want to improve legacy code, refactor in the TDD cycle or just improve existing code that is covered by tests.

The Rule of Three brings higher coherence and more clarity to the system, because the duplicated code starts to be moved into specialized areas. In this way we optimize the code base for changeability.

The Rule of Three prevents from prematurely extracting possible duplication and defers the duplication minimization until we have enough proof.


Read More →