Hello Claudio, you’re an active member of the Elixir community. For those who don’t know you, could you tell us a bit about yourself?
Could you tell us how you became a developer and how you found yourself working on the back-end?
In reality, I studied a completely different thing: I am a computational and theoretical chemist. I joined the IT world because it was my first serious work experience. At the very beginning, it was not serious; we drew up a sort of micro company with another colleague. Later on, things went very well, so I decided to drop out of my studies in chemistry and devoted myself to the IT world. At the beginning, I was a system engineer and I started programming in C++, then, at my first serious job, there was the need to make an application for distributed work, and then I made my first web application, even though it was obviously with very particular methods, it was in PHP and it’s certainly not comparable with what can be done (it happened more or less in 2006). Later on, I became interested in web programming.
Are you currently working on any personal project?
Absolutely! I have lots of personal projects. When I start to learn a new technology or approach, I try to get my hands dirty and create an ad-hoc project that I leave “orphaned” when I’m done with exploring. Recently, I decided to create a group that meets once a week after work to all work together on our personal projects, and I must say that a very interesting project is developing from all of this. It’s something small but very very interesting, and if we can we’ll talk about it at the Facebook Developer Circle.
We can’t wait to hear more about it! Claudio, could you tell us how you keep yourself informed on all the latest tech news? Do you follow any course? Do you attend conferences?
Absolutely! Doing all these things is super important. Since Codemotion conferences or specifications began, for example, those of GrUSP when I worked in the PHP environment, or those of BEAM Italy now that the team is engaged on Elixir, I think the quality of Italian code and programmers has increased. The best thing for keeping yourself up-to-date is joining the community created within the largest conferences and attending the meetups, with monthly meetings, mailing lists etc. There’s no better way to grow and discover new things than the community. The community doesn’t take charge of anything you learn and it’s the best way to discover what to study tomorrow. There are no professors within the community and no one’s obliged to teach you; the exchange is mutual! The advice I give to everyone who is starting to develop or is entering the tech world is: the community is the most important thing!
Where did the idea of doing the talk come from?
It came from Federico Caprari. We try to overcome the fear that hovers over the concept of functional programming. It can scare people because there are actually complicated languages and the first approach with Haskell or Camel can probably put people off. Together with Federico, we are committed to start uncovering the functional approach, trying not to scare people, to simplify complicated concepts that exist, because the functional derives from the calculation. We arrive at all concepts, such as the nomadic one, in a gradual manner, when it’s necessary to make the functional usable even for those who don’t have the university background.
Who could find this functional approach useful? Who should apply it in their work, now or in the future?
The functional approach applies to any field, even if some say the opposite thing. When we are dealing with any transformation, I imagine a web service which is nothing more than the transformation of a request into a response, and every time we apply some logic and produce the output, we are talking about functions, and that’s where the functional process begins. That said, there are some fields in which the functional approach cannot only apply but also excel. I’ll give the example of the ML languages like Haskell or Apache Camel that give you the guarantee of never having runtime errors: the compiler can block any kind of error and this leads to you having a completely stable code. I also think that Elixir or Erlang, which are not pure functional languages, don’t give you the certainty that your code will not have exceptions, but do give a high degree of competitiveness, and give you the ability to distribute on multiple servers and create clusters with the very advanced virtual machines they exploit.
There are myriad other reasons why they can be “nice”! For example, you program in Erlang or Elixir with the Actor Modelling that is starting to become famous thanks to the Akka framework. Basically, we have the advantages brought by the language, the extreme readability and a model that allows you to do concurrent and distributed programming in a very simple way. If you have ever heard talk of deadlocks, you can avoid them completely with a different methodological approach to programming.
Do you think this topic should be explored further, for example through more of your talks?
I hope it’s not just Federico and me giving talks on this subject. There are also many other competent people in Rome‘s community who have been doing functional programming for a long time. What I would like to do is to bring the exponents of functional programming from Rome and the rest of Italy closer to the already existing community, so that the paradigm comes out of its long-held niche, taking advantage both of it coming back into vogue, thanks to Uncle Bob’s statements, and of the simplified approach introduced by the new frameworks.
I’d like to approach the community, which exists and currently revolves around the good practices of Object-Oriented Programming, those who know a lot of functional but have always worked alone. At this moment there’s no community linked to this language or strictly linked to programming that hasn’t had at least five or six talks on Solid, on Decent Pattern, on good practices in general. So this is the idea: I wouldn’t want to see my own talks as much as I would like to see people more prepared than me who share their knowledge with those who weren’t interested in this paradigm until now.
Last but not least, do you have any other non-computer-related passions, or you like developing in your free time as well?
I mainly use my free time to study, learn new languages, new methodologies, and new architectures. So yes: 90% of my time is dedicated to computers! But I’ve got other passions apart from computer science. I like role-playing games. I’m passionate about all board games.