Saturday, April 15, 2017

Socrates Canaries 2017, experience and notes

The past week I attended to my second Socrates Canaries (Software Craftsmanship and Testing Conference)... This posts summary the experience (things I have learned, ideas to explore, techniques to use...). The Socrates event is an open space, so whatever happens is the only thing that could have :)


Notes from the sessions:

Under the umbrella (elixir) @gemcfadyen

Interesting and very practical presentation about how to organize and structure elixir application using the umbrella concept (http://elixir-lang.org/getting-started/mix-otp/dependencies-and-umbrella-apps.html).  You have all the advantages of the microservices and you remove some of the cons because you bundle the services together with explicit dependencies. Georgine used https://github.com/gemcfadyen/umbrella_romanNumerals as example. She also commented https://github.com/elixirkoans/elixir-koans for learning elixir.

Craft thinking @mashooq

(Book Craftsman by Richard-Sennett)
Very interesting reflections on the crafts in general and the craft in the development of software. The ideas come from the book Craftsman (Richard-Sennett) and the interpretations from Mashooq. Great insights and very interesting discussion.
Some random notes:

  • Craftsmanship. Human Impulse. The desire to do a job well for it's own sake.
  • We should always consider "How" and "Why" we make something... 
  • From "problem solving" to a combination of "problem finding + problem solving". Finding problems is also a skill to learn.
  • Motivation matters more than talent
  • We need imagination to learn. We also need fail (a very important note for mentors...)
  • Learn to apply the minimal force needed (in software we should compare this idea with the use of frameworks... ;) )

Show your architecture @borillo @eferro (myself)

Ricardo and myself proposed this session... the idea was to show several architectures/designs and to discuss about the tradeoffs and decissions that generated each architecture. We discussed three designs, one from @borillo, another one from kuba and another one from myself (@eferro).
We discussed and explain why we create this design and what was the tradeoffs... I hope that this session was interesting for someone :)

Building learning teams

A round table about how we can introduce a learning culture in a software development team or company. This are some random ideas:

  • Do food
  • Lean coffee (initially with a meta topic or about a shared interests)
  • Skill matrix
  • Know your company
  • Introducing learning time in work hours (with the possibility to extend after work hours). A good idea to this kind of learning is Lunch & Learn.
  • The company pay pluralshight or similar but remove the service is not used. You don't use it, you lost it.
  • Some reserved time: Give a tech talk, and as fallback, show a recorded talk and as a fallback a refactoring session or a mob programming session.

Personal productivity. @gardenunez

Another round table about how we can organize ourselves, as obsessive people, to be productive and not going mad in the process :)
Some tips about focus, pomodoro technique to deal with procrastination, making a list of the things that really matter, and so on...
And also some comments about not pushing to hard to ourselves... :)


Non Violent Communication Miguel Cruz

A good explanation about the how to have better relations and real connection using non violent communication. This kind of communication is a difficult skill that can be learned using the book Non Violent Communication book or going to a workshop or participating in some of the related communities (like the new created group in Barcelona).

The overall process consists in the following steps:
  1. make the observation (without judgement)
  2. express your feeling (it's difficult to separate feelings and opinions)
  3. express your needs
  4. making a request (in a concrete way). Is a request, not a demand, so it can be rejected.
The method is divided in three steps/levels:
  1. Self empathy
  2. Empathetic listening
  3. Be able to express in an empathetic way

I already read the book, but it requires practice. This skill can change deeply your relationships and life... so it is no easy, but deserves the effort :)

Serverless with AWS Lambda @mashooq (I acted as host)

This was a session hosted by me to ask Mashooq about codurance's experience using AWS Lambda in production. The session was divided in two parts, the first one was a presentation about this codurance's project and the second one was a discussion to identify if in my use case, have sense or no to consider using lambda.

Some lessons:
  • Bad choice for constant load
  • Force you to focus on business code (not in infrastructure)
  • Good base for security, scalability, performance
  • 1º understand the lowlevel stuff using aws api or/and aws cli, before using any framework or abstraction (apex, claudia.js, etc)... 
  • Prepare for runing localy from the day 0. Developing any mock/glue code needed. 
  • For web servers:
    • Latency problem to serving http request with JVM based languages. The startup/bootstrap process have a huge latency. They implement a periodic ping to avoid the stop of the containers, but this is not an elegant solution.
    • If you serve the frontend (js, html, css) from CDN, is difficult to synchronize with backend code. They need to invalidate the CDN resources and this cost money.
Serverless:
cost model - request based (pay by request)
strong infrastructure abstraction.

Another alternative for a web application using a JVM, than also have a strong infrastructure abstraction is Elastic Beanstalk

The second part of the session was a conversation about the possibility to use lambda for my use case, but for this part I will generate another post when I make the initial testing... In summary, seems that Lambda can fit our problem, but we should make the calculations about cost.

Taming the monolith  @mashooq

This session gave some ideas about how we can divide a monolith and how we should have in mind where are the vector of changes, because there is no best approach, it always depend of the nature of the change/evolution request that our system have.
Two powerful ideas:

  • Have in mind, at all levels, coupling and cohesion (for modular decomposition, to identify bounded contexts, to deine service limits, etc.)
  • Include the user journey

Some random quotes from this session:

  • "We need everybody to be architects" Mash
  • "Architecture. Design that is difficult to change" Mash

Liquid modernity @jordianguela

The goal of this session was to discuss about how this concept of "liquidity" is affecting us. This concept was coined by the philosopher  Zygmunt Bauman that talked about globalization, modernity and postmodernity, consumerism and morality.
The process was, we show different phrases from Zygmunt and we discusses the meaning and the pros and cons. And interesting session.
The concept of minimalism also appeared as one way to deal with this amount of changes  (Lifestyle Minimalism - Renouncing Your Busy Stupid Life)


Vuex + IDDD @nestorsalceda, @gualison (from the codingstones)

As I have no experience at all with front-end I only attended for the first part of the session. They described how they approach the architecture for a front end application using Vuex and the concepts of IDDD... You can see the results at:
They show the code and seems to be very simple and clean... a good stuff to research further.

PostgreSQL @juanignaciosl

A great presentation of the advances features of PostgreSQL... it seems to be the most powerfull DB... is the "Swiss army knife" of the databases... (relational, document oriented, pub/sub, with GIS extensions, rich data types...)
These are the slides of the presentation POSTGRESQL The one tool to bring to a desert island
Very instructive.

Other sessions, lightning talks and conversations:

  • Mental health
  • Different organizations (codesai) (book Reinventing Organizations)
  • How the codingstones distribute the profits (codingstones)
  • pointers in go
  • gendered language
  • carbon offset / climate change
  • Mob programming sessions
  • ...

Resource Corner



Related links:


Personal feelings and notes:

  • Somehow I improved my English so I interacted more and with more people :)
  • Old friend, new friends... I like this event... 
  • Great idea to come with the family and use the event as excuse to have family time at Canaries.
  • I returned home full of energy.
  • Great to have more developers from TheMotion attending this kind of conferences... The Socrates is  a great introduction to the Software Craftmanship community and to the unconference format. Thank you @gardenunez for coming to this event.
  • I love the open space format.



Thanks to the organizers, mainly @suuigd (Dani), @mangelviera (Miguel), the @CraftsmanshipGC community and to codesai.  
And of course to @eidrien for being the facilitator.

No comments: