Discover the TOP 100 BEST EMPLOYERS to work for in 2025!

The best employers are looking for the best candidates.

ING Hubs Romania ING Hubs Romania
ING Hubs Romania

ING Hubs Romania

4.19

317 reviews

ING Hubs hangouts | Taming complexity: functional approaches to software design and concurrency

24.04.2025

Engineers interested in software design and concurrency united ๐Ÿค๐Ÿปfor a new learning and networking opportunity and listened to our senior colleagues at ๐ˆ๐๐† ๐‡๐ฎ๐›๐ฌ ๐‘๐จ๐ฆ๐š๐ง๐ข๐š & ๐ˆ๐๐† ๐๐š๐ง๐ค ๐‘๐จ๐ฆ๐š๐ง๐ข๐š who shared their latest insights and learnings with the engineering community in Bucharest. 

๐Ÿ”ถ ๐„๐ซ๐ซ๐จ๐ซ๐ฌ, ๐ญ๐ก๐ž ๐Ÿ๐จ๐ซ๐ ๐จ๐ญ๐ญ๐ž๐ง ๐ฉ๐š๐ซ๐ญ ๐จ๐Ÿ ๐ฒ๐จ๐ฎ๐ซ ๐๐จ๐ฆ๐š๐ข๐ง | Gabriel Bornea, software engineer & team lead at ING Hubs Romania
Errors are usually treated as an afterthought โ€” logged, ignored, or handled inconsistently. But theyโ€™re more than just failures; errors represent important domain events that can shape how systems behave and respond to the real world.

In this talk, we will look at howโ€ฏmodeling errors explicitlyโ€ฏcan make applications moreโ€ฏpredictable, resilient, and easier to maintain. Weโ€™ll see how to useโ€ฏsum typesโ€ฏand typed errors; and how types likeโ€ฏEither<E, A>โ€ฏandโ€ฏIO<E, A>โ€ฏhelp us manage errors without relying on exceptions.

We will also cover ways toโ€ฏaccumulate multiple errors, design systems that canโ€ฏrecover gracefullyโ€ฏfrom failures, and improveโ€ฏobservabilityโ€ฏwith structured error handling. By the end of this session, weโ€™ll have practical techniques to turn errors into aโ€ฏfirst-class part of our domain, leading to more robust systems and a better development experience.

๐Ÿ”ถ๐Ž๐ฐ๐ง ๐ฒ๐จ๐ฎ๐ซ ๐๐ž๐ฌ๐ข๐ ๐ง: ๐Ÿ๐ฎ๐ง๐œ๐ญ๐ข๐จ๐ง๐š๐ฅ ๐ฉ๐ซ๐ข๐ง๐œ๐ข๐ฉ๐ฅ๐ž๐ฌ ๐ฏ๐ฌ ๐ญ๐ก๐ž ๐Ÿ๐ซ๐š๐ฆ๐ž๐ฐ๐จ๐ซ๐ค | Tiberiu Tofan, software engineer at ING Hubs Romania
Frameworks like Spring can tempt engineers to apply various shortcuts that compromise clean design, such as primitive obsession and exception-based error handling. We will discover how to reclaim control by using Domain-Driven Design, hexagonal architecture, and functional programming principles.

In this session, we will go through practical strategies to keep domain logic clean, reduce coupling, and adopt functional error handling. These ensure design remains at the core of the solution, irrespective of what the framework encourages.

๐Ÿ”ถ๐„๐Ÿ๐Ÿ๐ž๐œ๐ญ๐ฌ ๐š๐ง๐ ๐œ๐จ๐ง๐œ๐ฎ๐ซ๐ซ๐ž๐ง๐œ๐ฒ ๐ข๐ง ๐Ÿ๐ฎ๐ง๐œ๐ญ๐ข๐จ๐ง๐š๐ฅ ๐ฉ๐ซ๐จ๐ ๐ซ๐š๐ฆ๐ฆ๐ข๐ง๐  | Alexandru Nedelcu, software engineer & team lead at ING Bank Romania
Creating cloud services that are scalable, performant, and resilient in the face of failures and concurrency challenges is quite a challenge, and architectural and implementation decisions depend on the principles of the programming language, the paradigms and the libraries used.

We'll explore managing effects and concurrency using functional programming principles and the Cats-Effect library in Scala, showcasing how that enforces actual best practices in your entire codebase that help in building anti-fragile, industrial strength applications.


๐ŸŽค๐—ฆ๐—ฝ๐—ฒ๐—ฎ๐—ธ๐—ฒ๐—ฟ๐˜€
๐†๐š๐›๐ซ๐ข๐ž๐ฅ (๐†๐š๐›๐ข) ๐๐จ๐ซ๐ง๐ž๐š, ๐ฌ๐จ๐Ÿ๐ญ๐ฐ๐š๐ซ๐ž ๐ž๐ง๐ ๐ข๐ง๐ž๐ž๐ซ & ๐ญ๐ž๐š๐ฆ ๐ฅ๐ž๐š๐ ๐š๐ญ ๐ˆ๐๐† ๐‡๐ฎ๐›๐ฌ ๐‘๐จ๐ฆ๐š๐ง๐ข๐š
Gabriel has been working with JVM languages for over 15 years; heโ€™s into functional programming, automatic testing and reactive programming. He has a strong background in Java, Kotlin, and TypeScript, but still enjoys the occasional dive into Scala or F#.

He contributes to open-source projects whenever he can and is one of the most popular ING Hubs Romania speakers at various conferences where he discusses the benefits and practicality of functional programming. Gabriel enjoys sharing practical insights on building resilient, maintainable systemsโ€”focusing on despaghettifying code to make it more robust, readable, and easy to work with.

๐“๐ข๐›๐ž๐ซ๐ข๐ฎ (๐“๐ข๐›๐ข) ๐“๐จ๐Ÿ๐š๐ง, ๐ฌ๐จ๐Ÿ๐ญ๐ฐ๐š๐ซ๐ž ๐ž๐ง๐ ๐ข๐ง๐ž๐ž๐ซ ๐š๐ญ ๐ˆ๐๐† ๐‡๐ฎ๐›๐ฌ ๐‘๐จ๐ฆ๐š๐ง๐ข๐š
Tiberiu has been with ING Hubs Romania for six years now and is experienced in JVM โ€“ mostly Java, Scala, and Kotlin. In the two decades (and counting) on the JVM front, Tiberiuโ€™s focus has been on solid architecture, functional design, and maintainable code.
He is dedicated to building solutions that endure over time, prioritising reliability and simplicity.

๐€๐ฅ๐ž๐ฑ๐š๐ง๐๐ซ๐ฎ (๐€๐ฅ๐ž๐ฑ) ๐๐ž๐๐ž๐ฅ๐œ๐ฎ, ๐ฌ๐จ๐Ÿ๐ญ๐ฐ๐š๐ซ๐ž ๐ž๐ง๐ ๐ข๐ง๐ž๐ž๐ซ & ๐ญ๐ž๐š๐ฆ ๐ฅ๐ž๐š๐ ๐š๐ญ ๐ˆ๐๐† Bank ๐‘๐จ๐ฆ๐š๐ง๐ข๐š
Alex is a programmer who loves software craftsmanship, author of several popular open-source Scala libraries, a Typelevel contributor, focused on building low-latency, high-throughput web services, and a functional programming enthusiast. Currently, a team lead at ING Bank, Romania, his team is building the next generation of payment processors.

 

---------

ING Hubs hangouts is a series of talks, masterclasses, and workshops by ING Hubs Romania, delivering opportunities for learning, networking, and sharing on technology trends, programming languages and related topics