Q&A with CTO, John De Goes


If you know about Functional Programming then you will know of John De Goes, he speaks at many conferences, contributes a lot to the community and is a great person to learn from. Therefore we decided to delve into his mind and ask him a few questions about his journey with Functional Programming and any advice he would give. It's an amazing insight and we hope you enjoy reading!

Can you tell us a bit about you, where did you grow up? What’s your background?

I grew up in the mountains of rural Montana, where my siblings and I took care of a small farm. I eventually moved to a city, where I studied mathematics, and have since lived in several different places in the USA. I still very much love the great outdoors and rural life, and currently live in Colorado, a short ten minute walk away from the foothills of the Rocky Mountains. You can spot me wearing a cowboy hat from time to time!

How did you fall in love with technology? 

When I was quite young, my father bought me an electronics kit from Radio Shack. Using transistors, a buzzer, and wires, I built my first radio, tripwire alarm, and other creations. I was amazed at what I could create with simple components, and it wasn’t long before I started studying robotics, digital logic circuits, and eventually computers. I remember many trips to the library where I would learn about the wonders of technology. To me, technology was a magical realm where the only limits were imagination—a place where the impossible became reality.

What were the first languages you started using? 

I started with BASIC on a C64 when I was 8, and although we didn’t keep the computer for very long, I could not resist the allure of programming. Programming gave me the power to create anything I imagined, a few keystrokes away. I learned C by checking out books from the library and writing my first programs on paper, and when we eventually got a PC, I continued with C++, assembly language, and many other languages since.

What made you adopt Scala as the functional language you wanted to use? How did you begin learning it?

I had been working in Java for a number of years, and had been discovering the value of functional programming (immutable data structures, pure functions). When I was hired to reboot a company’s technology, Scala seemed like a natural fit, because I could leverage the JVM ecosystem and my expertise with the JVM. I learned Scala by reading through Odersky’s book on flights while traveling back and forth between Colorado and California. 

What has been your favourite Scalable project you have worked on?

I’m grateful to have worked on some incredible Scala projects over the years, including Precog and SlamData (Quasar Analytics). But I have to say my favorite work is the work I’m currently doing as part of the Scalaz community. I’m trying to show people that functional programming isn’t just theoretical—it has real world, practical benefits that can deliver value to businesses and developers alike.

You talk at many conferences, when did you first decide you wanted to be a speaker? Was there any inspiration behind this decision?

In college, I took a class in public speaking, because I thought it could be useful to me professionally. I first spoke publicly at an agile development conference to share my approach to usability testing. Some times I speak, I do it for my company, to raise awareness of what we’re doing. But more often, especially recently, I speak to share what I’ve learned to help other developers, and inspire them to improve the way they write software.

What is your preferred topic to speak on at conferences?

By far, functional programming. Even if I speak at a Scala conference, my talk probably isn’t about Scala, it’s about functional programming. I like thought-provoking topics—I want to give people something to think about, or challenge them to think about something in a new way. I also like to educate, inspire, and entertain, no matter the topic. I’m grateful people watch my talks and I want to make sure they get something useful in return for their time.

Do you have a favourite speaker? If so, who?

I am not sure I can easily pick a favorite, but some of the recent talks I’ve enjoyed were from Bartosz Milewski (category theory), Eric Torreborre (streams), Mike Stay (PLT), and Jon Pretty (types). Every speaker brings something unique to the game, whether it’s the content, the polish, or the slides; the humor, the pedagogy, or the deep technical expertise. I try to learn something from everyone.

You own a consultancy business, what would be your favourite aspect of this?

Consultants aren’t micromanaged and they have a lot of flexibility and freedom. For the past 10 years, I’ve actually spent most of my time working for startups (not consulting), but I find consulting a nice change of pace, and even when I work for startups, the odd consulting gig gives me the flexibility to take a short break and mentor companies on functional programming, distributed computing, and other topics interesting to me.

Is there any new libraries or technologies which you were an early user of?

So many! I was an early user of Hadoop, MongoDB, LMDB, Scala, PureScript, and many others. Because I’ve worked as CTO, I’ve been able to have a real impact on some of these communities. For example, at SlamData, adopting PureScript helped make the language commercially viable, and now many companies hire PureScript developers. I’m not afraid of a new library or technology if I see the potential and can commit to making it succeed.

What advice would you give to someone looking to start a career using Scala?

Scala is a very large language and it can sometimes be confusing to developers which style of Scala to write. So I’d recommend that developers find good mentorship and good training, and beyond this, that they stick to a smaller subset of the full language, like the Scalazzi subset, which is ideal for functional programming. A lot of the complexity of Scala can be ignored because it’s not necessary to develop great software.

I also tell developers who are new to Scala not to be discouraged. There are so many helpful people in the Scala community. Many will take the time to explain anything that is confusing. You don’t have to struggle alone!