Home » Author Archives: Sandro Mancuso

Author Archives: Sandro Mancuso

Software craftsman, founder of the London Software Craftsmanship Community (LSCC) and author of Software Craftsmanship: Professionalism, Pragmatism, Pride.

Bowling Kata in Clojure, F# and Scala

clojure-logo

In one of our evening apprenticeship meetings, a pair was doing the Bowling Kata in Java. After reviewing their code, I thought that it would be a good idea to do it myself. Every craftsman at Codurance is a polyglot developer and, although we have very similar values, we all have our own preferences when it comes to programming languages ...

Read More »

We did it wrong, but not all was in vain

software-development-2-logo

Yes, there was over engineering. Loads of it. Back in the mid 90s, when I started my career as a developer, the goal was to become an architect. No serious developer would dare writing a single line of code before selecting our preferred design patterns—we would then decide how the business requirements would fit into them. Yes, we would first ...

Read More »

Mutual Problems

java-logo

The HTTPS protocol is the well-established standard for securing our connections. Understanding how this protocol works is not a problem and the corresponding RFC document is available since 2000. Despite HTTPS is used so widely, you can still find a software which doesn’t handle this protocol without unnecessary complexity. Unfortunately I’v experienced problems during the implementation of mutual authentication in ...

Read More »

Containers all the way through

devops-logo

In this post I will attempt to cover fundamentals of Bare Metal Systems, Virtual Systems and Container Systems. And the purpose for doing so is to learn about these systems as they stand and also the differences between them, focusing on how they execute programs in their respective environments. Bare Metal Systems Let’s think of our Bare Metal Systems as ...

Read More »

Docker meets Continuous Deployment

docker-logo

About one year ago I had my first contact with Docker. This new kid on the block promised to relieve our poor computers from installation of all tools, languages, dependencies and operating systems. Isolated run environments emerged on developers’ computers. While my ops teammates chose a more conservative approach, I started to use Docker with great joy. Despite many people ...

Read More »

Cohesion – The cornerstone of Software Design

software-development-2-logo

Cohesion is one of the most important concepts in software design. Cohesion is at the core of the vast majority of good design principles and patterns out there, guiding separation of concerns and maintainability. The term cohesion (alongside coupling) was first introduced by Larry Constantine in the late 60s as part of Structured Design and later published in more details ...

Read More »

Coupling in distributed systems

software-development-2-logo

Coupling and cohesion are key quality indicators. We strive for systems highly cohesive and loosely coupled, but high doesn’t mean pure. The same goes with functional programming, we aim for isolating and reducing side effects, but we need them unless we want a useless system. It’s good to modularise our systems, so whenever those modules need to talk to each ...

Read More »

Isolating integration tests and mocking dependencies with Spring Boot

spring-interview-questions-answers

Integration tests can be slow and unreliable because they depend on too many components in the system. Up to a certain point, this is unavoidable: integration tests are here to validate how each part of your system plays with other internal or external components. We can, however, improve some integration tests by only spinning up the required dependencies, instead of ...

Read More »

Premature Microservices

software-development-2-logo

Building your app from the very start as microservices is not a great idea! Their deployment is complex – regardless of how good your microservices infra is. They create boundaries in your application that resist change. Software applications are complex systems and complex systems are grown not designed. In order to grow an efficient system – we must allow it ...

Read More »

Clojure VIM Environment

clojure-logo

The Cursive plugin for Clojure is now out of its beta testing phase. I have been using it throughout its beta program and, I must say, it is pretty good. Sure, the refactoring capabilities are not quite on a par with those of IntelliJ for Java, but then Clojure is dynamic and asking for that kind of power is asking ...

Read More »

Want to take your Java skills to the next level?

Grab our programming books for FREE!

Here are some of the eBooks you will get:

  • Advanced Java Guide
  • Java Design Patterns
  • JMeter Tutorial
  • Java 8 Features Tutorial
  • JUnit Tutorial
  • JSF Programming Cookbook
  • Java Concurrency Essentials