|
Articles
Writing Usable APIs In Practice (pdf format)
ACCU 2012 conference
Giovanni Asproni
These are the slides of a session I
presented at the ACCU 2012
conference. Programmers, explicitly or implicitly, when working on complex systems, end up designing some APIs to accomplish their tasks, either because the product itself is some kind of general purpose library or because they need to write some libraries and packages to put some common code of their applications.
There is plenty of information available about how to write clean and maintainable code, but not a lot about writing usable APIs. The two things are related, but they are not the same. In fact, clean code is code that is clean from the point of view of its maintainers, usable APIs, on the other hand, refer to code that programmers (other than the original author) find easy to use. We'll see how usable APIs help in writing clean code (and vice-versa).
In this session I will introduce the concept of API usability, explain its importance--e.g., impact on productivity and defects--and show its relation with clean code, as well as some (sometimes surprising) research results from literature. I will also give some practical advice on how to start writing more usable APIs.
|
Talking Tests (pdf format)
ACCU 2012 conference
Giovanni Asproni
These are the slides of a lightning talk I presented as part of the "Testing a la Carte" session at the ACCU 2012
conference. It uses the metaphor of talking to describe some bad (and unfortunately common) unit testing practices in a humorous way.
|
Fingers In The Air: A Gentle Introduction To Software
Estimation (pdf format)
ACCU 2007 conference
Giovanni Asproni
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.
|
Scrum: Getting Started Without Getting Burned (pdf format)
JavaPolis 2006 conference
Giovanni Asproni
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.
|
An Introduction To Scrum (pdf
format) English version,
Polish version
Software Developer's Journal, June 2006
Giovanni Asproni
This is a brief introduction to Scrum, a
well known agile methodology, written for the Polish edition of this magazine.
|
Simple Simplest, or Simplistic? (pdf format)
ACCU 2006 conference
Giovanni Asproni
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.
|
How to Shoot Yourself in the foot. In an Agile Way (pdf
format)
Overload 71, February 2006
Giovanni Asproni
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.
|
The Unnamed Process:
Doing Agile With C++, Python, And A Tailor-made Process
(pdf format)
ACCU 2005 conference
Giovanni Asproni
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.
|
An
Experience Report on Implementing a Custom Agile Methodology on a
C++/Python Project (pdf format)
Overload 64, December 2004
Giovanni Asproni, Alexander Fedotov, Rodrigo Fernandez
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.
|
Motivation, Teamwork, and Agile Development (pdf format)
Agile Times, Vol. 4, February 2004
Giovanni Asproni
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.
|
|
|