Articles

Motivation, Teamwork, and Agile Development (pdf format)

Motivation has been recognized as the most important factor for productivity and quality. Nowadays, most software is developed by teams, so this article takes the approach of showing the strong connections between motivation and effective teamwork, and then showing how agile development methods are related to the latter.


An Experience Report on Implementing a Custom Agile Methodology on a C++/Python Project (pdf format)

This is an experience report on implementing a custom agile methodology in a (successful) real-life project. Introducing a new methodology--and more generally, any kind of change--in an organisation may create several technical, human, and political problems. In this article, we describe the choices we made in order to minimise their occurrence, and how we managed to solve the ones we faced. Finally, we give an assessment of the results of our approach, including what worked well and what we would do differently the next time in similar circumstances.


The Unnamed Process: Doing Agile With C++, Python, And A Tailor-made Process (pdf format)

These are the slides of a session I presented at the ACCU 2005 conference. It is an experience report on the implementation of a custom agile methodology with a particular focus on the human issues involved.


How to Shoot Yourself in the foot. In an Agile Way (pdf format)

In this article I describe what, in my experience, are the five most common and dangerous mistakes that can make the implementation of an agile methodology fail, along with some hints about how to avoid and/or fix them.


Simple Simplest, or Simplistic? (pdf format)

These are the slides of a session I presented at the ACCU 2006 conference. Simplicity is a concept that lies at the very foundation of software engineering: simple software is more maintainable, has fewer bugs, has a longer lifetime, etc. In the last few years, the advent of Extreme Programming and agile methods has made simplicity (e.g., "do the simplest thing that could possibly work") even more fashionable. However, simplicity is an elusive concept, and, very often, people confuse it with the first idea they can think of, producing simplistic solutions that eventually lead to unnecessarily complex software. This presentation explores this concept, giving also real-life (good and bad) examples, and highlighting some of the reasons why we continue to produce unnecessarily complex software, and about what we can do to avoid the traps of simplistic solutions.


An Introduction To Scrum (pdf format) English version Polish version

This is a brief introduction to Scrum, a well known agile methodology, written for the Polish edition of this magazine.


Scrum: Getting Started Without Getting Burned (pdf format)

These are the slides of a session I presented at the JavaPolis 2006 conference. This presentation is an in-depth introduction to Scrum and of some of the problems that may happen during its implementation, along with some hints and tips for their solution.


Fingers In The Air: A Gentle Introduction To Software Estimation (pdf format)

These are the slides of a session I presented at the ACCU 2007 conference. The process of estimating size, time, effort, etc., is fundamental for the success of every software project. Unfortunately, it is often the case that the stakeholders--including project managers, developers, and users--don't know how to do it properly (and also confuse estimates with commitments), and everybody ends up working against the clock to meet impossible targets, getting poor software late as a result. After a short introduction in which I'll present what can and should be estimated (e.g., time, size, effort, cost, etc.), and give an overview of some techniques, I'll focus on what is necessary to get started with some simple, but very effective techniques.