domingo, agosto 21, 2016

Agile is not a recipe for success...

Post previously published in Spanish agilidad no es una receta para el exito


Agile is not a recipe for success, is a recipe for failure...
Fail fast, cheap and learning during the process... Agile will not avoid the failure, but it will help to avoid failing in the same way, at the same problem or using a ton of resources.

Agile assume the following:
  • We will fail estimating.
  • We will fail understanding the customers requests.
  • We will fail selecting technologies.
  • The requirements will change (always).
So agile proposed:
  • Estimate very small chunks (or no estimate at all).
  • Deliver running systems to obtain feedback and adapt the system to the real need of the customer.
  • Use agile practices to have under control the technical debt and to allow maintenance/evolution of the system with a reasonable cost.
  • Maximize the amount of work not done.
  • Create code with good quality to make very easy to adapt it to future changes.
And all of this using very fast/small cycles (timeboxing, iterations, continuous delivery), so even if we fail is very difficult that this failure generate a great problem.

And all this process reforced with a continuous improvement process (with retrospectives and team improvements).

Embrace Failure
Embrace Change
Embrace Chaos

domingo, agosto 14, 2016

Why I use the term "software craftsman"

I like to think that I can consider myself a professional software developer after 20 years or working on it. Since some years ago I feel very aligned with agile software development movement and lately with the software craftmanship movement. I started to be interested in agile in 2002-2003 and in the software craftsmanship in 2012.
Currently when I try to describe myself I use the words “software craftsman” as an equivalent to “software developer, continuously trying to improve his skills and craft”.



Let me explain what I mean by “software craftsman”:
  • I mean being professional as software developer
    • Trying not only to create working code, trying to create simple, easy to maintain code.
    • Trying not only to create the code that the business required, also trying to help the business to growth (with different solutions, even without using code). Adding steadily value to the business.
  • In order to be a good professional there is a strong need to learn and improve our skills, tools and practices. Or even look for new ones.
  • IMHO a good process for learning or improving ours skills is participating in the community of professional software developers. In this process the mentor / apprentice format works very well to improve our skills.
Why not using the “agile software developer” denomination?
In fact, for my, this definition can be a good option, but currently, the term agile is even more confuse that craftsmanship.

For me, at least in my experience, the development of applications and systems has more in common with a craft than with an engineering. Engineering is the application of mathematics, empirical evidence and scientific knowledge, so it is possible to plan, predict and control. IMHO software development for non trivial systems requires sense and respond and other approaches can derive in a false sense of control.

Some kind of software efforts are more adapted to a engineering approach (algorithms, compilers, software for science), but in my case, this is the exception, not the norm.

So, currently in my linkedin profile I indicate that I work as Software Craftsman… I also indicate that I work as a Shaman, but this is different history :-)

References:

aws-sdk-go spikes and small examples

I am developing the initial support for aws checks for the library https://github.com/aleasoluciones/gochecks

gochecks library allow us at TheMotion and at AleaSoluciones to create programmatically highly concurrent monitoring apps.

This post is an autonote with the initial spikes created using the aws-sdk-go

aws_golang_examples

sábado, julio 30, 2016

Interesting talks about Work Culture and Leadership (June and July)

This are some interesting talks/podcasts/presentations about work culture, leadership, teal organizations, etc that I watched during June and July. Lot's of inspiration...
Work Culture

Leadership (Tribal)

What would you do if you weren't afraid?

martes, julio 26, 2016

Initial Scrum includes XP practices

The following quote explains many of the existing problems of agile methodology.
"I learned from Jeff Sutherland that the first Scrum actually did all the XP practices. But Ken Schwaber convinced him to leave the engineering practices out of Scrum, to keep the model simple and let the teams take responsibility for the tech practices themselves. Perhaps this helped spread Scrum faster, but the downside is that a lot of teams suffer because they lack the technical practices that enable sustainable agile development."
Henrik Kniberg "Scrum and XP from the Trenches

Interesting talks about DevOps and Agile culture (June and July)

This are some interesting talks/podcasts/presentations about DevOps and Agile culture that I watched during June and July: