Saturday, July 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?

Tuesday, July 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:

Monday, July 11, 2016

Agile Open Space 2016

1,2th july Santiago de Compostela
Official site: http://aos2016.agile-spain.org/
Twitter: https://twitter.com/aos2k16
Twitter official hastag: https://twitter.com/hashtag/aos2k16?src=hash




Sessions

Design Sprint (https://twitter.com/artzis)

Artitz explains the complete process of a “design sprint” created by Google Ventures to initial design of a product, or to understand a startup product.
They use this artifact to put all the team on the same page and answer important questions for the product in 5 days (it can be prototypes to test with real customers).
It can be complementary to agile inceptions or a substitution sometimes.
Seems very useful and can be a good technique to be explored by our product "discovery" team.

References:

Lean workshop for kids https://twitter.com/agiletorrezno



This was a very interesting lean workshop for kids (4yr-10yr old)
Using a real example to create paper t-shirts the kids learn about organizing the work around a flow, making continuous improvements and avoid waste… Very funny and interesting… WIP, rework, SILOS avoidance, true collaboration.
For me was a pleasure to be in this session with my 4yr old daughter :)

Improvement Kata https://twitter.com/antoniolopezg

We make a practical session Improvement Kata, resolving collaboratively a set of puzzles for kids.
All the people was splitted in two teams and each team made 6 interations defining the expected result, the changes/improvements to test, executing the tasks and analyzing the results of the experiment and the difference with the expected results.
Very good exercise to explain the improvement kata to others and to experiment the process.
The same session can be facilitated using the following materials
http://www.katatogrow.com/#!instructor-materials/ctzx

Product Discovery (https://twitter.com/artzis)

Only 1 of 3 of the product ideas / features are good for the product and even to make this idea successfully normally is need 5 - 6 interactions
The other 2 of 3 product ideas don’t improve the value of the product or even worse, they are counterproductive for the revenue, KPIs or for the customer satisfaction.

To work in this ideas we can use a Product Discovery team that have the goal of identify this 1 of 3 ideas and define the experiments and changes to identify the real features to implement in the product.
Product Discovery Team: Product manager + UX + Tech Lead. This can identify the intersection for ideas that are Useful/Valuable Usable and Factible.

The important metric is the lead time from Idea to Cash. Normally more than the 80% of the time is waiting, so this product discovery process try to minimize this timing using some techniques like design sprint


References:

Adaptive leadership (joserra_diaz quesitosgiver)

Interesting but there was at the same time other session more technical that I wanted to see, so I use the two feet rule.
References:

OOP and Connascense / Coupling (Fran Reyes / Alfredo Casado)

It was an interesting description about the different types of connascence with examples and different approximations to try to avoid this problem of at least to refactor to less problematic types of connascence
References:


eXPeriencias (Carlos Ble David Fernandez)


This session was an open discussion about practical experience using XP. The format of the session was a lean coffee and I remember that we talk about:

  • Pairing
  • Mob programming
  • Continuous integration
  • How to introduce a XP culture
  • ...

Let’s Talk about Values (Pablo Jimeno)

This session was focused on examples about good defined Missions, Visions and Values. We talk about the experiences at Deiser (Guillermo Montoya), Magento, Spines and Liferay.
Interesting points:
  • Values as simple words (not express to much). Better to have phrases that defines the limits or the default behaviour
  • Exercises for definition
  • At Magento, each team have his values and they will create a global values proposition in a global retrospective.
  • As interesting exercise they will try to define the values trying to answer to the question “If the company/team/office is a person, what kind of person would be? young, expert, humble….
  • Use the values as a reference in any meeting/discussion
  • The Atlassian Values seems to be a very good example… As Guillermo Montoya comment seems that they really use this values.
  • Sometimes the values can be used as limits to all the employees know the constraints or the lines that the company shouldn’t cross.
  • To define this kind of constraints sometimes is more easy to define What company we don’t want to be or define which lines we wouldn’t cross.

Final conclusions and Notes

  • As always I come back from the AOS full of energy and eager to help, improve and change
  • I like a lot the Open Space format. For me is pure "agile" format.
  • As usual the number of technical sessions was low. I think we can improve this. It is very important the cultural and management part of agile, but there are too few agile developers available so any improvement of this situation is fundamental. Anyway, whatever happens is the only thing that could have :)

I have an special thanks to the organization and to agiletorrezno for making this conference a pleasure for going with the family.


Other references and Notes


The next AOS (2017) will be organized by agiletorrezno at Segovia.

Sunday, July 10, 2016

Book Review: The Nature of Software Development




The Nature of Software Development

Keep It Simple, Make It Valuable, Build It Piece by Piece

by Ron Jeffries

I recently finished this book and it has become one of my favorite technical books.

If you already feel comfortable developing software in iterations and with high quality, this book might not change radically your way of think, but sure that it can clarify many things and allows you to understand the forces and principles behind software development.

If you still feel lost in this profession, I think that this book can help you to take a giant leap forward in your career.

Even the subtitle is pure wisdom  “Keep It Simple, Make It Valuable, Build It Piece by Piece”

A must for any software developer.

Tuesday, July 05, 2016

Pamplona Software Craftmanship 2016

17, 18th June
Official site: http://pamplonaswcraft.com/
Twitter: https://twitter.com/pamplonaswcraft
Twitter official hastag: https://twitter.com/hashtag/scpna?src=hash



The event was organized basically by three guys (#amazing) from https://twitter.com/540info http://540deg.com/.
It was a mix of Open Space and Talks.

Sessions

What a mess! Alfredo Casado

Examples about rewrites of systems that as usually gone bad… is very strange that this kind of things are good idea…
The most important thing is to help the team to evolve, the evolution of the code is a consequence.
There is a paper from Eric Evans (DDD) about how to refactor the system when the evil is still under control. He explain some interesting patterns from this paper. DDD Bubble context and DDD Autonomous Bubble. With some details this patterns are strategies to make a “parallel change” but at the systems level.
Another possibility to make evolutionary architectures are systems optimized for deleting the code (as expressed by Greg Young at The art of destroying software (great talk by the way)).
Ricardo Borillo talk about the use of scientist at flywire http://engineering.flywire.com/blog/how-we-use-scientist to make parallel changes for algorithms.

Leaving the monolith, Event Sourcing powered Javier Ferrer

He described how they develop a new version for Lets Go chat as a parallel change using Akka and event sourcing in a AWS infrastructure (using SQS and SNS for messaging).
He gave us some references for event sourcing:
The implementation is a good example of SNS+SQS tipical use… We were talking about the events persistence. They are only storing the messages in S3 but they only use this messages for recovery.

DDD Carlos Buenos Vinos

This was a very introductory talk, so I used my two feets :)
Some of his talks can be viewed at his youtube channel https://www.youtube.com/channel/UCPOAykv_UgFa79_mub4Orbw

CĂłmo inyectar pasiĂłn en un equipo

This was a open discussion about the subject.
Some interesting ideas:
  • Book club 
  • Code review using Mob programming format 

Software Economics Carlos Buenos Vinos

This session collapse in a discussion about how to measure economic impact of some of the classical XP practices.
He recommend Martin Fowler @ OOP2014 "Workflows of Refactoring" (of course this is a great talk)
You can see the complete version of this talk at https://www.youtube.com/watch?v=31QIVxcTOvg

Errores que he cometido. Carlos Ble

As usually, Carlos is a inspiring person who talk with humility and very transparent. The talk was very inspiring.
Lately the effort to be better professional is leading himself to be better person (can you be a good professional without being a good person?)
A workplace is a good place to be better person, we should try to align ourselves as person and as a professional and detect any kind of conflict between this two facets.
One of the most important softskill to develop is empathy.
Is very important the Non Violent Communication (by default we are judging other people all the time, even unconsciously. We should learn how to empathize with other people and always use a Non Violent Communication (no judgement, only facts, not aggressive behaviors).
When you should interact or express your ideas not in your mother language, you can prepare notes or even read part of the ideas…
The best thing to change anything in other people is to change it in ourselves. Be the change that you wish to see in the world.
Is not a good idea to “carry” the responsibility of all the things when this is a shared task, we should share the responsibility and look the problem from lot of points of view.
Is very important the focus/attention on the details. For example in development, there are some small details that change completely the productivity (IDE shortcuts, tools, pomodoros, naming…).
As a result I will give another opportunity to PyCharm and the refactor tool that provides ;)

Interesting references:

Task based UI / Event Sourcing Ricardo Borillo

Ricardo explained the architecture that they are using in the fronted and all the frameworks and libraries that inspire this solution. The objective is to create a "task based" UI with an unidirectional flow of the information. They use libraries instead of frameworks, because They don't want to be hijacked by the frameworks (as they prefer to use agile practices and follow YAGNI, SIMPLE design…)

He explained how work react and flux and some other “hipster” frontend stuff like elm, om, etc…

It was interesting that they only have one backend endpoint (using http or even websocket) for process all the commands send by the frontend. These commands can be write commands (as in CQRS) or read commands to query some information. This allow them to implement each command very independent and easy to test and avoid all the overhead related to expose all the entities as rest endpoint (as if all the planet was a CRUD system :) )

The classical rest approach force the client to make tons of requests and to include lot of logic to aggregate/relate and navigation. In my opinion all this rest approach is a bad decision, because any interesting system never is a simple CRUD.




They made this interesting practices:
  • They include the commands and functionality of the command as DoD of the their user stories 
  • They create acceptance tests for each command 

How to improve pairing rubocoptero batu

The outcome of this session is this interesting document that they and other community members are still improving
Pairing Guidelines

Community of Needs vs Community of solutions. Antonio de la Torre

Very interesting talk/discussion about two different kind of person and community and how they map in the Cynefin Framework
For me this was one of the most interesting/inspiring talk of the event. The problem is that it is only the initial point for further investigation and learning (and very difficult to transmit without the conversation).
Madriagil 2016 06 13 PresentaciĂłn Talk Needs vs Solutions


References:

Show me the code Modesto San Juan

Interesting discussion about the code for the RPG Kata generated in a previous session. Cesar showed us his tests and the code to obtain feedback (BTW very clean tests).
The discussion derives towards Properties based testing. In this case this approach for the testing improve the readability of the tests or even the design.
Another interesting example was Modesto explaining how in this case a Reactive Approach allow a better evolution of the design.
You can test from the event consuming entry point and maintain lot of the tests even if the game rules change.
For this reactive stuff you can use specific libraries or simple design as objects that consume event in one thread from a queue (is familiar, isn't it?).

References (adapted for python):
scpna3.jpg


Final notes and other references or interesting stuff

As usual in this kind of events the best things are:
  • The networking. All the conference is design for generating a good networking environment 
  • There were lot of great conversations and corridor discussions.
  • The format is great and explain/practice how a Complex system can be perfectly managed using few small rules and tons of collaboration. (Is real agility in practice). 
  • We made a retrospective each day and all the decision/improvement identified in this retrospective were fixed for the next day. 

Other random links that can be interesting:

Updated

Manuel Rivero pointed me that property based testing and mutation testing are two completely different beasts... so I remove the references to mutation testing from the Show me the code session notes, because in fact all the conversation was about property based testing. Thank you Manu.
More references:


Ruben Egiluz send me lot of typos and improvements for my English :-)   Thanks a lot Ruben.