Interview with Juan Manuel Serrano 👨‍🏫 - University, Functional Programming, and Type Classes

Continuing with the series of developer interviews, today we bring you the interview with Juan Manuel Serrano. Juanma currently runs a studio focused on functional programming, Habla Computing. Previously, they tried to commercialize their own programming language and he also worked as a researcher and lecturer at the university. In the first part of the interview, as usual, we reflect on the field of computer science. In this case, and given Juanma's background, we touch on topics related to education in computer science. In the second part we delve into functional programming. We see a concrete example of the application of Type Classes in Scala, a design pattern that allows us to reach the level of abstraction necessary to ensure that our interfaces isolate us from infrastructure.

Breakdown of the interview

2:40 Education in Computer Science

  • Education in computer science: The verdict is guilty.
  • Teaching is ultimately a full-time job, and updating the curriculum costs a lot.
  • There needs to be a closer relationship with the industry.
  • What does a person who hasn't deployed an application in production know about teaching Software Architecture?
  • People attending university need to demand that the content is relevant to the real world.
  • You will have to continue learning after graduation. Your degree provides you with a series of techniques and languages that will not be the end of your education.

9:05 CTO at Habla Computing

  • The company emerged to put a new programming language into practice.
  • In short, we hit a wall.
  • Commercially, it is very difficult to sell a programming language. That needs to be done through its ecosystem.
  • That first phase of the company is over. We had learned a lot about functional programming. We transformed it into a training studio for functional programming.

14:30 Type Classes in Scala

Excerpt from the talk "All roads lead to… lambda" (slides and code)

  • Traditional abstract interfaces are set up as a wall to separate your infrastructure from your business logic.
  • When using asynchronous implementations (futures), the interfaces no longer allow us to make that separation.
  • The solution proposed by functional programming that we couldn't achieve with Java is parameterized abstract interfaces (Type Classes).
  • Functional programming can be approached in two ways: Type Classes and Algebraic Data Types (ADT). There is material on ADTs, but not much on Type Classes.
  • Functional Programming in Scala: A very good book but it only focuses on the Type Classes approach for library development.
  • With "The Object-Oriented Programmer™," I don't mean to imply that "The Functional Programmer™" isn't one as well. When we program functionally in Scala with Type Classes, we are essentially programming in an object-oriented way.
  • When we implement our methods with Type Classes and monads, we are doing imperative programming. Monads are APIs for implementing imperative programs. We use different techniques to express those programs, but we are not changing paradigms.

32:50 Conclusion

  • When that student graduates and goes to a company, they must remain critical. They should push the state of the art in computer science forward.
  • Functional programming techniques are meant to solve problems, not to get lost in monads and applications.
  • We should be less complacent. Computer science is a field yet to be explored.
  • In a few years, functional programming will be a debate that makes no sense. It will all be functional programming. The game is already won.
  • Curry–Howard correspondence establishes that functional programming and logic are the same. When you program, you are proving a proposition. Who wants to program illogically?

And coming soon…

https://twitter.com/CodelyTV/status/845330007996186625

Pay according to your needs

lite (only monthly)

19 €
per month
  • Access to a subset of courses to lay the foundation for maintainable, scalable, and testable code
  • Company invoice
Popular

standard

24,92 €
Save 121
Annual payment of 299
per month
  • Full course catalog
  • Design and architecture challenges
  • Highlighted solutions videos for challenges
  • Receive job offers verified by Codely
  • Company invoice

premium

41,58 €
Save 89
Annual payment of 499
per month
  • All previous benefits
  • Early access to new courses
  • More benefits coming soon

We won’t increase the price while your subscription is active