Introduction
Christophe M:
Devoxx FR in Paris was my very first experience of this kind, despite my 17 years of experience as a developer đ . I am very grateful to my company for this opportunity as it showed me how valuable conferences are. In my previous companies, I was constantly hearing it was such a waste of time to attend conferences in general. And unconsciously, I probably had a negative influence đ
So I went there like someone seeing ocean for the first time: how can it look like ? đ€
Lucas R:
That was my first time at Devoxx. It was even the first time I was attending conferences on software development.
I already watched Devoxx videos on Youtube on multiple topics but I never made up my mind to attend it. QIMA gave me the opportunity to participate into the 2022 edition and I really thank them for that.
I am gonna share my thougths on Devoxx as a developer with 6 years of experience of experience doing frontend and backend stuff is uncountable đ đ„ đ
Spoiler : it is well worth it !
DAY 1
Christophe M:
The first day in the morning was really intense because of course, we need to discover the place, register, go to some stands, etc⊠and the first presentation started relatively early (9:30 AM), and was very dense. It looked like they wanted to take advantage of our rested brains ! Thankfully, I had a paper notebook to take some notes, because there were no plugs in my room (some had). I found out later there were plainty of these (paper notebooks) on the stands đ
Then it was lunch time. Very crowdy place to get your sandwich but it went quite fast actually.
At the end of the day, I was very happy with the topics I had chosen. I advice you to mix tough/serious topics with lighter ones: it prevents to finish the day with a big headhache!
At this point, I was ready to pick a beer at the closest bar, and chat with other devoxx folks ! đ» đ
Talk | Review | Feeling |
---|---|---|
RemÚdes aux oomkill, warm-ups, et lenteurs pour des conteneurs JVM | It was brilliant, but very dense as well. It was mostly about different technique to fine tune a JVM: even if the Heap usage looks totally fine, most important is RSS (Resident Set Size) which is all the memory the JVM uses under the hood for GC, classes, JIT compiler, ⊠It was really useful for Java developers.
|
âââ
|
Kafka: carte des piĂšges Ă lâusage des dĂ©veloppeurs et des ops | It was probably interesting for experienced Kafka users, unfortunately Iâm not one (yet ? đ), so I did not get all the tips and tricks. It was also 50% for devs, 50% for purely techops. It was not the most interesting talk for sure in retrospective.
|
â
|
Ajouter de A Ă Z une barre de recherche dans son application | The presentation was ârefreshfulâ, unconventional but nicely presented, very concrete use cases, I liked it very much â€ïž
|
âââ
|
Type algĂ©brique de donnĂ©es en Java 17 | Short talk (30 min) which was mostly about sealed classes. It was totally unconventional presentation: the presenter was really funny ! And I finally got the point of sealed classes ! đ
|
ââ
|
La sĂ©curitĂ© avec les headers HTTP : Tour dâhorizon des attaques et dĂ©fenses possibles | It was more serious because of the topic, but nicely presented though ! Real use cases on how to hack a web site.
|
ââ
|
Lucas R :
The first day was intense (but very rewarding) since the talks started earlier than the other days.
It was a pleasure to discover multiple stands of the well known tech companies such as Docker or Elastic Search.
Everything is made to make people feel comfortable. Stands are beautiful, you can ask for a coffee and there are even pastries.
Talks began at 9:30 PM and so I joined my first Devoxx meeting armed with my tablet and its stylus đïž
Talk | Review | Feeling |
---|---|---|
Ansible Ultimate Edition | Despite I am not used to Ansible and the techops world in general, the talk was very well presented and the explanations were very clear.
Ansible is a tool made for provisioning and configuring automation. One of its greatest strengths is that it is fully extensible which can be mixed with others to get the best synergies đ
It was at this moment I figured : âThese people are not only solid techops or devs, they definitly have sense of pedagogy and talking⊠and Ansible seems to be a very powerful toolâ đđȘ
|
âââ
|
Architecturoplastie hexagonale dâun backend Node.js : OpĂ©ration Ă code ouvert | Purpose of this one was to conduct a surgery on a Node .js backend full of code smell to get it healthy using a test driven refactoring to reach a hexagonal architecture.
I am using a medical lexical field because they were litteraly disguised as doctors. That was funny đ
It was amazing ! I learned a lot on this kind of architecture (That I was very interested in) and on how to refactor in a secure way.
|
âââ
|
Ajouter de A Ă Z une barre de recherche dans son application | This talk was about to show the power of computer vision along with an the Elasticsearch database and Google Cloud services.
Demo was simply impressive. They were able to filter on a list of images using text search terms. This is the future đ
|
âââ
|
Type algĂ©brique de donnĂ©es en Java 17 | Special mention to the speaker who had a lot of humour. đ
Concerning the presentation itself, it was really interesting to see how we can base our software design on mathematical concepts as algebraic data type and its operations.
Behind this swearword there are simple mathematical concepts that can be useful while building state management transitions.
Used with Java 17 sealed interfaces he showed how to securely handle transitions by letting the compiler and the algebraic concepts behind preventing from entering forbidden state.
It was short and well brought.
|
âââ
|
R2DBC = R2D2 + JDBC (enfin presque...) | We could think it was a talk on Star Wars or such topics⊠It was not đ
R2DBC is a project based on the Reactive Stream API and in this talk we focused on its Spring Data implementation alongwith JDBC.
It can also be used with Spring Data JPA but it does not already behave well with associations so it is not recommanded to go with that solution if you plan to use JPA stuffs.
Moreover Spring Data R2DBC is not yet managed by several tools including Liquibase for database migration.
It was interesting to see how we can think âreactiveâ when retrieve data from database.
But I think the tool is not yet enough mature to be used in a professionnal project.
|
ââ
|
DAY 2
Christophe M:
We were in the starting block for the second day, but it seems that devoxx folks are nice at partying đ The second day did not really start before 10â15 AM đ So as an advice: come at the Devoxx the day before because it starts early, and you canpartynetwork đŒ a lot⊠donât worry you can sleep late đ But in the end, we took this opportunity to visit the stands, and had direct answer to our philosophical questions, like:
- âWe have some performance issues with đ€« â âYes it requires at least 32 Gb, 4 cpu. But we can provide a free infra for developers and CI environment !â
- âWe want to use đ€« for API testingâ âIt is not aimed for that at the moment but we plan itâ
- âŠ
And of course, we took many goodies đ
This day, I didnât choose the right topic at the end of the day, so my mood wasnât great, but thankfully there was a great buffet waiting for us, with food, beer, wine †Everybody is there to meet and talk to people from other companies. The networking spirit condensate is HERE ! đ You learn how other companies think, deal with problems, it is very inspiring !
Talk | Review | Feeling |
---|---|---|
JOOQ, joy of SQL | My opinion might be a bit biased, because I am a fan of JOOq, but I cannot imagine that you attend this meeting without adopting JOOq right away đ The context was so nicely presented, and smoothly goes more and more into details. I want to present this to the rest of the team, but I donât know how I can do any better⊠damned đ
|
âââ
|
D'un hack au datamesh, l'Ă©volution du data engineering chez Leboncoin | Interesting experience of the information system transformation at âleboncoinâ. It started with very basic scripts to aggregate data, until a datamesh. There were many many steps in this transformation. It was interesting from that point of view, but very data analyst oriented, so I couldnât get every point unfortunately. I was just a bit frustrated because I was expecting to know what was datamesh exactly, but actually the presentation was more about the transformation than the result itself.
|
ââ
|
Major migrations made easy | Short presentation on a tool that helps to deal with code migration (OpenRewrite). You can either use existing migration, or write it by yourself easily. It is based on AST so this tool can be actually very powerful: it is not a simple regexp replacement, but a semantic replacement.
Example: we can define a migration to replace any call to a method âinvokeâ, with two arguments, with given types.
|
ââ
|
What's cooking in Maven? | Presentation of the upcoming features in Maven. Maven wrapper, Maven Daemon, and build parallelization (Reactor). The presentation was nice (with demos) but technically speaking, it really gave the impression that Maven tried to catch up Gradle features but it is already too late. I wasnât very impressed by the demo itself, but it really comforted me that âMavenâ is a legacy tool đ
|
ââ
|
Architecture hexagonale par la pratique avec Spring (Lab) |
I was expecting this lab with impatience ! I didnât know anything about hexagonal architecture (btw this architecture was trendy at the Devoxx).
The lab was ok, but I feel frustrated for several reasons:
|
â
|
REX: TDD avec TestContainers | Disappointment: not better than the Getting Started đ Donât know what he thinked about the technology⊠But at least that had the advantage to tell myself: why wouldnât I present something in the end đ Yes, there are good and less good presentations. But if you have something you want to present, you can ! Just believe in your topic !
|
|
Lucas R :
Since the talks were not starting before 10.15 AM, we started this second day at Devoxx by moving from stands to standsgathering all possible goodies like T-Shirts and stickershmm⊠having exciting and constructive conversations with Devoxx folks and partners. Among them we can list Docker, Elasticsearch, VMWare (the people behind Spring framework) and so many others. đ€©
Then after a dozen of coffees conferences started đ„ł
Talk | Review | Feeling |
---|---|---|
Et si les micro-services n'avaient rien Ă voir avec la technique ? | It was not about technical aspects of microservices.
The main idea was to highlight the importance of human organizations and communications systems in the emergence of systems technical designs.
Microservices are not only one answer to technical issues or needs but before all it is a projection of human systems.
It reminded me my philosophical lesson at college. I donât know if it is a good or a bad thing đ
|
ââ
|
Model-Driven Design | The Model Driven Design (MDD) is closely related to Domain Driven Design since it describes a set of methods to model properly the Domain and to have code that reflects the Domain reality.
The presentation first described important DDD concepts as the bounded context and the ubiquitous language.
Then it explained various methods and workshops used in MDD to bring out the domain and to refine it to have a clean and well defined domain model.
It was really interesting but a little dense for people like me that nearly never practised MDD đ
But definitely I want to study this more !
|
âââ
|
Rendu 3D, la grande illusion expliquĂ©e | I am always interested in 3D and applied mathematics in computer science (even if I would need a strong math upgrade đ).
It was short but pleasant. The talk made an overview of how 3D environments are built using Vertex, referentials and several rendering concepts.
|
ââ
|
What's cooking in Maven? | The guy was really funny but I had the feeling that it didnât deserve to have a talk for it since it was essentially announcements on new and upcoming features on Maven (that already exist in Gradle)
|
â
|
Architecture hexagonale par la pratique avec Spring | This was my first Hands-on Lab at Devoxx ! Hexagonal and clean architectures are concepts that I am very very interested in.
Keeping the domain and the business logic isolated from the frameworks is a wonderful idea.
It is often claimed that its benefit is the ability to change database at minimum cost but letâs be honest it will nearly never happened.
But this is not that possibility that makes me attracted to such architectures. To me the most valuable advantages are :
- Isolated business logic is easier to test (we focus on business logic and donât have to face tech issues while writing tests)
- Contracts between domain application and Web infrastructure / Persistence API tend to be well defined and clear (It is also easier to mock and we can for example use InMemory mocks for repositories if we want to have fast acceptance tests)
- Logic / responsibility is better distributed (no more framework related tweaks in business logic)
Oh I forgot to talk about the workshop !
I really appreciated it despite the fact that it could have been more straightforward : we were following some exercices to implements the hexagonal architecture step by step. But I found that we spent more time on coding than really building architecture.
But that said it was well explained so I definitely understood their way of building hexagonal architecture. If I was not a huge fan of these architecture approach I would have given a ââ
|
âââ
|
REX: TDD avec TestContainers | https://www.testcontainers.org/quickstart/junit_5_quickstart/ â A little bit disappointed by this one. He showed a âGet startedâ like test and said it works well. End
|
â
|
At the end of the day there was a Devoxx party organized. We didnât know about it so it was a very pleasant surprise. On top of that beer was unlimited and free ! In other words I donât remember anything else ⊠I am joking. There was some dishes from Nantes. It is a city of north western France where they eat weird things like âandouilleâ (but I really like it ^^) and they replace water with cider. đ
We had a very interesting conversation with Sonar Cloud folks on how important and enriching events like Devoxx are. On the technical and human point of view.
It was awesome đ
DAY3
Christophe M:
Already the last day: it went so fast in the end ! As on thursday, serious things didnât start before 10â15AM. Letâs carefully choose the last topics !
Talk | Review | Feeling |
---|---|---|
Kafka Streams @ Carrefour | I had the feeling that Big Data was at the heart of the conference. And Big Data often comes with Apache Kafka. Kafka Stream is a layer above Kafka to make it easier to aggregate messages. It looked much more âsexyâ than the good old Kafka đ
|
ââ
|
Notre cerveau est "null"! | This talk was about main cognitive biases. This is not about preventing them, but more about being conscious about them, and how to handle them. I love the monkey tale, or how to be âdigeratedâ by legacy code đ
|
ââ
|
Tests Cucumber: légendes et réalité | Experience feedback about Cucumber usage. Seems that tests can be written very quickly when the DSL is properly defined. It is very nice for a proper TDD approach: first we write tests, and then we write the code ! But according to the speaker it is not suitable for unit tests, and integration tests, but more functional tests.
|
â
|
Le secret des illoominaties | This was a clear and very detailed explanation of the Loom project introduced as an experimental feature in Java 18. I couldnât expect more on the theoretical presentation, however regarding the implementation it was very RedHat/Quarkus oriented. That was my only regret, but apart from that it was awesome !
|
ââ
|
Mob programming | This was an inspiring presentation about the Mob Programming in âOuest Franceâ, a famous french newspaper. It was a clear retrospective on several years experimenting Mob Programming. Really worth it!
|
âââ
|
Ce que les développeurs doivent savoir sur les index | Very technical but awesome presentation about DB indices. I finally understood how it works under the hood in modern DB engines. I saw that like black magic This allows to carefully choose the best type of index. This should be mandatory to every backend developer !
|
âââ
|
Nouveau client Java pour Elasticsearch | It was really interesting to understand the motivation for the new Elasticsearch client. At QIMA we are still using the old one, and it was unclear why it is marked as deprecated.
It is very inspiring for designing APIs!
|
âââ
|
Lucas R :
Friday was the third and last day at Devoxx 2022. As for the second day talks started quite late at 10:15 am. After we shared a coffee traveling from stand to stand the talks began !
Talk | Review | Feeling |
---|---|---|
Kafka Streams @ Carrefour : du big data Ă la vitesse de l'Ă©clair | Kafka Streams seems powerful to manage complex real-time distributed applications and state transformations.
That said the tool seems quite heavy and complex so before building an application with it I think we should be sure it is perfectly suited for the needs.
|
ââ
|
à la découverte des Docker Dev Environments | Docker dev environments are providing an easy way to setup and share multiple working environments between developers of one project.
The key concepts are containers (no kidding !), ease of use, isolation (between environments) and sharing.
The demo was interesting. They explained how to create a simple docker dev environments with basic dependencies and how to share it with a coworker so he was able to set up a dev environment in a few minutes.
However, it seems that to make it work, everybody in the project should stick to the dev environment. So it implies a global organizational decision.
Moreover the compatibility with visual studio code is well managed but I wonder how it behaves for people using other IDEâs.
|
ââ
|
Tests Cucumber: légendes et réalité | It was short feedback of a concrete use of Cucumber inside a project.
I was hyped by this presentation since we are using Cucumber in QIMAone.
I find their analysis very relevant. According to what they experienced, Cucumber tests are best suited for testing a well defined domain model. In that case and with a well defined DSL, it can save time by reusing steps.
They said it was not suited for integration and unit testing and I tend to agree with that point of view. Writing Cucumber steps comes with a cost and keeping steps business oriented makes them more easy to reuse and make them profitable.
To me Cucumber is best suited when having a well defined and isolated domain like in hexagonal architectures.
|
âââ
|
Rendez vos interfaces fiables en faisant aimer les tests Ă votre Ă©quipe ! | Cucumber is everywhere !
In this presentation it was even in frontend UI tests !
They explained their testing policy.
The main idea behind is that a test should before all verify something that is valuable to the end user.
Tests are often too much focused on implementation and technical details.
These tests are not always ensuring that the feature works as intended and are likely to break when little implementation details change (not business rules).
Thatâs why they also define UI, user-oriented, robust, long lived and reusable integration tests.
These integration tests are built using Cucumber and Cypress.
To me Cucumber might be too heavy for UI testing but since their tests are highly focused on features and user experience it could have some advantages to reuse cucumber steps.
At some point their UI integration tests were close to be acceptance tests on the frontend side.
I really like their philosophy on what is a test and why do every project absolutely needs robust and reliable over time tests.
And remember that testing implementation details is bad (most of the time).
|
âââ
|
Mob programming, la véritable approche du développement en équipe | I had a lot of misconceptions about mob programming and the fact that it's a waste of time.
This talk changed my point of view.
They presented the mob programming experience they are experiencing (for some years now) in Ouest France entreprise, in west of France.
They shared the things that went well, that went bad and the things to avoid or to ensure before starting a mob programming session.
And according to them, mob programming organized and done well brings a lot to a team.
It helps to :
handle complex problems
do some team building
share best practices between team members (especially newcomers)
Apart from these advantages, they listed a lot of traps and bad practices that can completely wipe out all benefits of that practice.
A common trap is to deviate from the mob programmingâs goal by going into refactors or unrelated modifications.
Mob programming must have a time window and must lead to something that is working.
It was cool and refreshing đ
|
ââ
|
Ce que les développeurs doivent savoir sur les index | Every developer know what is an index no ?
⊠I thought I knew !
This talk was so well explained and so rewarding !
He explained in depth how an index works (at least the standard and most used indexesâ algorithms).
And well I must confess that I did not really know what is behind this concept exactly.
The presentation was very clear and with a lot of examples and infographics.
And after understanding the mechanisms behind it seems so important to know them !
|
âââ
|
400 endpoints d'API et 2000 types : genĂšse et utilisation du nouveau client Java pour Elasticsearch | I am not very comfortable with Elasticsearch since I have nearly not worked with it so far.
But it was a nice presentation on the new API and without being familiar with the existing one I felt that it was a big improvment in the way we communicate with Elastic đ
Unfortunatly I had to leave before the end to take my train but it was definitely worth attending đ
|
ââ
|
CONCLUSION
Christophe M:
At the time of the conference, we are clearly not productive: this is the argument used by so many managers I guess (fortunately not at QIMA!). But it is a great opportunity to âtake the head off the handlebarsâ: stop for a moment and think, get inspired, learn trends, buzz words, good practices and exchange experiences.
Here is the questions I ended up with at the end of the conference:
- Is it better to spend 3 days at the Devoxx to know what should be avoided in mob programming, or to experiment mob programming during months (also because mob programming cost is multiplied by the amount of people attending)
- Is it better to stick with a technology, or switch to a more suited one ?
- How do profile my application to prevent it from being killed ?
- Which DB index should I create ?
- âŠ
I donât even count all the inspiration I got, getting up to speed with the latest technologies, networking, and so.
It was 100% benefit for me, and I strongly encourage people to attend this kind of event ! đ
Lucas R :
To me it is very important to take a step back from what we are doing.
Computer science is evolving so quickly, people are constantly improving and challenging existing methods and tools.
This is what makes the job of software developer so fun, rewarding and attractive.
Devoxx is a fantastic place to help people to share and grow together.
I strongly recommend to attend such an event. You will go back home with a lot of knowledge, some new perspectives, mindsets and topics to dig. Of course you will also bring back good souvenirs. đ