Functional programming is all the hype now, getting out of academic land and powering big companies that addresses complex problems. You can do functional with object oriented languages, like C#, or even with multi paradigm languages like Javascript, but there are some languages that address the functional paradigm by design, like Clojure.

For shocking purposes, I’m going to show a piece of Clojure code. You are probably going to think it’s esoteric and hard to reason about, but I promise you will undertand its awesomeness by the end of this article:

Typical Clojure code that is awesome

Still here? Guess…

Agile Software Development relies on the ability to change fast. New user stories and enhancements to existing stories are going to happen. Therefore you code will change.

But what about S.O.L.I.D’s Open/Closed Principle ?

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification

The OCP preaches that once an entity is done, it’s done. You should provide them a way to be enhanced/extended.

In Object Oriented Programming this might be achieved with Design Patterns (like Strategy, Template Method), Inheritance, or just good modeling.

In Funcional Programming, otherwise, you could accomplish that with composition, partial…

Design Sprint é uma técnica utilizada pelo Google Ventures para levantar hipóteses de produto e testá-las com protótipos e clientes reais em 5 dias.

Foi utilizada por startups como Slack e Airbnb.

O Design Sprint acontece em uma “sala de guerra” com um número aconselhado de no máximo 7 pessoas, com habilidades diferentes, para dar diferentes perspectivas de um produto. Portanto é importante que tenham pessoas de design, desenvolvedores, negocio, produto. Uma dessas pessoas é o Facilitador, que faz as dinâmicas irem pra frente sem impedimentos, e outra é o Definidor, que tem autoridade total para decidir.

O Design Sprint…

Photo by rawpixel on Unsplash

I love object orientation, and C# implements it in a very elegant manner, but since I do lots of JavaScript, sometimes I do mess with some functional stuff. It bothers me when people say functional programming is hard… It’s just different! Also, it’s not like Object Oriented Programming (OOP) is THAT easy. You have Design Patterns, SOLID (and solid is composed by SRP, OCP, LSP, ISP, DIP), inheritance, encapsulation… so why sometimes functional programming seems to fail to show its value? I think maybe the lack of real world examples makes OOP developers doubt the usefulness of it. …

is responsible toPhoto by Mael BALLAND on Unsplash

At Qualyteam, we are continuously improving. Therefore, we love code refactoring. Identifying problems and improvement opportunities in code is an important skill every developer should have. This week I was reviewing code that had a small change in a legacy code base method. It was a small, long forgotten piece of code. We usually balance between the importance of the touched code and the quality it must have. If it’s something that we know that is barely going to be touched in the future, we just let it go and move forward to something our clients are really going to…

Photo by Louis Reed on Unsplash

There’s no agile without automated tests. Still, bad automated tests can slow down your product delivery.

Unit tests should help you with code refactoring and delivering features, ensuring your use cases work without introducing new bugs.

We’ve struggled years with annoying unit tests that would break even with small refactoring. They were hard to maintain and weren’t readable . And even worse, they wouldn’t ensure our app works.

And we fixed it.

We’ll show you the problems we identified and how we solved them with research and development.


The state before

Have you ever found yourself in a situation where you just wanted…

Marco Nicolodi

Software Engineer @ Nubank

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store