It's Monday and we have another exclusive interview to make sure you have a great start to your week! This time we were very grateful that Senior Consultant at INNOQ and Lambda World Speaker, Daniel Westheide gave us the time to answer a few of our questions, check out what Daniel had to say.
Tell us about your background, what was it that sparked your interest in Software Developing?
That goes a long way back. My father used to work as a math and computer science teacher at a school, so I have been surrounded by computers and the notion that you can program them almost for as long as I can think.
When I got my first computer, an Amiga 500, I thought it would be great to be able to create a game of my own, and started to dabble with Amiga Basic. So that desire to create my own video game was probably what sparked my interest in software development.
During my time at university, I was more interested in human-computer interaction and usability engineering than actual programming.
Nevertheless, my first job after university was as a software developer doing mainly backend stuff, so that's where I ended up — and I started to enjoy it a lot, even though it was quite different from my original plans. And, of course, I still haven't actually developed my own game yet.
What was it that made you take the step into using Scala as a Functional Programming language?
Back in my very first job, we were using Java, and after reading Joshua Bloch's classic book "Effective Java", I was moving into using a more and more functional approach, encouraged by the book — favouring immutability and using pure functions where possible.
Unfortunately, back then, it was very cumbersome to do that in Java.
That was several years before Java 8 with its lambda support was on the horizon. Initially, I looked into Groovy and liked it a lot compared to Java. However, my mentor in that company was raving about Haskell and Scala all the time, so I decided to give both of them a try, though I focused on the latter, because I needed a language on the JVM.
It felt like I had finally found what I was looking for all the time in Scala, and I quickly dismissed Groovy. Back then, I definitely considered Scala to be merely a tremendously better Java, but that was fine, because it was what I was looking for at that time. I wasn't able to use Scala professionally until my next job, though.
How do you feel Scala benefits the work you do?
There are a few benefits. First of all, Scala allows me to focus on expressing what I intend to achieve instead of how to achieve it. This is a benefit of all functional languages. Moreover, algebraic data types are an everyday tool for me when it comes to representing domain models.
Since I often work in settings where the problem domain is rather complex, this is something I wouldn't want to do without any more. Also, the powerful type system together with features like implicit classes and operator notation allows me to define typesafe internal DSLs, which has been quite helpful multiple times. Finally, having the whole Java ecosystem at your fingertips while working with a functional language like Scala is not to be underrated.
Is there anything which you feel helped you learn and progress your career in terms of the community e.g. conferences, contributing to the community? Are there any resources you would recommend?
When I started using Scala, it wasn't very easy, because there were a lot of new concepts that were not explained properly in any of the books I knew, and there were also not that many online resources. What helped me a lot was contributing to open source projects that we were using in our company. Back then, I contributed to Unfiltered and Dispatch. That forced me to read and understand other people's Scala code, and of course, I also learned from the feedback I got. Nowadays, it's easier than ever to start contributing, thanks to the Scala Open Source Sprees that are often held before conferences. I would absolutely recommend going to one of these and also invite more open source maintainers to attend them.
What helped me, even more, is blogging. I wrote a whole blog series about Scala a few years ago, and nothing is better for getting a deep understanding of a subject matter than writing about it or preparing a talk about it. Having that blog also helped my career because I got more attention due to my articles. So there are two good reasons for blogging as well as for giving talks at meetups or conferences.
You are speaking at Lambda World, what made you decide you wanted to start speaking at conferences on Functional Programming?
There was never really a moment where I said, "I really want to start speaking at conferences on Functional Programming". Rather, I was nudged by co-workers to do it. First by my Norwegian co-worker, because he knew the organizers of flatMap(Oslo), and later, when I started working at INNOQ, by the person who brought me to the company, because Scala Days was coming to Berlin. In both cases, they convinced me that people knew me and I certainly had something interesting to tell. Without that nudging, I would never have thought of participating in any Call for Proposals. I was absolutely lacking the confidence for that and thought I didn't stand a chance to be accepted anyway. That's why I am very much looking forward to Jessica Rose's closing keynote on the impostor syndrome. I guess many of us have felt like impostors at one point or another in our career.
Is there any advice you would give to someone starting a career in engineering?
Try to find a good mentor and an environment that encourages learning and where people are empathetic. Don't be afraid to ask questions. Ask many of them. Your mentor may even learn something themselves from having to answering them because they have to start thinking about something they took for granted.
What do you see for Scala in the future?
In the near future, I am very much looking forward to Scala 2.13, especially to the new collections library. In the long term, Dotty looks very promising. My hope is that it will remove some quirks and some complexity and increase programmer usability. However, I think the language also needs much better tooling in order to stay competitive.
Luckily, there is already a lot of effort going on to do something about this, not only at the Scala Center, but also in the community, so I am optimistic about this.
Thanks for taking the time for us Daniel!
It was a pleasure to answer your questions.