The Craft conference started for me a week earlier than the actual conference, thanks to Avatao Craft Security Challenge. At the Avatao page, you can learn how to build secure applications, and most importantly, you can get your hands dirty. Craft Security Challenge consists of two rounds and each round has 5 tasks. You can learn about Docker security, Race condition vulnerabilities, mutation testing, you can even try Rust language and more. To my surprise, only few people joined the challenge. It is still available and you can try it, it's great fun!
From the available workshops, I chose Designing Microservices by Sam Newman, author of Building Microservices book from the publisher O'Reilly. The workshop took place in the beautiful building of Prezi company in the heart of Budapest. The audience was divided mostly into two groups, based on the level of experience. Participants of the workshop were coming from various European countries. Sam was trying to go through all aspects of building microservices. On the one hand, it was great, but on the other hand it didn't allow us to go deeper and that was a disappointment for me. However, it helped me to realize what the challenges of microservices are. We are already facing some of them in our company, even though we don't do microservices. And there doesn't exist one right solution for these challenges.
The most important message of this workshop for me was: If you want to start with microservices, your deployment process must be ready for it. You should have a good reason to go for microservices and don't forget about this goal during implementation. The microservices are not a good solution to every problem.
It’s hard to pick some highlights of this day, because almost every presentation I attended was great. I liked the presentation about AWS Lambda, it was great to see practical examples of their usage. Dan North had a good point in his presentation Decisions Decisions that each decision has its pros and cons. And we have to consider and evaluate them based on what is best for us.
Presentations on Microservices and the Macro Organization: The People Impact as well as Deployment Techniques with Microservices were great too and I recommend watching them on video.
Mike Amundsen’s talk on Twelve Patterns for Hypermedia Microservices has really resonated with me. Although people can find this presentation boring (Attila and Michal can confirm :-)), for me as a fan of hypermedia it was really valuable. If you have interest in machine learning and you didn't hear about Tensorflow, watch Tensorflow for Janitors at Craft video channel. Tensorflow is open-source software library for machine intelligence and it looks really promising. And the presenter looks like Super Mario. The last presentation of the day was Fun With Dead Languages and that was really funny. Can you imagine programming in Latin?
I loved the presentation by Katherine Kirk and her eastern philosophy approach to our everyday problems. Even though she didn’t give us an answer how to escape from the cycle of craving-clinging, it was nice to hear that being caught in this cycle is a common problem.
Software (r)Evolution: A Crystal Ball to Prioritize Technical Debt presentation was so cool that I bought Adam’s book, Source code as a crime scene :).
The presentation that I would like to emphasize is Debugging Accessibility by Sally Shepard. This presentation was a little bit overlooked, because accessibility of our applications is overlooked in general. Sally thinks that we shouldn’t consider an application as finished, if the application doesn’t fulfill accessibility requirements. It takes extra money and time to invest to development, but we can gain bigger audience as we thought. For example, Apple is giving better ratings to accessible applications.
The last presentation of the second day was Better engineering via better discourse by Theo Schlossnagle and if I should pick only one presentation from the whole conference, I would pick this one. I consider good communication skills crucial in our business, especially because IT people are mostly introverts and we sometimes found it hard to communicate with each other.
This was the first time I went to the Craft conference and I was pleasantly surprised with the organization of the conference. They support diversity and they sell cheaper tickets for pairs of male and female colleagues. Well, it was really nice to see so many IT women in one place :). Also, if you are vegan or have a celiac disease (or other food intolerance), don’t be afraid to attend this conference, you will be taken care of.
This year, we also participated on workshops. These are held usually by one of the speakers, trying to discover a selected topic more in depth. After spending some time going through the available options, the choice for me was quite straightforward: Resilient Software Design in theory and & practice. It was held by Uwe Friedrichsen.
Since I've just finished an excellent book about Site Reliability Engineering from Google, I thought this workshop could give me a good complementary/additional or different perspective loosely related to this topic. And it was really worth it.
The whole event took about 8 hours, with breaks and great food. It could be divided into a theoretical part and a more practical part.
Within the practical part, we were divided into 3 groups, where all of us were designing the same service oriented application, where the difference was “only” in architecture. And mainly in the communication paradigm, thus:
Think of designing a microservice architecture, where most of the back-end services are already there. We just needed to fill in the gaps based on the communication paradigm. As a next step, we had to apply the resiliency patterns we learned on the theoretical part of the workshop, and discuss/present the results to the others. The practical part had a huge benefit in terms of understanding specific examples and how other developers think regarding the design of such systems.
In the theoretical part, we dived into the design patterns and their taxonomy related to resiliency and how to think within these terms. This gave us a very solid overview of available options and their usage. We learned how to think about the usage of these patterns depending on architecture, but also how it is related to the business i.e. how to make choices based on the business impact. Going through the patterns event subset of patterns is out of the scope of this blog, but here is a nice summary of patterns:
(author: Uwe Friedrichsen)
Knowing these principles and patterns is very important. However, resilient software design is not just about applying these. It’s also about functional design and much more. The corresponding presentation can be found here.
So, don’t forget the famous quote from Werner Vogels: “Everything fails, all the time” and study resilient software design.
Since the Craft conference is about software craftsmanship, some of the talks focus on the soft skills rather than on new technologies. This year several speakers talked about effective teams: how an effective team looks like, how to build an effective team, but also how to help the team members grow, how to give and receive proper feedback and so on.
The talk Building Great Teams: Culture and Core Protocols by Richard Kasperowski started with how does it feel to be in a great team: there were words like “Trust”, “Respect”, “Achievement”, “Fun”, “Balance”, “Complementary”, “Safety”, “Happiness” and more. What is nice besides feeling super-nice to be in such a team, is the fact that good teams also tend to perform better.
Over a year ago, Google shared the results of a multi-year study on the effectiveness of teams in Google, trying to find out what it is that can make a team perform well. The conclusion was, that who is on the team matters less than how the team works together. In order of importance, these are the most important factors:
The outcome of the study was that these are the factors that correlate the most with the team effectiveness, but that does not necessarily imply causality. With the assumption that by making sure that the most important factors are met, any team can be more effective, Richard explained the idea of Core Protocols, which can be seen as a “software for your mind”. If every team member follows the protocols, it should help the team to build up trust and feeling of safety inside the team. The individual “protocols” seem to be a bit too artificial to me, nevertheless the core principles on which they are built seem valid. Even if you won’t choose to implement the core protocols, at least have a hard look on the Core Commitments.
An interesting thing on Craft is that sometimes there are talks touching the same subject from different angles, sometimes even seemingly in direct conflict. The title of the opening keynote of the second conference day was The danger of team safety, presented by Katherine Kirk. She explained how craving for psychological safety even with the best intentions does not always yield the expected results. Katherine is working as an agile coach, lately tasked a lot with helping teams to achieve psychological safety, trying to resolve all small things to threaten that.
She found out that in the teams that she worked with there were often people who understand the concept of “psychological safety” in a way that suits them best, using the consultant to settle interpersonal gripes or grant random wishes and that often the person that is the biggest “drama queen” gets the most attention. I understood that it’s mostly related to how the relationship between the team and the consultant is set up, a vicious cycle that Katherine called “dark collaboration” because of the skewed motivations.
Her main message regarding psychological safety as I understood it was basically that developers are tough enough to endure in harsh conditions, problem solving is basically their super-power. Therefore, trying to shield them from every possible harm or outside intervention is not only futile, but also unnecessary. One has to know himself, his inner desires, motivations and weak spots first, a group of mature adults should be able to create a safe zone within the team and protect themselves from the harsh world out there on their own.
Besides the thoughts on the psychological safety, Katherine also talked about the Dark Triad (three not that nice psychological traits: narcissism, Machiavellianism, and psychopathy) and in fact all of us can start showing such behavior if we are under a lot of stress. In short, if you think that your colleague or boss is a psychopath, try relieving him from some of the stress and you might be rewarded by better work relations :).
All in all, we again enjoyed the Craft conference very much. Looking back on the three Craft conferences we attended, each year in the wide variety of topics, there were usually few bigger themes that were presented in several sessions. In the previous years, I remember noSql databases, functional programming and microservices, this year the trending topics seemed to be microservices (yay again!) and serverless programming, polyglot programming and talks revolving about how to make teams more effective. One of the most repeated statements would probably be that there are no silver bullets or best practices that make sense always; every decision brings some trade-offs which you should be aware of.
Do you see yourself working with us? Check out our vacancies. Is your ideal vacancy not in the list? Please send an open application. We are interested in new talents, both young and experienced.Join us