#RemotePairProgramming Ep 012: Adi & Wassel – Good Friends with TDD as if you Meant It (part 2)

About

This is a remote pair programming codecast with Wassel Alazhar on an interesting problem called Good Friends.

Premise

After implementing a bit of the problem, we discuss about what we have done. We observe a lot of duplication and we debrief.

Read More →

How to: Remote Pair Programming

Before getting into remote pair programming, let’s see what pair programming is.

Pair programming

Pair programming is when two programmers write code on the same requirements / problem. There are two roles: driver and navigator. The driver has the keyboard and writes the code. The driver focuses on short term implementation. The navigator looks at long term strategic decisions and double checks the driver’s implementation details.

In many cases pair programming is a lot more efficient, the code being clearer, nicer and with fewer defects. Nevertheless pair programming can be tiring, especially when doing it for the first time.

As a rule of thumb, you don’t need to pair the whole day, because it’s tiring, difficult and sometimes inefficient. Choose more complex, difficult or areas less known when doing pair programming.

Remote pair programming

Not everyone is at the office all the time. Sometimes we work from home, or we are in another office. So it’s a good idea to use this useful tool of pair programming also when you are not next to the other programmer. We call that remote pair programming.

Remote Pair Programming
Read More →

#RemotePairProgramming Ep 011: Adi & Wassel – Good Friends with TDD as if you Meant It (part 1)

About

This is a remote pair programming codecast with Wassel Alazhar on an interesting problem called Good Friends.

Premise

We pick a problem not at all known by me and we figure it out with #TDD on first view. Interesting to see how you need to analyze before rushing to write tests

Read More →

#RemotePairProgramming Ep 010: Adi & Amitai – Legacy Code

About

This is a remote pair programming codecast with Amitai Schleier on Legacy Code, the Trivia kata.

Premise

We are refactoring some legacy code in Perl and VI. Adi doesn’t know almost anything about Perl, but he knows the problem and the approach. Amitai knows Perl so he is primarily driving, while Adi is navigating.

Read More →

Evolutionary Design Talk – NewCrafts Paris 18 May 2018

Evolutionary Design Talk

Evolutionary Design: The art of growing a system by observing its natural traits and then normalizing and optimizing its growth

Evolutionary Design seems to be one of the black arts of software development.

Evolution = transformation. Evolving the code is not done by magic, we the programmers evolve the code. And we need specific techniques for that. When we evolve, we transform the code to something else. We will talk about some of these transformations, when to use each one and why.

Simplicity We work feature by feature and not layer by layer. All the development is done on a vertical thin slice through all the layers. We use evolutionary refactoring with many design principles in our mind, but not with a predefined design. We respect the principles, but focus on finding the simplest solution for the problem.

Focus on the problem, not the solution We want to rather focus on the problem and not the solution, rather than when we know the solution, but we just find the fastest way to implement it. When we know the solution, the question is: can it be improved; is it worth it? We will talk about some heuristics of “good enough”.

Video

http://videos.ncrafts.io/video/275530160

Slides

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 →

What is Evolutionary Design?

What is 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.

What is Evolutionary Design

Read More →

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

About

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

Premise

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

About

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

About

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 →