Software Lost Video: Ward Cunningham – Technical Debt

The concept of technical debt is used a lot in the software world today.  But the problem is that the concept is used almost always with a different meaning than the initial one.

Ward Cunningham coined this metaphor when he was working for a financial software product. The meaning of technical debt is that we prefer to put in production software with a partial understanding of the requirements and gather feedback. The only reason we do this, because we learn faster about how the feature should look like. While we put in production partial features, we accumulate technical debt. It is extremely important to take the time and clean the technical debt, by adding into the software the gathered understanding from the partial feature put in production.

Technical debt is not sloppy programming or messy code.

 

Read More →

Talk: Wildcard Conference 2013 – Sherlock Holmes and Pairing

Even Sherlock Holmes was pairing. Are you? Let’s find some good practices in the talk below about Sherlock Holmes and Pairing!

During my work I am used to pair with my colleagues on basically anything. I do pair-programming when I develop software, we use pairing when we deliver trainings or when we write articles. I often do remote pair-programming with strangers. The most things I learned during the last years were by working in pair with someone I barely knew.
Pairing for me has the following main advantages:
– I learn a lot from my pair
– I extend my comfort zone and I collaborate better with anyone
– the product we work together is a lot better because four eyes are better than two

Please find examples from the activities of the well-known fictional character Sherlock Holmes on how his pair Dr. Watson helps him become better and finding the answer to their riddles.

 

 
And here are the slides for the talk Sherlock Holmes and Pairing

Legacy Coderetreat: Episode 7 – Extract and Override – Code Cast

Extract and Override – code cast

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.

Code Cast

This is a code cast in Java.

Extract and Override is a very useful technique to break static dependencies. Whenever we cannot write tests for a piece of code, it is often because we have static dependencies. In the code cast below you can see how to use extract and override having a random number generator very tightly coupled. Because of that, we cannot have the same output for some clear steps. The solution found in this video is to extract the random to a new method and then override the random generator, just for tests. In this way we have predictability for tests.

Read here more about this concept in my blog post.

 

Software Lost Video: Olaf Lewitz – Increase Trust in your Organization

This video was recorded at Agile Lean Europe (ALE) Unconference 2014 in Krakow.

Olaf talks about how we could increase trust in our organizations by considering that the people we work with are adults. Another topic is de-scaling organizations, so that the people have a happy working place where they can take decisions and further more, they are invited to take decisions.

 

Read More →

Software Lost Video: James Shore – Rigurous, Professional Javascript

James Shore is one of the promoters of TDD in Javascript. He is presenting code casts on his website Let’s Code Javascript about how to work effectively in Javascript.

During this video you can see a short glimpse of how to do rigorous, professional Javascript. You can find out how to write tests, about tools you can use to test the same code on multiple browsers, how to take Baby Steps and many more.

 

Read More →

Talk: Agile Lean Europe 2014 – Being a Community Bumble-Bee

During the last five years or so I have been travelling Europe and meeting a lot of people in local communities of practice. My main purpose is to teach the local groups and to learn from them. My purpose was and is to pollinate ideas from one community to the other. If more of us do this, our knowledge will grow richer and faster.

The main visible activity of the Agile Lean Europe community is the ALE Unconference that moves each year from city to city. But there are a lot of less visible activities, people meet each other and learn across the country or language borders.

During this talk I want to share my learnings with you about local communities and how rich those experiences can be.

 

Here are the slides for Being a Community Bumble-Bee

Acknowledgements

Many thanks to Thomas Sundberg for proofreading this post.

Software Lost Video: Rachel Davies – Agile Scaling at ALE11 in Berlin

This video is the opening keynote from Agile Lean Europe (ALE) Unconference in 2011, Berlin.

Rachel Davies gives an idea on how Agile works at the moment, and how we cannot really do agile scaling in big enterprises.

 

Read More →

Legacy Coderetreat: Episode 6 – Dependency Inversion – Code Cast

Dependency Inversion – code cast

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.

Code Cast

This is a code cast in Java.

During this code cast you will see how to use the concept of Dependency Inversion on a legacy code base. Dependency Inversion is one way of transforming a tightly coupled system into a system that has a core and many small external dependencies. These external dependencies can be called also plugins. Read more about this concept in my previous blog post.

 

Acknowledgements

Many thanks to Thomas Sundberg for proofreading this post.

Talk: Agile Lean Europe 2014 – Legacy Code is Fear

Legacy code is fear because we fear the unknown. Learn what you need to learn in order to be less scared about legacy code during this talk.

You are a programmer. Someone from the company comes with an idea to add a feature and they are sure this new feature is very easy to add. And it should be. But the code is old. The code is a mess. Nobody in the firm knows any more that part of the system. You need to change that ugly piece of code. You are afraid that you might introduce defects. Legacy code is fear.

 

Here are the slides for the talk Legacy Code is Fear:

Legacy Coderetreat: Episode 5 – Basic Rules of Refactoring – Code Cast

Basic Rules of Refactoring – code cast

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.

Code Cast

This is a code cast in Java.

We start by checking what can be extracted to another method. The Basic Rules of Refactoring describes the detailed steps I use.

To ensure that we have a safety net, let us start with covering the code with some system tests and then write tests on the newly created method. These are also characterization tests, but they are often simpler than the system tests we wrote before. When the new method have been covered by tests, call it from the initial place where the code was copied from. Run all the system tests. At the end do some manual testing to see that everything works fine.

This technique is very useful to have small and safe steps while refactoring. Remember to never cut and paste. Always duplicate the implementation, cover it with tests and then reroute the call to the new code.

 

 

Acknowledgements

Many thanks to Thomas Sundberg for proofreading this post.