Tuesday, August 07, 2018

Good talks/podcasts (Aug 2018 I)

Some good talks that I show lately:

Monday, August 06, 2018

Honey Badgers, from Team to Tribe

A team is a group of individuals working together to achieve a goal. However, a tribe (in anthropology) is a human social group. That is: a group of people who interact with one another, share similar characteristics and have a collective sense of unity, and identity.

As I already explained in several blog posts, all the people that worked in the tech/dev department at The Motion formed a cohesive team, called the Honey Badger Team, with shared goals and a common mindset.

The Motion was an early stage startup. The platform itself was working well, we didn’t reach the product market fit, at least with the initial idea. The company, the product, and the business pivoted several times looking for monetization. The current model seems to work better than the initial one, but during all these changes, part of the team, including myself, gradually left. Motivation for leaving was different for each engineer, but in my case, I had already fostered a great team and had helped building a scalable platform.
So I looked for a new challenge in another startup. I found a great opportunity at Nextatil who is leading the agile retail revolution, but this is another story for a different blog post.

The important thing was that we were not a team anymore. The Honey Badger Team was no more, and at first, this made me sad. It was one of the cons about changing job.
However, (and I am not sure about how), we created a social group. With our mindset. With our shared history. With our way of working.
We evolved from a team to a tribe. A tribe with our own communication channels, our jokes, our standard way of solving problems. With a grown/agile mindset, aligned with the XP/DevOps values and practices.

It is incredible, but we are now spread over more than five different startups, and still all of us are thinking about spreading our values, our way of thinking, our way of solving problems. Sharing knowledge, sharing values, sharing solutions. I didn't lose a great team; I got a tribe instead. :)

Currently, we have two telegram channels, which we use to communicate or to obtain great solutions to any problem that we share.
Moreover, we are thinking about creating our invitational conference: the “Tejones Conf", an event for ourselves, our families and friends of us. If we aren't a tribe, I don’t know what we are.


The history of the Honey Badger team:

Blogs from other other Honey Badger tribe members:

Sunday, July 29, 2018

Tuesday, July 17, 2018

Agile is counterintuitive

A good Agile culture for a technology-based company is counterintuitive for most people, as we were educated to use cost accounting and resource efficiency instead of flow efficiency. Neither do we know how to collaborate and work in teams, as well as it being very common to see Engineering as a team to control: as a service provider, instead of as part of the business.

At the organization and team level, at least, the following practices are counterintuitive:
  • Increase Focus and reduce the work in progress (WIP).
  • Organize people around the work minimizing hands offs (requires generalists and collaboration), instead of in functional silos (need specialists) with central coordination.
  • Self-organized autonomous cross-functional product teams that require trust, power, and team responsibility, instead of a culture of Command and Control. 
  • The NoEstimates movement to avoid waste.
  • A continuous flow of small increments (instead of large batches of work).
  • Maximizing the amount of work not done, that can often be confused with laziness, without keeping in mind that this is an excellent strategy to avoid complexity, reduce waste and reduce maintenance costs.
  • And related to the previous one, Maximize the outcomes and minimize the outputs.

To reach technical excellence, and with the focus on software development, a lot of practices are initially counterintuitive. For example:

  • Test Driven Development (or for some people even automatic testing).
  • Pair programming. This practice is a classic one. It's very easy to measure the cost of two developers. But is very difficult to estimate the cost of a bad design, the reduction of the bus factor, the improvement in the knowledge about the code, the system, or about a technical practice. So if we try to analyze from a cost efficiency perspective in a command and control culture that doesn't understand our profession, it is nearly impossible to understand the real benefits of this practice for the product/ the team/ the business.
  • Continuous integration (the practice) that encourages trunk based development or working in short-lived branches (less than one day). 
  • Continuous Delivery or even Continuous Deployment that requires technical excellence, self-testing code, and proper tooling for recovery in case of failure.
  • Introduce operability, security, quality in the process instead of having specific teams and phases to validate these activities.
  • Optimize for fast recovery (MTTR) instead of increasing the mean time between failures (MTBF).

As we can see, in general, Agile is counterintuitive... and this is one of the reasons for the vast amount of fake agile cultures that are doing a lot of harm to a lot of companies.

In summary, agile software development is counterintuitive because it requires a culture of respect for people, collaboration and is incompatible with the classic low trust Command and Control organization. The problem is that being adaptable to changes is no longer optional...
Embrace change, Embrace failure, Embrace uncertainty...

It is not necessary to change. Survival is not mandatory. W. Edwards Deming

Resources and related posts:

Thanks for the feedback and/or for the contributions to:

Sunday, June 24, 2018

Good talks/podcasts (May 2018 II)

These are some interesting talks/podcast that I've seen/heard during this month: