Application Engineer Enrico Benini has had an interest in computers since childhood. He then went onto study a Bachelor and Masters Degree in Software Engineering whilst working part time as a Software Developer and his journey has now allowed him to be in his current position as an Application Engineer.
- Where did you grow up? What’s your background?
I grow up in Cesena, an Italian city placed in between Bologna and Rimini, near San Marino. I’ve been interested in Computers since my childhood, when I played DOS games on a 8086 machine. I remember it has 33hz of CPU frequency and you had to install software with several ﬂoppy discs. I feel some nostalgia of those days, that’s probably why I still prefer console application over GUI when possible. I never had doubts on my career choice since my teenage years and this made my high school and university decisions pretty easy. Then, in my high school, I started to learn the ﬁrst computer science concepts, like the object-oriented paradigm foundations, networking, databases and so on. Finally, I chose the bachelor and master Software Engineering courses at University of Bologna, where I went deeper and deeper down the rabbit hole. Speaking about my commercial experience, I worked part-time for three years as a software developer in a small company alongside my master’s degree. Afterwards, I moved to Amsterdam for six months working on the Salesforce platform, but I always wanted to do Scala and functional programming, so now here I am in London working on Scala. I keep considering myself a junior and probably always will.
- When did you ﬁrst become interested in Functional Programming?
During my master’s degree there was a course called Advanced Programming and Paradigms. There we touched brieﬂy all the programming paradigms, functional included, using Haskell as a reference for that case. Then, I continued to study it all by myself through online courses like the Coursera ones, and I’m still studying. It never ends.
- What’s your favourite functional language?
This is a tough question. I really think it depends on what you are looking for: if you want to learn it (the hard way) Haskell is the best choice, but the downside of it is that the learning curve is very high and the syntax can be often cryptical. Scala on the other ends it’s the most successful attempt to unify the OOP with FP, and right now I think is the best JVM language in my opinion. In the end, I also played a little with F# and I fell in love with the ML syntax, it’s an amazing language.
In summary, I can’t decide, and probably my tastes will change again over time.
- How do you stay up to date on all things functional and new technologies?
I watch a lot of talks and videos on YouTube, for example right now I’m on a series of videos called Functional Structures in Scala. Reading books is another way to stay up to date, and I typically prefer the ones with related exercises, so I can make my hands dirty. Twitter is another source, just following other great engineers and save somewhere all the articles to read later, on the underground for instance. Finally, I simply speak with other passionate developers in search for hints on what can be valuable to learn.
- What is your current job title?
It says Application Engineer, but I prefer Bug Spawner and Repo-Bomber Engineer.
- What would be your favourite part of the role?
Just learn and become better and better...and free coﬀee is key.
- Do you contribute to the community? If yes, how?
Unfortunately, I do not contribute to any open source project, but would be a thing I will consider as soon as I have more free time. To contribute you must consistently check the state of the project and it requires a lot of eﬀort. Right now, when I code oﬀ work, I mainly do exercises or simple little solo projects for fun, nothing really serious.
- Have you been to any conferences? What is your favourite? Or if not which one would you love to go to?
I just went to Scala Italy in 2016 and now I’m trying to organize a trip with my current team to the Cadiz Lambda World. It was an amazing experience, and I hope to be able to attend many more conferences in the future. Conferences are a full-immersion in what’s new and exciting at the time, a boost for your inspiration and a place where you can meet new friends. You can compare them to music concerts.
- Do you have a favourite speaker?
- What advice would you give to someone looking to start a career in software engineering?
I simply tell them that, to be a great software engineer, you must:
• Really enjoy problem solving
• Keep you up to date
• Continuously learn, study and experiment
• Be a good team player is key
It would not be easy at all, there will be hard times, but also a lot of satisfaction and rewards.